SQL 從入門到 DBA 刪庫跑路

SQL 從入門到 DBA 刪庫跑路sql


一.基礎

人員信息表:學習

ID 姓名 性別 出生 婚否 學歷 工資 工會
35009449 孫xx 1978-2-17 未婚 中專 3000 TRUE
35000149 吳x 1972-8-11 已婚 高中 6283 FALSE
35000269 魏xx 1974-5-5 已婚 技校 7374 TRUE
35000281 蘇xx 1972-9-15 未婚 高中 7883 FALSE
35002528 姜xx 1958-11-21 已婚 大學 8902 TRUE
35002560 房xx 1972-10-3 已婚 中專 9268 TRUE
35002566 劉x 1975-11-1 已婚 中專 9999 FALSE
35002584 賈x秋 1960-8-24 已婚 初中 1626 TRUE
35002635 李x 1974-4-20 已婚 大學 2880 FALSE
35002680 李x慶 1964-12-7 已婚 技校 2880 FALSE
35001025 王國x 1970-7-8 已婚 初中 3716 TRUE
35001123 劉x忠 1960-12-9 已婚 高中 4552 TRUE
35001448 樊ss 1971-10-7 已婚 大學 5388 FALSE
35001787 李as 1974-6-28 已婚 技校 6224 TRUE
35001790 王zxc 1972-3-29 已婚 技校 7060 TRUE
35002049 張da 1965-4-2 已婚 高中 7896 FALSE
35002089 趙asd 1958-3-3 已婚 高中 8732 TRUE
35002223 韓zz 1969-2-10 已婚 大學 9568 FALSE
35002237 李! 1955-9-20 已婚 初中 1404 TRUE
35002258 許=z 1974-9-6 已婚 大學 2240 TRUE
注意:爲了本表格僅用於學習SQL語法爲目的,請勿非法使用,後果自負!              

1. 基本功

[root@BenLam-vm_0 ~]# Mysql>

SELECT * FROM 人員信息表
SELECT DISTINCT 學歷 FROM 人員信息表
SELECT * FROM 人員信息表 WHERE 工資 > 3000
SELECT * FROM 人員信息表 WHERE 工資 > 3000 and 出生 = '1978-2-17'
SELECT * FROM 人員信息表 WHERE 工資 > 3000 and 出生 = '1978-2-17' order by ID desc  --降序排序
SELECT * FROM 人員信息表 WHERE 工資 > 3000 and 出生 = '1978-2-17' order by ID asc   --升序排序
SELECT * FROM 人員信息表 WHERE 工資 > 3000 and 姓名 LIKE '李%'

INSERT INTO 人員信息表 (ID, 姓名, 性別, 出生, 婚否, 學歷, 工資, 工會) VALUES (35002258, '許=z', '女', '1974-9-6', '已婚', '大學', '2240', 'TRUE')

UPDATE 人員信息表 SET 工資='10000' WHERE 姓名='許=z'

DELETE FROM 人員信息表 WHERE 姓名='許=z'

2. 進階功

[root@BenLam-vm_0 ~]# Mysql>

SELECT * FROM 人員信息表  WHERE 職稱 IS NULL
SELECT * FROM 人員信息表  WHERE 職稱 IS NOT NULL
SELECT * FROM 人員信息表  WHERE 婚否<>"已婚"

SELECT min(工資) FROM 人員信息表
SELECT max(工資) FROM 人員信息表
SELECT * FROM 人員信息表 where 工資 > ( SELECT AVG(工資)  FROM 人員信息表 )
SELECT count(工資) FROM 人員信息表 where 工資 > ( SELECT AVG(工資)  FROM 人員信息表 )

二.多表查詢

人員學歷表:unix

ID 姓名 大學 專業
35009449 孫xx 油田職工大學 採油工程
35000149 吳x 石油大學(函授) 採油工程
35000269 魏xx 東北大學(函) 機電一體化
35000281 蘇xx 浙江工學院 管理工程
35002528 姜xx 山東省委黨校 經濟管理
35002560 房xx 省交通專科學校 汽車運輸管理
35002566 劉x 交通部中等專業學 汽車運輸
35002584 賈x秋 山東教育學院 教育管理
35002635 李x 山東廣播電視大學 管理工程
35002680 李x慶 山東大學 行政管理
35001025 王國x 石油大學 石油加工
35001123 劉x忠 勝利油田石油學校 採油工程
35001448 樊ss 山東省委黨校 經濟管理
35001787 李as 中央黨校 歷史
35001790 王zxc 中央黨校函院 經濟管理
35002049 張da 西安石油學院 礦機
35002089 趙asd 石油大學 石油加工
35002223 韓zz 勝利石油學校 採油工程
35002237 李! 石油大學 石油儲運
35002258 許=z 石油大學 石油儲運
注意:爲了本表格僅用於學習SQL語法爲目的,請勿非法使用,後果自負!      

1. 基本功

[root@BenLam-vm_0 ~]# Mysql>

SELECT * FROM 人員信息表, 人員學歷表 WHERE (崗位工資>8999 AND 人員信息表.id=人員學歷表.id)

SELECT * FROM 人員信息表,人員學歷表 WHERE 人員信息表.性別='女' AND (人員信息表.id=人員學歷表.id)

SELECT * FROM 人員信息表,人員學歷表 where (人員信息表.姓名='孫xx' or 人員學歷表.姓名='吳x') AND (人員信息表.id=人員學歷表.id)


# TRUE \ FALSE 查詢

SELECT * FROM 人員信息表 WHERE 工會 = TRUE
/* 或者經過「 -1 」表示 */
SELECT * FROM 人員信息表 WHERE 工會 = -1

SELECT * FROM 人員信息表 WHERE 工會 = FALSE
/* 或者經過「 0 」表示 */
SELECT * FROM 人員信息表 WHERE 工會 = 0

/* 隨機取 5 條記錄 */
SELECT * FROM tb_user ORDER BY RAND()  LIMIT 5

2. 嵌套功

[root@BenLam-vm_0 ~]# Mysql>

SELECT * FROM 人員信息表 WHERE ID IN(SELECT ID FROM 人員信息表 WHERE 工資=9999)
SELECT * FROM 人員信息表 WHERE ID NOT IN(SELECT ID FROM 人員信息表 WHERE 工資=9999)
SELECT * FROM 人員信息表  WHERE id IN(SELECT id FROM 人員信息表 WHERE (工資>=7000 AND NOT(姓名 LIKE'孫%')))
SELECT * FROM 人員信息表 WHERE 工資標準=(SELECT 工資 FROM 人員信息表 WHERE 工資=9999)


/* (工資<3000) AND (工資>6000) */
SELECT * FROM 人員信息表 WHERE 工資 BETWEEN 3000 AND 6000
SELECT * FROM 人員信息表 WHERE 工資 NOT BETWEEN 3000 AND 6000

三.高級成就

ID 姓名 性別 入職 婚否 學歷 工資 工會
35009449 孫xx 1315011466 未婚 中專 3000 TRUE
35000149 吳x 1325011466 已婚 高中 6283 FALSE
35000269 魏xx 1395011466 已婚 技校 7374 TRUE
35000281 蘇xx 1295011366 未婚 高中 7883 FALSE
35002528 姜xx 1295011363 已婚 大學 8902 TRUE
35002560 房xx 1295011216 已婚 中專 9268 TRUE
35002566 劉x 1295021366 已婚 中專 9999 FALSE
35002584 賈x秋 1235011366 已婚 初中 1626 TRUE

1. 時間查詢-基本功

[root@BenLam-vm_0 ~]# Mysql>

/* 打印前 30 天,帶時分秒 */
select date_sub(now(),interval 30 day)

/* 打印前 30 天之前 */
select date_sub(date(now()),interval 30 day)

/* 打印當前時間戳 */
select unix_timestamp(now())

/* 打印前 30 天之前時間戳 */
select select unix_timestamp(date_sub(now(), interval 30 day))

/* 指定一個查詢區間 */
select * from 人員信息表 where 入職 >= unix_timestamp('2018-12-01 00:00:01') and 入職 <= unix_timestamp('2019-01-01 23:59:59') order by ID desc limit 10;

/* 指定時間區間,並將時間戳轉換成正常時間 */
select ID, from_unixtime(入職)  from 人員信息表 where 入職 >= unix_timestamp('2018-12-01 00:00:01') and 入職 <= unix_timestamp('2019-01-01 23:59:59') order by ID desc limit 5;

/* 結果:*/
| ID | 入職 |
|---|---|
| 35002584 | 2018-12-21 13:20:42 |
| 35000149 | 2018-12-12 13:10:42 |


/* 查詢接30天入職的人,並按照 ID 降序排序 */
select * from 人員信息表  where date_sub(curdate(),interval 30 day) <= from_unixtime( 入職 ) order by ID desc limit 10;

暫時未開放code

相關文章
相關標籤/搜索