MySQL学习笔记第二天

DML数据管理语言

对数据增删改

新增insert

指定列添加数据
INSERT INTO staff(id,code,name,salary) VALUE (1,'1002','李四',9000);

可以不指定列,但是需要将全部列指定数据
INSERT INTO staff VALUE(12,'1012','王伟',3000);

也可以指定部分列添加数据
INSERT INTO staff(code,name) VALUE ('1008','杜甫');

自动递增列可以不指定id
INSERT INTO staff(code,name,salary) VALUES ('1003','王五',10000),('1004','赵六',11000);
自动递增列不会回撤不会补齐(删除3,4,再运行,自动补齐的id是5,6)从程序计数器最大值递增

在添加数据时,如果列属性为not null,则该列必须要指定数据

–删除 delete

DELETE FROM staff WHERE id=1;

–修改/编辑 UPDATE

UPDATE staff SET NAME='李清照' WHERE id=13;
UPDATE staff SET salary=salary+2000 WHERE NAME='李清照';
UPDATE staff SET salary=salary-2000,name='刘禹锡' WHERE id=2;

– 清空表

DELETE FROM staff;   删除掉每一行数据
TRUNCATE staff;    清空  性能更优

MQL数据查询语言

查询

SELECT 1;
SELECT NOW();

– 查询表格
– 指定列名查询

SELECT NAME,salary FROM staff;
SELECT * FROM staff;

– 使用as 指定别名 列 方法结果 表 视图

SELECT name as `姓名` FROM staff;

– where指定条件语句

SELECT * FROM staff WHERE id=15;

– 不等于

SELECT * FROM staff WHERE id!=1;     或写成SELECT * FROM staff WHERE id<>1;

– 大于小于

SELECT * FROM staff WHERE id>15;
SELECT * FROM staff WHERE id>=15;

SELECT * FROM staff WHERE id<15;
SELECT * FROM staff WHERE id<=15;

– 对null值的判断

等于null
SELECT * FROM staff WHERE salary is NULL;
SELECT * FROM staff WHERE salary <=> NULL;
不等于null
SELECT * FROM staff WHERE salary IS NOT NULL;

– 多条件

SELECT * FROM staff WHERE salary>=100 and salary <=10000;
SELECT * FROM staff WHERE salary>1000 or salary <500;

– in和not in

SELECT * FROM staff WHERE id IN (1,3,5,7,8,10,12);
SELECT * FROM staff WHERE id NOT IN (1,3,5,7,8,10,12);

between and

SELECT * FROM staff WHERE salary BETWEEN 500 AND 6000;

模糊查询 like 占位符 % (任意个数,任意字符) _占且只占一个字符

SELECT * FROM staff WHERE NAME LIKE '%刘%';

根据姓氏查询
SELECT * FROM staff WHERE NAME LIKE '王%';

如果只是两个字:张某
SELECT * FROM staff WHERE NAME LIKE '王_';

– 是否存在 exists

SELECT * FROM staff WHERE EXISTS (SELECT * FROM staff WHERE id=1);

– any ALL

SELECT * FROM staff WHERE salary >all(SELECT 1000);

– 排序 order by

SELECT * FROM staff ORDER BY salary;

– 正序 asc 倒序 DESC,默认正序

SELECT * FROM staff ORDER BY salary ASC;
SELECT * FROM staff ORDER BY salary DESC;

SELECT * FROM staff ORDER BY salary ASC,CODE DESC;
SELECT * FROM staff ORDER BY salary,CODE DESC;

– 拼接(合并)查询结果 俩个列的数据的数量需要相同

==UNION会将重复的结果去除==
SELECT NAME,salary FROM staff UNION
SELECT CODE,NAME FROM staff

==UNION ALL不会去除重复数据==
SELECT NAME,salary FROM staff UNION ALL
SELECT NAME,salary FROM staff

– 去重 对整个查询结果去重

SELECT DISTINCT salary,NAME FROM staff;

– 部分查询 limit

SELECT * FROM staff ORDER BY salary DESC LIMIT 3;
-- 查询第三名到第四名  limit start,count start的下标从零开始
SELECT * FROM staff ORDER BY salary DESC LIMIT 2,2;

– case when then
– 范围性判断

SELECT * ,CASE
	WHEN salary<10000 THEN '薪资较低'
  WHEN salary>=10000 AND salary<=15000 THEN '薪资正常'
  ELSE '薪资较高'
END
 FROM staff;

数值匹配

SELECT *,CASE salary
	WHEN 12000 THEN '还行'
  WHEN 15000 THEN '不错'
  WHEN 20000 THEN '挺高'
  WHEN 110000 THEN 'good'
END as 'level' FROM staff;

– 分组, 聚合函数 将多个数据聚合成一个数据的函数

-- 最大值
SELECT MAX(salary) FROM staff
-- 最小值
SELECT MIN(salary) FROM staff
-- 平均数
SELECT AVG(salary) FROM staff
-- 求和
SELECT SUM(salary) FROM staff
-- 求个数
SELECT COUNT(salary) FROM staff

– 分组查询

SELECT department,AVG(salary) AS 平均薪资,
SUM(salary) AS 薪资总和
FROM staff GROUP BY department;

– 分组筛选
– having 对分组之后的数据再筛选

SELECT department FROM staff GROUP BY department 
HAVING AVG(salary)<50000;

– null忽略

SELECT department,AVG(salary),COUNT(salary),COUNT(*) FROM staff GROUP BY department

– count()括号内加*,或数字,都可以计算所有数量,包括null值

SELECT COUNT(*),COUNT(2) FROM staff;
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值