MySQL——語法

數(shù)據(jù)庫排名:
Oracle(關(guān)系型)
MySQL(關(guān)系型)
SQLServer(關(guān)系型)
PostgreSQL(關(guān)系型)
MongoDB(非關(guān)系數(shù)據(jù)庫)
DB2(關(guān)系型)
Redis(非關(guān)系數(shù)據(jù)庫)
ElasticSearch(非關(guān)系數(shù)據(jù)庫)

SQL語句(結(jié)構(gòu)化查詢語言)

DDL(數(shù)據(jù)定義語言):create / drop / alter
DML(數(shù)據(jù)操作語言):insert / delete / update / select
DCL(數(shù)據(jù)控制語言):grant / revoke
<font size="4">前言:SQL中大小寫不敏感(大寫和小寫是一樣的); 每條SQL語句必須以分號結(jié)束</font>


一、DDL(數(shù)據(jù)定義語言)

主要提供數(shù)據(jù)庫和表的創(chuàng)建泳炉、刪除和修改

1. 創(chuàng)建數(shù)據(jù)庫
語法 功能
create database 數(shù)據(jù)庫名; 直接創(chuàng)建指定數(shù)據(jù)庫
create database if not exists 數(shù)據(jù)庫; 當(dāng)指定數(shù)據(jù)庫不存在的時候才創(chuàng)建數(shù)據(jù)庫
create database if not exists 數(shù)據(jù)庫 default charset utf8; 創(chuàng)建數(shù)據(jù)庫時設(shè)置字符集編碼方式為utf8,讓數(shù)據(jù)庫支持中文數(shù)據(jù)存儲
2.刪除數(shù)據(jù)庫
語法 功能
drop database 數(shù)據(jù)庫; 直接刪除指定數(shù)據(jù)庫
drop database if exists 數(shù)據(jù)庫; 如果指定的數(shù)據(jù)庫存在就刪除數(shù)據(jù)庫
3. 使用/切換數(shù)據(jù)庫
語法 功能
use 數(shù)據(jù)庫; 使用/切換指定數(shù)據(jù)庫
4. 新建表
語法 功能
create table if not exists 表(字段1 類型1, 字段2 類型2,...); 新建表憾筏,表名一般加前綴't'或'tb',字段名不能是關(guān)鍵字
create table if not exists 表(字段1 類型1 約束1, 字段2 類型2 約束2,...); 新建表并且添加約束
5. 刪除表
語法 功能
drop table if exists 表; 刪除指定表
truncate table 表; 清空指定表
6. 修改表
語法 功能
alter table 表 add column 字段 類型 約束; 添加列
alter table 表 drop column 字段; 刪除列

二花鹅、DML(數(shù)據(jù)操作語言)

主要針對數(shù)據(jù)庫中數(shù)據(jù)的增氧腰、刪、改、查

1. 增
語法 功能
insert into 表 values(值1, 值2, 值3,...); 插入數(shù)據(jù)古拴,依次給指定表中的字段賦值
insert into 表(字段1, 字段2,...) values(值1, 值2,...); 插入數(shù)據(jù)箩帚,以指定順序給指定字段賦值,可一次插入多條數(shù)據(jù)黄痪,用逗號分開

(注)時間函數(shù):now() - 當(dāng)前時間紧帕;date(now()) - 當(dāng)前日期;year(now()) - 當(dāng)前年桅打;month(now()) - 當(dāng)前月

2. 刪
語法 功能
delete from 表; 刪除指定表中所有記錄
delete from 表 where 條件語句; 刪除滿足條件的記錄
3. 改
語法 功能
update 表 set 字段1=新值1, 字段2=新值2,...; 將指定表中所有行的指定列/字段的值賦值為新值
update 表 set 字段1=新值1, 字段2=新值2,... where 條件語句; 將表中滿足條件的行中指定列/字段的值賦值為新值
4. 查
語法 功能
select * from 表; 獲取指定表中所有行和所有的列(所有數(shù)據(jù))
select 字段1,字段2,... from 表; 獲取指定表中所有行指定的列
select * from 表 where 條件; 獲取指定表中所有滿足條件的行所有列的數(shù)據(jù)
select 字段1 as 新字段1, 字段2 as 新字段2,... from 表; 列重命名(as可以省略)
select if(字段,值1,值2) from 表; (MySQL寫法)查詢指定字段是嗜,字段真則結(jié)果為值1,假則結(jié)果為值2
select case 字段 when 值 then 新值1 else 新值2 end; (通用寫法)查詢指定字段并將結(jié)果重新賦值
select concat(字段1,字段2,...) from 表; 對列進(jìn)行合并挺尾,數(shù)字和字符串?dāng)?shù)據(jù)可合并鹅搪,bit類型數(shù)據(jù)不可合并
排序:(先按之前的任何語法進(jìn)行查詢再排序)
select * from 表 order by 字段; 對查詢結(jié)果按照指定字段的值進(jìn)行升序排序
select * from 表 order by 字段 asc; 對查詢結(jié)果按照指定字段的值進(jìn)行升序排序
select * from 表 order by 字段 desc; 對查詢結(jié)果按照指定字段的值進(jìn)行降序排序
注:多個字段排序,寫在前面的優(yōu)先級高
限制:
select * from 表 limit N; 獲取查詢結(jié)果的前N條記錄
select * from 表 limit M offset N; 對查詢結(jié)果跳過前N條數(shù)據(jù)遭铺,取M條數(shù)據(jù)出來
去重:
select distinct 字段 from 表; 查詢結(jié)果去重
5. 條件語句

在SQL中可以通過 where 條件語句丽柿,來對操作對象進(jìn)行篩選

條件語句:

語法 功能
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
is/is not 判斷是否等于null空時使用
and 邏輯與運算
or 邏輯或運算
not 邏輯非
in 集合中是否包含
like 模糊查詢
% 表示0個或多個的任意字符
_ 表示一個任意字符
between 值1 and 值2 篩選指定字段的值在值1和值2之間
6. 數(shù)據(jù)類型
名稱 功能
int/tinyint(-128~127) 整數(shù)
float(size,d)/double(size,d) 浮點數(shù),這兒的size和d的值都有約束效果
char(size) 定長字符
varchar(size) 不定長字符串魂挂,size決定的是最大長度
text 不限長度(最大是255個字符)
bit 布爾甫题,只有0和1兩個值
date/datetime/time 值可以是時間函數(shù)的結(jié)果,也可以是時間字符串锰蓬;計算或者是比較的時候內(nèi)部是按時間處理的
7. 約束

創(chuàng)建表的時候可以添加約束

約束索引:

語法 功能
alter table 表 add constraint 索引 約束(字段); 添加約束幔睬,索引(自己命名),約束(支持唯一約束芹扭、主鍵約束和外鍵約束)
alter table 表 drop index 約束索引; 刪除約束

常見約束:

語法 功能
not null 不為空
default 值 設(shè)置默認(rèn)值
unique 值唯一
primary key(字段) 主鍵約束(唯一記錄)
auto_increment 主鍵自動增長
8. 外鍵

添加外鍵:

語法 功能
alter table 表1 add constraint 索引 foreign key (字段1) references 表2 (字段2); 將表1中字段1設(shè)為外鍵麻顶,讓其參照表2中字段2

刪除外鍵:

語法 功能
alter table 表 drop foreign key 外鍵索引; 先,刪除外鍵約束
alter table 表 drop index 外鍵索引; 后舱卡,刪除約束的索引
9. 聚合

max() min() sum() avg() count()

語法 功能
select 聚合函數(shù)(字段) from 表 [where 條件]; [按條件]查詢后將結(jié)果做相應(yīng)的聚合運算
10. 分組
語法
select 字段操作 from 表 [where 條件] group by(字段); 先篩選在分組
select 字段操作 from 表 group by(字段) [having 條件]; 先分組在篩選

where和having可同時使用
功能:將表中[滿足條件]的記錄按照字段分組, 再將每個分組作為整體做聚合操作辅肾,字段操作的位置除了分組字段不用聚合,其他字段都必須聚合

11. 子查詢

將一個查詢操作的結(jié)果作為另外一個查詢的數(shù)據(jù)源

12. 連接查詢
語法 功能
select * from 表1轮锥,表2,...where 表1表2連接條件...; 普通連接
select * from 表1 inner join 表2 on 表1表2連接條件 inner join 表3 on 表1表3連接條件...; 內(nèi)連接
select * from 表1 left join 表2 on 表1表2連接條件...[where 條件]; 左外連接矫钓,右表值不存在則為null
select * from 表1 right join 表2 on 表1表2連接條件...[where 條件]; 右外連接,左表值不存在則為null
13. 字段索引

字段索引相當(dāng)于目錄舍杜,作用為快速對此字段進(jìn)行查找
只針對某個查詢很頻繁的字段新娜,建議添加對應(yīng)索引

語法 功能
create index 索引 on 表 (字段); 添加索引
alter table 表 drop index 索引; 刪除索引

三、DCL(數(shù)據(jù)控制語言)

1. 創(chuàng)建用戶

create user '用戶名'@'登錄地址' identified by '密碼';

登錄地址 作用
localhost 數(shù)據(jù)庫本機
ip地址 指定地址
% 任何位置

2. 刪除用戶

drop user 用戶名;

3. 授權(quán)

語法 功能
grant 權(quán)限類型 on 數(shù)據(jù)庫.對象 to '用戶'; 為指定用戶添加指定數(shù)據(jù)庫指定對象的指定權(quán)限
grant 權(quán)限類型 on 數(shù)據(jù)庫.對象 to '用戶' with grant option; 添加權(quán)限既绩,并且可以將自己的權(quán)限再授權(quán)給別人
revoke 權(quán)限類型 on 數(shù)據(jù)庫.對象 from 用戶名; 撤銷/召回權(quán)限
權(quán)限類型 功能
select 查看
insert 添加
delete 刪除
update 更新
create 創(chuàng)建
drop 刪除
alter 更改
all privileges 所有權(quán)限

4. 事務(wù)

語法 功能
begin; 開啟事務(wù)環(huán)境
commit; 事務(wù)提交
rollback; 事務(wù)回滾

只有begin;commit;之間的所有的sql都執(zhí)行成功概龄,才會執(zhí)行commit;否則執(zhí)行rollback;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饲握,隨后出現(xiàn)的幾起案子私杜,更是在濱河造成了極大的恐慌蚕键,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衰粹,死亡現(xiàn)場離奇詭異锣光,居然都是意外死亡,警方通過查閱死者的電腦和手機铝耻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門誊爹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓢捉,你說我怎么就攤上這事替废。” “怎么了泊柬?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诈火。 經(jīng)常有香客問我兽赁,道長,這世上最難降的妖魔是什么冷守? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任刀崖,我火速辦了婚禮,結(jié)果婚禮上拍摇,老公的妹妹穿的比我還像新娘亮钦。我一直安慰自己,他們只是感情好充活,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布蜂莉。 她就那樣靜靜地躺著,像睡著了一般混卵。 火紅的嫁衣襯著肌膚如雪映穗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天幕随,我揣著相機與錄音蚁滋,去河邊找鬼。 笑死赘淮,一個胖子當(dāng)著我的面吹牛辕录,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梢卸,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼走诞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了低剔?” 一聲冷哼從身側(cè)響起速梗,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肮塞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姻锁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枕赵,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年位隶,在試婚紗的時候發(fā)現(xiàn)自己被綠了拷窜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涧黄,死狀恐怖篮昧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笋妥,我是刑警寧澤懊昨,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站春宣,受9級特大地震影響酵颁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜月帝,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一躏惋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嚷辅,春花似錦簿姨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至攘乒,卻和暖如春贤牛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背则酝。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工殉簸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沽讹。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓般卑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爽雄。 傳聞我的和親對象是個殘疾皇子蝠检,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,813評論 5 116
  • title: MySQL學(xué)習(xí)筆記一之MySQL語法tags: MySQL 數(shù)據(jù)庫categories: MySQL...
    codingXiaxw閱讀 671評論 0 9
  • 1 : 基礎(chǔ)語法--------- 對實體集 的操作 ------------select 查詢create ...
    記住你姓李閱讀 445評論 0 3
  • 最有價值的知識是關(guān)于方法的知識。 ———達(dá)爾文【英】 路漫漫其修遠(yuǎn)兮挚瘟,吾將上...
    珂珂0718閱讀 136評論 0 0
  • 我眼睜睜看著時間走過叹谁;眼睜睜的看著離開是如何寫在今天的饲梭;眼睜睜的卻舍不得眨眼;時間留不住焰檩,人也留不住憔涉,到點就必須...
    李滄海的裙擺閱讀 321評論 0 1