MySQL数据库最核心的内容就是增删改查(即CURD),看了这篇初级增删改查的博客之后可以解决以后工作中百分之80-90的内容,这部分的知识并不是很难,但是需要一定的熟练程度;
C:create--新增
U:update--修改
R:retrieve--查询
D:delete--删除
一,新增操作
语法:
全列插入:insert into 表名 values(列,列,列......);
指定列插入:insert into 表名 (指定列) values(列,列,列......);
1.单行数据,全列插入
每次新增都是直接新增一行(一条记录)
2. 多行数据,全列插入
当插入多条记录时,每条记录之间用逗号隔开即可
3. 指定列插入
当需要指定列进行插入时,只需在表名后面写上所要插入的列即可(此时插入的数据要和指定的列相匹配),未指定的列将会自动插入默认值
二,查询操作
语法:
1. 全列查询:select * from 表名;
2. 指定列查询:select 列名 from 表名;
3. 带表达式的查询:select 表达式 from 表名;
4. 带别名的查询:select 列名/表达式 as 别名 from 表名;
5. 去重查询:select distinct 列名 from 表名;
6. 排序: select 列名 from 表名 order by 列名/表达式/别名 asc/desc;
7. 条件查询:select 列名 from 表名 where 条件;
所有的查询操作生成的表均为临时表,所以对硬盘内的数据造成改写
1.全列查询
*相当于通配符,代表所有列,该操作只适合初学阶段,在生产环境中千万不能用全列查询,因为数据量太大会造成网络带宽和硬件资源的占用,导致服务器崩溃
2.指定列查询
当需要指定多个列时,只需要在不同列名之间加上逗号即可
3.带表达式的查询
这里将语文,数学,英语成绩的加和作为一个表达式进行查询
4.带别名的查询
针对3中表达式的查询,觉得chinese+math+english这样一个表达式太过于复杂,其就是为了表达总分的意思,不如将该列名改成total(总分)更易读
这里的as可以不加,但是为了增加可读性最好还是加上as
5.去重查询
未进行去重之前,李四和孙权的英语成绩相同,此时进行去重操作:
此时去重成功;这里的去重是针对一个列进行去重,如果针对多个列进行去重时,必须所对应的列必须都相同,这样才可以称为"重复"
6.排序(默认NULL为最小值)
升序:order by asc(不加asc的情况下默认为升序)
降序:order by desc(需要加上desc)
关于排序的注意事项:
如果SQL中没有显示的写order by语句,认为查询结果的顺序是不可预期的
如果排序的列中有NULL,NULL视为最小值
排序也可以针对表达式/别名进行排序(如果NULL参与计算则结果为NULL)
排序也可以指定多个列进行查询(此时的比较规则较为复杂)
此时先按语文成绩进行升序的情况下,按照数学成绩进行降序
7.条件查询
1.>, >=, <, <=:大于,大于等于,小于,小于等于
查询语文成绩大于数学成绩的学生
2. =:等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
当查询结果为NULL时,则不安全:
MySQL中,NULL = NULL的结果为NULL,默认为false
3. <=>:等于,NULL 不安全,例如 NULL = NULL 的结果是 TRUE
4. between a0 and a1:范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE
查询语文成绩在80~90范围之内的学生:
5.IN (option, ...):如果是 option 中的任意一个,返回 TRUE
查询语文成绩为80.5,85.5,90,95.5这4个数据中其中一些数据的学生:
6.LIKE:模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
%:查询姓孙同学的语文成绩
_:查询姓孙但是姓名只有两个同学的语文成绩
注意:模糊查询,对于数据库来说,时间开销是比较大的
7.分页查询
limit N:N表示此次查询最大结果的数量(即显示在屏幕上的记录的个数)
offset M:M指定了从第几条记录开始查询,搭配limit使用(offset的值从0开始计算,即第一条记录的为0记录)
三,修改操作
语法:update 表名 set列名 = 值 where 条件;
所有的修改操作都是切切实实的对硬盘内的数据进行修改,改完之后会持久生效
1.对单列进行修改
将孙权同学的语文成绩设置成80分
where条件表达式是为了描述哪些记录需要修改,满足该条件则将该记录进行对应修改,否则直接pass
2.对多列进行修改
将孙权同学所有的成绩均设置为0分
对多列进行修改时,只要将所修改的列与列之间用逗号隔开即可
四,删除操作
语法:delete from表名 where 条件;
删除操作也是切切实实的在操作硬盘,删除了就没了
删除名为孙权的同学的所有成绩
删除操作十分危险,在线上生产环境中,谨慎使用!!!