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