SQL 从入门到 DBA 删库跑路

SQL 从入门到 DBA 删库跑路


一.基础

人员信息表:

ID姓名性别出生婚否学历工资工会
35009449孙xx1978-2-17未婚中专3000TRUE
35000149吴x1972-8-11已婚高中6283FALSE
35000269魏xx1974-5-5已婚技校7374TRUE
35000281苏xx1972-9-15未婚高中7883FALSE
35002528姜xx1958-11-21已婚大学8902TRUE
35002560房xx1972-10-3已婚中专9268TRUE
35002566刘x1975-11-1已婚中专9999FALSE
35002584贾x秋1960-8-24已婚初中1626TRUE
35002635李x1974-4-20已婚大学2880FALSE
35002680李x庆1964-12-7已婚技校2880FALSE
35001025王国x1970-7-8已婚初中3716TRUE
35001123刘x忠1960-12-9已婚高中4552TRUE
35001448樊ss1971-10-7已婚大学5388FALSE
35001787李as1974-6-28已婚技校6224TRUE
35001790王zxc1972-3-29已婚技校7060TRUE
35002049张da1965-4-2已婚高中7896FALSE
35002089赵asd1958-3-3已婚高中8732TRUE
35002223韩zz1969-2-10已婚大学9568FALSE
35002237李!1955-9-20已婚初中1404TRUE
35002258许=z1974-9-6已婚大学2240TRUE
注意:为了本表格仅用于学习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 人员信息表 )

二.多表查询

人员学历表:

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孙xx1315011466未婚中专3000TRUE
35000149吴x1325011466已婚高中6283FALSE
35000269魏xx1395011466已婚技校7374TRUE
35000281苏xx1295011366未婚高中7883FALSE
35002528姜xx1295011363已婚大学8902TRUE
35002560房xx1295011216已婚中专9268TRUE
35002566刘x1295021366已婚中专9999FALSE
35002584贾x秋1235011366已婚初中1626TRUE

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;

暂时未开放

转载于:https://www.cnblogs.com/BenLam/p/10524156.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值