一、新增数据
1.全列插入
表示所有字段都要插入值,且插入的顺序是表定义时的顺序
语法:insert into 表名 values(字段1 要插入的值,字段二要插入的值,...)
(整形会设置一个默认长度)
根据上面创建的表来全列插入:
2.指定列插入
语法:insert into 表名(要插入的字段1,要插入的字段2,...)values (要插入的值1,要插入的值2,...)
只插入需要的数据,其他没有插入的字段就是null
2.1插入多行数据
(1)执行多条insert语句;
(2)执行一条;
语法:
insert into 表名 (要插入的字段1,要插入的字段2,...) values
(要插入的值1,要插入的值2,...),
(要插入的值1,要插入的值2,...);
二、查询数据
1.各种查询操作
- 查询该表所有字段,所有数据(自己查数据用,写代码不要用)
select * from 表名;
- 查询给定的字段
select 查询列1,查询列2 from 表名;
- 查询的字段可以进行计算(字段是数值型)
- 字符串:MySQL中字符串拼接不能使用+,需要使用concat(str1,str2,...)函数
正确语法:
表或字段别名:如果查询字段进行了计算等操作,查询返回的字段就不是数据库定义的字段名,此时一般要使用别名
也可以写成如下,都是使用别名:
select id as i,username as u, amount*2 as a from student;
- 表的别名:
select ... from 表名 [as] 表的别名;
字段要指定为--->表的别名.字段名
- 别名的作用:
- (1)简洁一点;
- (2)规则一点(进行计算就不规则了);
- (3)可能需要查询多张表的数据,及多张表的字段(可能有重复的字段),此时可以从别名来进行区分;
- 日期的操作
year(日期的值),month(日期的值),day(日期的值)
(日期的运算操作要使用复杂的函数)
2.去重操作
distinct
对下列表进行去重
(1)只去重一列--->id列
(2)去重两列(这两列结合起来去重)--->id和username
3.排序操作
- 单列排序
操作结果(按照id排序):
可能会出现字段相同时,排序不是我们希望的
- 多列排序
按多个字段顺序来排序,先按第一个字段来排序,如果第一个字段相同才按照第二个,以此类推。如果第一个字段没有相同的,后面的就没用;
asc--->升序(可以忽略不写);desc--->降序;
select id,username,amount from student order by id,amount desc;--->先按照id排好序,再根据amount升序/降序;
注意事项:
(1)排序可以是多个字段
但是需要前面的字段值相同,后面的字段才会排序;
(2)null:升序最前,降序最后
(3)排序的字段,也可以使用表达式计算或者别名
4.条件查询
创建一个成绩表:
- 查询英语成绩小于60的
若要查询表中为空的数据--->select * from 表名 where 字段名 is null;
--->select * from student where birthday is null;
若使用比较运算符(=),会返回空的结果集;
- 范围匹配:
语法:字段名 between 起始值 and 结束值
上述语法等同于:
逻辑运算符:
and--->与;(Java中的&&)
or--->或;(Java中的||)
not--->非;(Java中的!)
- in-->匹配小括号中的任意一个就可以返回:
where条件查询,可以是有多个条件进行逻辑运算,是一整个条件的结果来返回查询结果集
- 模糊匹配--->like
%--->匹配多个字符;_--->匹配一个字符
(以某个字符开头,以孙开头)
匹配中间的字符:
匹配最后一个字符:
(注意以上查询方法的%的位置 )
孙后跟两个下划线,则查询到孙悟空;跟一个下划线则查询到孙权;
遍历所有数据,对于每条数据来说,所有条件执行的结果为true就会包含在结果集中,如果为false就不包含。
- 分页查询:limit
一般来说,一个查询结果集的行数时确定的,给定每页的数量进行分页,就可以确定页数。
数据库中的实现,不是按页数来实现的,时按起始的索引+每页的数量
limit s,n --->从整个结果集进行过滤,从下标s开始,找n条(每行数据下标从0开始,找下标s)
结果集顺序不同,分页的结果就可能不同;
分页是按照最终结果集再进行分页,如果有条件过滤,那是以条件过滤后的结果集再进行分页;
三、修改数据
关键字:update
- update 表名 set 字段1=要修改的值1,字段2=要修改的值2,... where 条件 order by...
update修改操作是可以修改多条数据的,如果只要修改某一条或者每一部分数据那么要给定条件,如果不加条件那么就会修改整个表的数据。
修改需要谨慎操作!!!(建议先把update替换成select语句,先看是不是想要修改的数据)
四、删除操作
- delete from 表名 where 条件 order by...
按照条件过滤后的结果全部删除,如果没有条件就是全表删除。所以建议:要删除某些条件,但条件复杂是,一定先使用select验证