插入就是增加的意思。先创建一个学生表:
create table student(id int,name varchar(50),age int,score double(3,1));
然后插入数据,insert into 表名 values(表里面的值); 。四个数据对应的是:班级,名字,年龄。成绩:
insert into student values (1, 'zhangsan', 19, 98.5);
这里先介绍一个简单查询全表的语句:
select * from student;
插入的时候,一个括号代表一条记录。多个括号就是同时插入多条记录。代码如下:
insert into student values (2, '李四', 20, 98.0),(3, '王五', 21, 97);
在插入部分列的时候,在表名后面加个括号,里面写上要插入的列就好,然后在 values 后面的括号内填入要插入列的数值就好。未插入的列的值就是 NULL 。代码如下:
insert into student (id,name) values (10,'Lockey');
查询是数据库当中用的最多的一种操作。也是考点最多的方式。
全列查找就是把一个表的所有的列,所有的行都查询出来。select * from 表名; * 是通配符,表示一个表的所有列。代码如下:
select * from student;
运行结果如下:
不过这个操作也是很危险的操作。如果数据量很大的话,很容易把服务器挤爆。
在查找的时候,也可以只查找部分列。select 列名,列名 from 表名; 先创建一个包含多个列的表:
create table exam_result(id int, name varchar(50),chinese decimal(3,1),math decimal(3,1),english decimal(3,1));
然后插入多个数据:
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'qqq', 67, 98, 56),
(2,'www', 87.5, 78, 77),
(3,'eee', 88, 98.5, 90),
(4,'rrr', 82, 84, 67),
(5,'ttt', 55.5, 85, 45),
(6,'yyy', 70, 73, 78.5),
(7,'uuu', 75, 65, 30);
现在只在表中查询 名字 和 语文成绩 ,代码如下:
select name,chinese from exam_result;
运行结果如下:
这里通过查询就筛选出了由 名字 和 语文成绩 组成的表。
进行运算就是查询的时候,同时进行一些运算操作(列和列之间)。例如:期望查询结果中的语文成绩比实际多 10 分。代码如下:
select name,chinese + 10 from exam_result;
运行结果如下:
要注意的是,这里的查询结果都是临时表。并不会对原始数据作出修改。
查询总分的时候,把所以成绩加起来就好,代码如下:
select name,chinese + math + english from exam_result;
在列名之后通过 as 就可以给查询的临时表起别名了。select 列名 as 别名 from 表名; 代码如下:
select name,chinese + math + english as total from exam_result;
使用 distinct 针对查询的结果,将相同的结果去掉。代码如下:
select distinct math from exam_result;
如果要针对多个列进行去重,就得这多个列的值都相同才能去重:
select distinct math,english from exam_result;
在排序的时候,通过 order by 来进行排序。select 列名 from 表名 order by 列名 asc/desc; desc 代表升序和降序。升序排序可以默认不写代码如下:
select name,chinese + math + english from exam_result order by chinese + math + english;
将总成绩换为别名,然后进行排序。代码如下:
select name,chinese + math + english as total from exam_result order by total;
运行结果如下:
如果数据库当中是带有 NULL 值的,按照升序是最前面,按照降序是最后面,也就是说:空值是最小值。先插入一个带有空值的数据:
insert into exam_result values (8,'酷酷酷',null ,null ,null );
对查询的结果按照数学成绩进行排序,代码如下:
select * from exam_result order by math asc;
在排序的时候,如果两个值相同的话,那么就可以再指定一个列来进行排序。这里使用数学和语文举例。当数学成绩一样的时候,就根据语文成绩进行排序。代码如下:
select name,math,chinese from exam_result order by math,chinese;
条件查询的时候,主要用到的是 where 。在 where 后面加一些条件来进行查询。
要查询某一列小于某个值的数据的时候,在 where 后面加条件就好。select 列名,列名 from 表名 where 某一列 < 60; 代码如下:
select name,english from exam_result where english < 60;
在比较的时候,通过 where 就可以。代码如下:
select name,english,chinese from exam_result where chinese > english;
要注意的是:前面的 name 和 english 和 chinese 只是查出来的表的显示内容。并不是条件。运行结果如下:
在查询的时候,通过 and 来连接多个条件进行查询,and 是并且的意思。代码如下:
select name,chinese,english from exam_result where chinese > 80 and english > 80;
这里查询的是 语文和英语 都大于 80 的学生。运行结果如下:
通过 or 来完成对或者条件的查询,代码如下:
select name,chinese,english from exam_result where chinese > 80 or english > 80;
这里查询的是 语文或者英语 负数大于 80 的学生。运行结果如下:
在 SQL 当中 and 的优先级比 or 的优先级大,如果想打破优先级,就需要加括号。比如下面的代码:
select * from exam_result where (chinese > 80 or math > 70) and english > 70;
这里就是先比较括号里面的,然后再 and 比较。运行结果如下:
between 就是介于两者之间的表示,要注意的是 between 两边都是闭区间。代码如下:
select * from exam_result where chinese between 80 and 90;
就是选出语文成绩 大于等于 80,小于等于 90 的学生。运行结果如下:
in 方法就是给定几个值,如果有满足这些数据的时候,就输出。代码如下:
select * from exam_result where math in (58,59,98,99);
这里筛选的就是数学成绩在:58,58,98,99 当中。运行结果如下:
模糊匹配就是有一些关键字一样就可以查询出来。like 查询的时候要搭配通配符来使用
通过 % 通配符就可以进行模糊查询,% 可以代表任意字符,包含 0 个字符。代码如下:
select * from exam_result where name like 'q%';
下划线通配符,一个下划线只能匹配到一个字符。代码如下:
select * from exam_result where name like 'q__';
查找 NULL 成绩的时候,有两种方法:
通过 <=> 来判断,代码如下:
select * from exam_result where chinese <=> null;
is null 也是判断 空 的一中方法,代码如下:
select * from exam_result where chinese is null;
分页查询当中,使用 limit 来进行分页。代码如下:
select * from exam_result limit 3;
运行结果如下:
这里的 limit 限制是 3,也就是一页显示 3 条记录。
offset 是配合 limit 来使用的,就是从 offset 这个位置去查找。代码如下:
select * from exam_result limit 3 offset 3;
limit 可以搭配 条件,以及 order by 等操作来组合使用。代码如下:
select name,chinese + math + english as total from exam_result order by total desc limit 3;
修改主要是使用 update 来进行的。修改: update 表名 set 列名 = 值,列名 = 值 where 条件; where 后面的条件,是针对哪些进行修改。符合 where 条件的就会修改,不符合就不修改。如果 where 省略了,就是修改所有记录。在修改的时候会把原始数据修改。
通过 where 后面加条件就可以完成修改。代码如下:
update exam_result set math = 98 where name = 'eee';
在修改的时候可以一次修改多个数值,代码如下:
update exam_result set math = 60, chinese = 70 where name = 'uuu';
在对前几个序列进行修改的时候,可以通过 order by 来进行排序,然后再通过 limit 来限制前几个序列,然后修改就好了。代码如下:
update exam_result set math = math + 10 order by chinese + math + english limit 3;
这里是对总成绩倒数前三的人的数学成绩加上 10 分。运行结果如下:
修改全部数据的时候,只要不加 where 就可以了。例如:把语文成绩全部修改为原来的一半。代码如下:
update exam_result set chinese = chinese / 2;
删除操作的时候,使用的是 delete 关键字。delete from 表名 where 条件;
在 where 后面加上条件就好了。代码如下:
delete from exam_result where id = 6;
删掉所有数据的时候,就不用加 where 了。要注意删除的时候一定写准条件,不然写错就可能删掉很多数据。代码如下:
delete from exam_result;