增删改查
插入
插入全部列
插入就是增加的意思。先创建一个学生表(id,名字,年龄,成绩):
create table student(id int,name varchar(50),age int,score double(3,1));
运行结果如下:
然后插入数据,insert into 表名 values(表里面的值)。四个数据对应的是:班级、名字、年龄、成绩
insert into student values(1,'张三',18,95.5);
运行结果如下:
查看全部记录
select * from student;
运行结果如下:
同时插入多条记录
插入的时候,一个括号代表一条记录,多个括号之间用 , 隔开,插入多条记录(即多个括号)。代码如下:
insert into student values(2,'小二',18,97.5),(3,'小三',18,85);
此处注意 , 为英文逗号!
运行结果如下:
插入部分列
在插入部分列的时候,在表名后面加个括号,里面写上要插入的列名,然后在 values 后面的括号内填入要插入列的数值。未插入的列的值默认为NULL。代码如下:
insert into student(id,name) values (15,'林夕');
运行结果如下:
查询
查询是数据库当中用的最多的一种操作。也是考点最多的方式。
全列查询
全列查询就是把一个表的所有的列,所有的行都查询出来。
select * from 表名; * 是通配符,表示一个表的所有列。
代码如下:
select * from student;
通常情况下不建议使用 * 进行全列查询
1.查询的列越多,需要传输的数据量越大。
2.可能会影响到索引的使用。
查询部分列
在查询的时候,也可以查询部分列。select 列名,列名 from 表名
现在只在表中查询 名字 和 年龄,
代码如下:
select name,age from student;
运行结果如下:
这里通过查询就筛选出了由 名字 和 年龄 组成的表
查询的时候进行运算操作
进行运算就是查询的时候,同时进行一些运算操作(列和列之间)。
把所有人的年龄 +10
代码如下:
select name,age+10 from studennt;
运行结果如下:
在这里,查询结果都是临时表,原始数据不会被修改
接下来建立一个考试表(id,名字,语文成绩,数学成绩,英语成绩)
查询每个学生的总分
查询总分的时候,把所有成绩加起来,代码如下:
select name,chinese+math+english as zongfen from grades;
运行结果如下:
给查询的临时表起别名
在列名之后通过 as 就可以给查询的临时表起别名了。
select 列名 as 别名 from 表名,在上一个成绩表中,把语文+数学+英语的总分 设置了属性名—>zongfen。
针对查询结果去重
使用 distinct 针对查询的结果,将数学成绩相同的去掉,代码如下:
select distinct math from grades;
运行结果如下:
多个列去重
如果要针对多个列进行去重,就得这多个列的值都相同才能去重;
使用 distinct 针对查询的结果,将数学成绩和英语成绩相同的去掉,代码如下:
select distinct math,english from grades;
运行结果如下:
按照总成绩排序
在排序的时候,通过 order by 来进行排序。
select 列名 from 表名 order by 列名 asc / desc ;asc 和 desc 代表升序和降序。默认为asc,null 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。
代码如下:
select name,chinese + math + english from grades order by chinese + math + english;
运行结果如下:
按照别名来排序
将总成绩换为别名,然后进行排序。
代码如下:
select name,chinese + math + english as zongfen from grades order by chinese + math + english;
运行结果如下:
此时插入空值的数据再次进行排序
对查询结果按照某一列进行排序
对查询的结果按照数学成绩进行排序,代码如下:
select * from grades order by math asc;
运行结果如下:
根据多个列进行排序
在排序的时候,如果两个值相同的话,那么就可以再指定一个列来进行排序。这里使用语文和数学举例。当语文成绩一样的时候,就根据数学成绩进行排序。
代码如下:
select name,chinese,math from grades order by chinese,math;
条件查询
条件查询的时候,主要用到的是 where 。
在 where 后面加一些条件来进行查询。
查询某一列小于某个值
要查询某一列小于某个值的数据的时候,在 where 后面加条件就好。
select 列名 from 表名 where 某一列 < 70; 代码如下:
select name,chinese from grades where chinese < 75;
列和列之间的比较
在比较的时候,通过 where 就可以。代码如下:
select name,english,chinese from grades where chinese < english;
运行结果如下:
并且条件查询
在查询的时候,通过 and 来连接多个条件进行查询。
代码如下:
select name,math,chinese from grades where math>80 and chinese >80;
运行结果如下:
或者条件查询
通过 or 来完成对或者条件的查询,代码如下:
select name,math,chinese from grades where math>80 or chinese >80;
运行结果如下:
and 和 or 的优先级
在 SQL 当中 and 的优先级比 or 的优先级大,在同时使用时;如果想打破优先级,需要使用小括号()包裹优先执行的部分。
代码如下:
select name,math,chinese,english from grades where (math>80 or chinese >80) and english>90;
运行结果如下:
between 方法
between 就是介于两者之间的表示,要注意的是 between 两边都是闭区间。
between a0 and a1 —> a0<=value<=a1
代码如下:
select name,english from grades where english between 90 and 100;
运行结果如下:
in 方法
in 方法就是给定几个值,如果有满足这些数据的时候,就输出。代码如下:
select name,english from grades where english in (95,86);
运行结果如下:
模糊匹配 like
模糊匹配就是有一些关键字一样就可以查询出来。
%通配符
通过 % 通配符就可以进行模糊查询,% 表示0个或者多个字符。代码如下:
select * from grades where name like '六%';
运行结果如下:
_下划线
下划线通配符,一个下划线只能匹配到一个字符。代码如下:
select * from grades where name like '小%';
运行结果如下:
查找NULL成绩
查找 NULL 成绩的时候,有两种方法:
1.通过 <=> 来判断是不是
2.通过 is null 来判断是不是
<=>
通过 <=> 来判断,代码如下:
select * from grades where chinese <=> null;
运行结果如下:
is null
is null 也是判断 空 的一中方法,代码如下:
select * from grades where chinese is null;
运行结果如下:
分页查询 limit
分页查询当中,使用 limit 来进行分页。代码如下:
select * from grades limit 3;
运行结果如下:
offset
offset 是配合 limit 来使用的,就是从 offset 这个位置去查找。
代码如下:
select * from grades limit 3 offset 2;
运行结果如下:
搭配条件使用
limit 可以搭配 条件、order by 等操作来使用。
代码如下:
select name,math+english+chinese as zongfen from grades order by zongfen limit 2;
运行结果如下:
修改
修改主要是使用 update 来进行的。
修改: update 表名 set 列名 = 值 where 条件; where 后面的条件,是针对哪些进行修改。符合 where 条件的就进行修改,不符合就不修改。如果 where 省略了,就是修改所有记录。
在修改的时候会把原始数据修改。
使用where来修改
通过 where 后面加条件就可以完成修改。代码如下:
update grades set english = 70 where name = '六六';
运行结果如下:
一次修改多个数值
在修改的时候可以一次修改多个数值,代码如下:
update grades set english = 70,chinese = 80 where name = '小一';
运行结果如下:
修改全部数据
修改全部数据的时候,不加 where 就可以了。例如:把英语成绩全部修改为原来的一半。代码如下:
update grades set english=english/2;
运行结果如下:
删除
删除操作的时候,使用的是 delete 关键字。
使用where删除
delete from 表名 where 条件;代码如下:
delete from grades where id=2;
运行结果如下:
删掉所有数据
删掉所有数据的时候,就不加 where 了。
代码如下:
delete from grades;
运行结果如下: