20231108
SQL主体内容一致,但是对于不同的数据库,对于SQL就可能有一些细节的拓展
插入数据
insert into 表名 values(值,值......);
查询(SQL中最复杂的)
1.全列查询
select * from 表名
2.指定列查询
select 列名,列名 from 表名
3.查询带有表达式
针对查询的结果进行计算
运算过程都是不影响服务器硬盘上的原始数据的
4.查询的时候带上别名
select 表达式 as 别名 from 表名
5.查询的时候进行去重
select distinct 列名 from 表名
6.排序
select 列名 from 表名 order by 列名(asc ,desc )
写到前面的列优先级高,后面的列优先级低
7.条件查询
select 列名 from 表名 where 条件;
与或非 and or
一个where中有and也有or会先执行and 后执行or
在写代码的时候一定要记得多加优先级的()
select * from result where chinese between 80 and 90(闭区间)
in操作(查询在集合之间的元素是否存在)
select * from result where math in(58,59);
模糊查询 (like 关键字)
会用到通配符
%:匹配任意个字符
_:匹配一个字符
select * from result where name like '孙%';(匹配以孙开头的数据)
like %孙就是以孙结尾的
%like%就是包含孙的
_是固定只能匹配到一个任意字符
但是可以有多个_ 比如 __孙
_给的模糊查询方式是比较简单的
但是各种编程语言中,还有一种模糊匹配的方式 "正则表达式"
--在实际的开发中,有的时候需要进行一些字符串校验,我们就可以使用正则表达式
查询空值(sql是大小写不敏感的)
select * from exam_result where id is null;
不要写成 id = null 这样是查不到的 但是可以使用 id <=> null
条件不仅仅能搭配查询语句,修改和删除也仍然适用
分页查询
select * 比较危险 一次查询出来的内容太多了
分页查询时最合适能解决上述问题的方案
可以限制这一次查询最多能查多少个记录
很多的网站,都是有分页的功能的
每一页就只显示有限的数据
limit 来限制这次请求返回多少个记录(限制一页里有几条记录)
select * from 表名 limit 3;
返回前三条数据
还可以使用offset来描述当前的结果从第几条开始获取
不写就是默认从第0条开始获取
select * from 表名 limit 3 offset 0
select * from 表名 limit 3 offset 3
select * from 表名 limit 3 offset 6
select * from 表名 limit 3 offset 9
类似于翻页功能
上面的这些查询都是最基础的查询(日常工作涉及到的内容,绝大部分都是最基础的)
修改
虽然如此,但是修改本身还是挺难的~~
update 表名 set 列名 = 值 where 条件; (set也是计算机中的常用术语)
孙悟空数学改成80
update exam_result set math = 80 where name = "孙悟空";
一个语句,同时修改两个列
update exam_result set math = 60,chinese = 70 where name = "曹孟德";
将总成绩倒数前3的数学成绩加上30分
对于update 也可以使用 order by 和 limit 使用
排序的时候会将空值当成最小的了
不要写成math += 30 sql不支持这种语法
一个sql语句就是第一个整体,要么全部成功,要是失败,就全部不执行
update 如果没有限制条件,就对 所有行都进行修改
(危险的操作)
在恢复的过程中,数据库是无法给外界提供服务的
delete 语句
delete from 表名 where 条件 /order by/limit;
把条件匹配出来的符合要求的记录,给删除掉
不写就是删除所有记录.