萌新的Java入门日记13

啊哇哇数据库了

MySQL默认情况下在查询和操作数据库对象时,不区分大小写:

对于表名、列名和数据库名,MySQL不会区分大小写。例如,"mytable"、"MyTable"和"MYTABLE"都被视为相同的表名。

在SQL语句中,关键字和函数名不区分大小写。例如,"SELECT"、"select"和"Select"都是等效的。

在默认情况下,MySQL对于字符串比较是不区分大小写的。例如,"abc"和"ABC"被认为是相等的。

请注意,虽然MySQL不区分大小写,但在比较字符串时,它仍然遵循二进制字符集的规则。这意味着在某些字符集中,它可能会区分大小写(例如,对于拉丁字符集)。

DML(数据操作语言)
新增

指定列添加单行数据 VALUE

INSERT INTO staff(id,`code`,`name`,salary) VALUE
(2,'1002','李四',9000);

添加多行数据 VALUES

其中id为自动递增列,可以不指定:

NSERT INTO staff(code,name,salary) VALUES
('1003','王五',10000),
('1004','赵六',11000);

删除

删除表用 DROP

删除记录用 DELETE

-- 删除		delete
delete from staff where id=6

修改

修改/编辑 UPDATE

-- 修改/编辑	UPDATE
UPDATE staff set name='李清照' where id=5
UPDATE staff SET salary=salary+2000 WHERE name='赵六'
 
UPDATE staff SET name='苏轼',salary=salary-2000 WHERE id=4

清空表
delete from staff;   -- 删除掉每一行数据
TRUNCATE staff; 	 -- 清空表,数据量比较大的时候truncate快,性能更快一些

DQL(数据查询语言)

简单查询

查询 SELETE

不止可以查询表中数据,也可以查询获取一个常量,或调用返回一个方法的值,如当前时间:

查询表格:指定列名查询,也可以使用星号 * 指代所有的列

-- 指定列名查询
SELECT name,salary from staff
-- 可以使用*代替所有的列
SELECT * from staff
可以使用 AS 对列、方法结果、表、视图等指定别名

-- 使用as 指定别名,对列,方法结果,表,视图
SELECT name as `姓名` from staff
使用 WHERE 指定条件语句,   !=  和 <> 都是不等于

-- where 指定条件语句
SELECT * from staff where id=4
-- 不等于
SELECT * from staff WHERE id != 1
SELECT * from staff WHERE id <> 1
-- 大于小于
SELECT * from staff WHERE id > 3;
select * from staff WHERE id >=3;
select * from staff WHERE id < 4;
SELECT * from staff WHERE id <= 4;
对null值的判断:不可以直接用某个数据=null表示

-- 对null值的判断
#SELECT * from staff WHERE salary=null; --不可以
SELECT * from staff WHERE salary is null;
SELECT * FROM staff WHERE salary <=> null;    -- 等于null
SELECT * FROM staff WHERE salary is NOT null;
多条件判断 使用 AND 和 OR

-- 多条件
SELECT * FROM staff WHERE id<5 AND salary>10000;
SELECT * FROM staff WHERE salary>10000 OR salary<9000;
某个值在不在...当中 IN...

-- in  not in 在不在...当中
#SELECT * FROM staff WHERE id=1 OR id=3...
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...

-- BETWEEN AND 范围判断在..之间,包括边界
SELECT * FROM staff WHERE salary BETWEEN 8000 AND 10000;


模糊查询
模糊查询用 LIKE

%指代任意个数的字符, 下划线 _ 代表有且只有一个字符

-- 模糊查询    LIKE  %任意个数字符  _代表有且只有一个字符
SELECT * from staff where name LIKE '%李%';
-- 姓张的员工
SELECT * from staff where name LIKE '张%';
-- 张某
SELECT * from staff where name LIKE '张_';
是否存在 EXISTS

EXISTS 类似于一把锁,后面能查出结果,前面的语句才会给结果


SELECT * FROM staff WHERE 
EXISTS(SELECT * FROM staff WHERE id=1)
ANY 指任意一个数值

ALL 指全部数值

-- any all 
SELECT * from staff 
WHERE salary> ANY(SELECT code from staff)    -- 大于任意一个数值,不同类型另有比较规则
 
SELECT * from staff 
WHERE salary> ALL(SELECT code from staff)    -- 大于全部数值
当比较的前后类型不一致时可能另有比较规则而导致实际结果和理想结果有偏差

排序 ORDER BY

正序 ASC,倒序 DESC

注意,需要排序的每一列都需要单独指定排序方式,没指定则默认正序ASC

-- 排序 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;
-- 每一个列都需要指定排序顺序,没指定就默认asc
SELECT * FROM staff ORDER BY salary,code DESC;
拼接(合并)查询结果

UNION 会将重复的结果去除

UNION ALL 将完整结果全部合并,不会去重

-- 拼接(合并)查询结果
select name,salary FROM staff UNION
SELECT code,name FROM staff
 
-- UNION 会将重复的结果去除
select name,salary FROM staff UNION
SELECT name,salary FROM staff
-- UNION ALL 没有去重,全部合并
select name,salary FROM staff UNION ALL
SELECT name,salary FROM staff
去掉重复数据 DISTINCT 

-- 去重    对整个查询结果去重
SELECT DISTINCT salary,name FROM staff;
部分查询 LIMIT

-- 部分查询 LIMIT 3 查询前三名
SELECT * from staff ORDER BY salary DESC LIMIT 3;
-- 查询第三到五名    limit start,count
SELECT * FROM staff ORDER BY salary DESC LIMIT 2,3;
limit的取值类似于数组,跟一个参数3表示保留查询结果的前三个;

两个参数 2,3 表示,从下标为2的(第三个)数据开始,取三个数据。

在SQL语句中,CASE WHEN THEN是一种条件表达式,用于根据不同的条件返回不同的结果。

可以使用AS为返回的结果起一个别名

-- case when THEN
SELECT * ,case
when salary<10000 then '薪资较低'
WHEN salary>=10000 and salary<=20000 then '薪资正常'
ELSE '薪资较高'
end as `LEVEL` from staff;
 
SELECT *,case salary when 12000 then '还行'
WHEN 15000 THEN '还可以'
WHEN 18000 then '挺高'
when 20000 then '哇哦'
when 26000 then '好厉害'
END as `level`
from  staff;
聚合函数
最大值MAX、最小值MIN、平均数AVG、求和SUM、个数COUNT

-- 分组 聚合函数
-- 最大值
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;
分组查询 GROUP BY

分组查询的 select 后面只能是分组的列以及聚合函数

-- 分组查询
-- SELECT 后面只能是分组的列以及聚合函数
SELECT department,AVG(salary) as 平均薪资,
SUM(salary) as 薪资总和 
FROM staff GROUP BY department;
分组筛选 HAVING

对分好的组在筛选出符合条件的组

-- 分组筛选
-- HAVING 对分组之后数据再筛选
SELECT department FROM staff GROUP BY department
HAVING AVG(salary)<12000;
使用列名传入聚合函数,当计算的数据中包含null值时,会直接把null值忽略,不计算在内。

传入星号* 和常量,则计算包括null值的整列所有数据

-- null值忽略
-- 列名忽略null
SELECT department,AVG(salary),COUNT(salary),COUNT(*) FROM staff GROUP BY department;
-- 用*和常量计算整列所有数据,包括null值
SELECT COUNT(*),count(1) FROM staff;

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black__Emperor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值