sql-DDL, DML 常用語句


mysql的安裝可見: http://www.cnblogs.com/wenbronk/p/6840484.html

很久不用mysql, 今天建表都不會了, , ,

慢慢補充

 sql語言分為3種: DDL, DML, DCL

DML(data manipulation language)是數據操縱語言:它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣,這4條命令是用來對數據庫里的數據進行操作的語言。

DDL(data definition language)是數據定義語言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的鏈接和約束等初始化工作上,他們大多在建立表時使用。
DCL(DataControlLanguage)是數據庫控制語言:是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。


DDL

ddl的操作主要是針對數據庫和數據表的

CREATE:用於創建數據庫對象。
DECLARE:除了是創建只在過程中使用的臨時表外,DECLARE語句和CREATE語句非常相似。唯一可以被聲明的對象是表。並且必須放入用戶臨時表空間。
DROP:可以刪除任何用CREATE(數據庫對象)和DECLARE(表)創建的對象。
ALTER:允許修改某些數據庫對象的信息。不能修改索引。 

1, 對數據庫的操作

1, 創建數據庫

create database test;
create database test character set utf-8;   # 設置編碼

2, 查看數據庫

show databases;

3, 使用數據庫

use test;

4, 查看當前使用的數據庫

select database();

5, 查看數據庫結構

show create database test;

6, 刪除數據庫

drop database test;

2, 對數據表的操作

1, 建表, 格式: 列名 數據類型(長度) (約束)

create table sys_user(
    id int(4) not null primary key auto_increment,
    name char(20) not null,
    sex int(4) not null default '0',
    degree double(16,2),
  unique name_index(sys_user)  # 創建name的唯一索引
);

 建表一般預留3列, 為varchar類型, 具體看需求

2, 查詢表

show sys_user;     # 顯示當前庫下的表
desc sys_user;        # 顯示表結構
show create table sys_user;     # 

 3, 刪除表

drop table sys_user;

4, 數據備份 (小數據量)

create table new_user select * from sys_user;

5, 修改表結構

# 修改表名
rename table sys_user to new_user;

# 添加列
alter table sys_user add addre varchar(32) not null;

# 修改列名
alter table sys_user change sex new_sex;

# 修改列類型
alter table sys_user modify addre varchar(64);

# 刪除列
alter table sys_user drop sex;

3, 索引操作

詳細見: http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html

# 創建索引
create index name_index on sys_user(name);

# 創建唯一索引
create unique index name_index on sys_user(name);
alter table sys_user add unique name_index(sys_user);

# 刪除索引
drop index name_index on sys_user;

#查看索引
show index from sys_user;

DML

dml主要是針對數據的操作, 主要分為4大類, CRUD操作

1, 增

insert into 表名 (列1, 列2..) values ( 值1, 值2)    # 一一對應即可
insert into 表名 values (值1, 值2, ..)                 # 和表的列一一對應

2, 刪

delete from 表名;        # 刪除表中所有數據, auto_increment不會重置

# 加上where子句, 條件刪除
delete from 表名 where money > 100 and money < 500;

3, 改

update sys_user set name='vini', sex='woman' where id=1;    # 不加where子句, 會全部修改

4, 查

select u.username, u.password from user u;

5, 聚合查詢 ( 縱向查詢, 不統計null值)

# count
select count(name) as '總數' from sys_user
select count(DISTINCT(name)) as '總數' from sys_user;        # 使用distinct函數去重

# sum
select sun(IS NULL(num))  from sys_user;        # 使用 is null 去除為null的

#max, min, avg
select max(money) from sys_user;

6, where 子句

比較運算符: >, < >=, <=, !=(<>)
邏輯運算符: and, or, not
在范圍內: between..and..
指定值: in(值1, 值2, 值3)
模糊匹配: like
null: is not null 不為空

select * from sys_user where money > 100 and addr like '%北京%' or money between 80 and 90;

7, 分組

group by

having: 只在在group by后面, 分組后對結果再次過濾

8, 排序

order by

更改編碼集

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM