數(shù)據(jù)操作語言(DML)
數(shù)據(jù)插入(增加數(shù)據(jù))
形式一
insert into 表名(字段1,字段2,···) values(值 a1,值 a2,···),(值 b1,值 b2,···),···;
形式二
insert into 表名1(字段1,字段2,···) select 字段1,字段2,··· from 表名2;
形式三
//每個字段一次只能插入一個字段
insert into 表名1 set 字段名1=值1,字段名=值2,···;
形式四:適用于從本地文件中讀取并生成表
load data infile ‘文件完整名(含路徑)’ into table 表名;
注意
- 形式1和形式2每個字段可以一次插入多條數(shù)據(jù)
//形式1范例
inset into tab5 (f1,f2,f4,id2) values (1.23,12.3,'adasd1',100),
(1.33,13.3,'ada2sd1',101),(1.43,14.3,'adas3d1',1);
- 值得形式,數(shù)字直接寫,字符串時間加單引號,但如果是函數(shù)值,不能加引號
- 不管哪種形式,都要理解為:插入數(shù)據(jù)的單位是"行"
- 有的字段不需要插入數(shù)據(jù)玖像,此時插入時不要寫該字段名:例如auto_increment紫谷,timestamp。
數(shù)據(jù)刪除
形式
delete from 表名 [where條件] [order排序] [limit限定]捐寥;
注意
- 通常笤昨,刪除應(yīng)該以行為單位進行
- 刪除語句中,where條件不寫將刪除表中所有數(shù)據(jù)
- order排序和limit限定應(yīng)用中通常不需要
order用于設(shè)定刪除數(shù)據(jù)的先后數(shù)據(jù)
limit用于限定在設(shè)定的順序情況下刪除制定的某些行
類似刪除語句truncate
形式
truncate [table] 表名握恳;用于直接刪除整個表(結(jié)構(gòu))并重新創(chuàng)建該表瞒窒。
說明
- 該語法刪除整個表
- 該語法會重新創(chuàng)建該表
- 跟delete語句不帶where條件的區(qū)別:
主要影響的是auto_increment這種類型的字段值:truncate序號會重新計算,delete則繼續(xù)按原來的序號增長
數(shù)據(jù)修改
形式
update 表名 set 字段名1=值表達式1乡洼,字段名2=值表達式2根竿,....[where條件] [order排序] [limit限定];
注意
同數(shù)據(jù)說明注意
復(fù)制表
形式一
//這種方法就珠,表復(fù)制的比較完整
//復(fù)制結(jié)構(gòu)
create table tab2 like tab1;
//復(fù)制數(shù)據(jù)
insert into tab2 select * from tab1;
形式二
//同時復(fù)制結(jié)構(gòu)和數(shù)據(jù),但這種形式可能會丟失一些機構(gòu)信息醒颖,例如:索引,約束,自增長屬性
creat table tab2 select * from tab1;
數(shù)據(jù)查詢語言(DQL)
基本查詢
語法形式
select[all|distinct] 字段或字段表達式列表[from 子句][where 子句][group by 子句][having 子句][order by 子句][limit 子句]
select 語句作用是從"數(shù)據(jù)源"中妻怎,找出想要的數(shù)據(jù),并作為該語句的結(jié)果返回泞歉,所謂數(shù)據(jù)源就是數(shù)據(jù)庫中的表逼侦。
- [all|distinct]:用于設(shè)定所select出來的數(shù)據(jù)是否允許出現(xiàn)重復(fù)行
all:允許出現(xiàn)重復(fù)行,默認值
distinct:不允許出現(xiàn)重復(fù)行
- from子句:數(shù)據(jù)從那個表里面查
- where子句:相當于php或js中的if語句匿辩,結(jié)果為布爾值,本質(zhì)就是為select設(shè)定一個if條件,通常和字段聯(lián)合使用
where true,where 1,where 1=1 都表示true
where false,where 1=2 表示false
where中的運算符:算數(shù)運算符(+ - * / %),比較運算符(> = >= <= <>),擴展(== !=),邏輯運算符(and,or,not)
在MySql中的布爾值只是int類型非0和0的別名
在MySql中空為null,非空為not null
where子句中的between···and···語句相當于字段名>=值1 and 字段名<=值2
where子句中的in(值1,值2,值3···)語句相當于字段名=值1or值2or值3
where子句中的like語句:字段名 like '要查找的字符'
榛丢,主要用于對字符類型的字段進行字符匹配查找铲球,有兩個特殊含義字符是"%"和"",分別代表任意多個的任意字符和1個任意字符,如果要查找%或則用\轉(zhuǎn)義。
where子句出現(xiàn)時必須出現(xiàn)from子句
- group by分組子句:
group by 字段1 排序方式1晰赞,字段2 排序方式2稼病,···
,分組后得到的數(shù)據(jù)是組數(shù)據(jù)掖鱼,而不是單行數(shù)據(jù)然走,按照某個字段進行分組,其他字段如果不一樣戏挡,將會自動取第一個芍瑞。
- having子句:概念跟where子句完全一樣。have是只針對groupby之后的"組"數(shù)據(jù)進行條件判斷褐墅。
select count(*) as f1,max(f1) as f2 from tab1 group by f3 having f1>5 and f2<1000