SQL語言的分類
DQL(數(shù)據(jù)查詢語言):
SELECT <字段名表>
FROM <表或視圖名>
WHERE<查詢條件>
DML(數(shù)據(jù)操縱語言):
插入:INSERT INTO
更新:UPDATE
刪除:DELETE FROM
DDL(數(shù)據(jù)定義語言):
數(shù)據(jù)定義語言DDL用來創(chuàng)建數(shù)據(jù)庫中的各種對象-----表驳概、視圖赤嚼,索引、同義詞顺又、聚簇
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 /視圖/索引/同義詞/簇
DDL隱形提交 不能回滾
TCL(數(shù)據(jù)控制語言):
數(shù)據(jù)控制語言TCL用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán)更卒,并控制
數(shù)據(jù)庫操縱事務(wù)發(fā)生的時間及效果,對數(shù)據(jù)庫實行監(jiān)視等稚照。
授權(quán) GRANT
回滾 ROLLBACK
提交 COMMIT
DQL(數(shù)據(jù)查詢語言):
1.基礎(chǔ)查詢
select 查詢列表 from 表名蹂空;
特點:
① 查詢列表可以是表中的字段俯萌,常量值,表達(dá)式上枕,函數(shù)
② 查詢的結(jié)果是虛擬的臨時表格咐熙。
例1:查詢表中單個字段
select last_name from employees;
查詢employees表中l(wèi)ast_name這一列
例2:查詢表中多個字段
select last_name,salary from employees;
查詢employees表中的last_name和salary這兩列
例3:查詢表中所有字段
select * from employees;
查詢employees表中的所有字段。
例4:著重號的使用:
著重號:如果你的字段和關(guān)鍵字非常相似辨萍,或者與關(guān)鍵字同名棋恼,為了方便閱讀應(yīng)該在你的字段上加上著重號 → ``
select `name` from employees;
例5:查詢常量值:
select "Json";
select 100;
例6:查詢表達(dá)式:
select 100%95;
select 9*8;
例7:查詢函數(shù):
select version(); #MySQL的版本號
例8:起別名:
① 起別名便于理解
② 起別名可以區(qū)分字段中的重名
注意:別名中的雙引號可以不加锈玉,但是如果別名中含有空格
爪飘,關(guān)鍵字
等奇異信息,就必須添加雙引號拉背,表示這個是一個別名
select last_name as “姓",first_name as "名" from employees师崎;
例9:去重顯示
關(guān)鍵字:distinct
select DISTINCT
department_id from employees;
例10:“+”號與Null值
MySQL中的“+”號,僅有運算符的含義
不能當(dāng)成字符串的連接符來使用椅棺。
select 100+90犁罩;
都是數(shù)值類型做加法運算
select “150”+40;
系統(tǒng)會試圖將字符串轉(zhuǎn)換為數(shù)值,然后進行運算两疚,如果無法轉(zhuǎn)換則運算昼汗,則將字符型常量轉(zhuǎn)換為0,進行運算鬼雀。
select null+10;
任何值與NULL運算都為null.
例11:拼接函數(shù)的使用
關(guān)鍵字:CONCAT()
將查詢的內(nèi)容以字符串拼接的方式連接起來。
select concat("a","b","c") as 結(jié)果蛙吏;
select concat(last_name,first_name) as "姓名" from employees;
例12:新增函數(shù)
關(guān)鍵字:IFNULL(字段,默認(rèn)值)
含義:如果字段的值為NULL源哩,則在查詢的時候修改為參數(shù)中的默認(rèn)值
select IFNULL(role_id,1) as "工種編號" from users;
條件查詢
語法:select 查詢列表 from 表名 where 篩選條件;
篩選方式:
①條件表達(dá)式:
< > = <>(不等于) >= <= !=
②邏輯表達(dá)式:
and && or || not !
③模糊查詢:
like between...and in is null
1.條件表達(dá)式
select * from employees where salary > 12000;
查詢工資大于12000的員工信息
select * from employees where id <> 1;
查詢id不等于1的員工信息
2.邏輯表達(dá)式
select last_name from employees where salary>12000 and id <> 5;
查詢工資大于12000且編號不為5的員工信息
3.模糊查詢
① like: 一般與通配符一起使用
通配符:
“%” (任意多個字符鸦做,包含0個)
“_” (任意單個字符)
select * from employees where last_name like '%a%';
查詢所有姓中帶有a的員工信息
② in:判斷某字段中的值是否屬于in列表中的某一項励烦。
特點:1.不支持通配符
2.in列表中的值的類型必須兼容
優(yōu)點:能提高代碼的簡潔度
select * from employees where job_id in (1,2,3,4,5);
查詢工作編號在1,2泼诱,3坛掠,4,5中的所有員工信息治筒。
is null 和 <=>
select * from employees where role_id is null;
讀取所有role_id為空的員工信息
is not null 表示不是空值
= != 都不能用于null值的判斷
<=>:安全等于屉栓,能用于判斷null值,但是可讀性比較差
is null: 存在的意義就是為了判斷空值耸袜,所以可讀性比較高友多,建議使用。