SQL语言对数据进行增删查改
-
insert 插入(增)
格式一:
insert into 表名 (列名1,列名2,列名3……)values(值1,值2,值3……);
格式二:
insert into 表名 values(值1,值2,值3……);
表名后面的列可以省略,但是传递的值要和属性一一对应
格式三:
可以同时插入多条数据
insert into 表名 values(值1,值2,值3……),(值1,值2,值3……); -
delete删除表中的数据
和drop区别:delete仅限于把表中的数据给删除,表还在留着;
drop是把表一并删除。
格式一:
delete from 表名 —把表中所有的数据删除
格式二:
delete from 表名 where 条件 ——根据条件删除表中的数据
eg: delete from student where 姓名=‘宋好’;
and 条件是同时满足 delete from 表名 where 条件1 and 条件2 and 条件3……
or是多个条件只需要满足其中一个 delete from 表名 where 条件1 or 条件2 or 条件3……
//删除数据注意外键的影响,主表中被从表引用的数据不能删除。
- update 修改表中数据
格式一:
update 表名 set 列名=值; --把这个列的值全都更改成新的值
格式二:
修改多个列
update 表名 set 列名1=‘值1’,列名2=‘值2’,列名3=‘值3’;
格式三
有条件的更新
update 表名 set 列名=‘值’ where 条件;
格式四:
在原有的数据上加上(减去)一个数
update 表名 set 列名=列名+数字 条件;
eg: - select 查询
select 列名 from 表名
select 子句:select 列名…… 查询什么?
from 子句:from 表名…… 从哪儿查?
1、查询表中所有内容
select * from 表名
2、查询(多个)列
select 列名1,列名2,列名3 from 表名;
3、去重复
用户希望查询返回的结果中删除重复行,就可以在select子句中使用distinct关键字
格式:
select distinct 列名 from 表名;
eg: select distinct 年龄 from student;
4、别名查询
(1)格式 select 列名1 ‘别名1’ ,列名2 ‘别名2’,from 表名
eg:select 学号 as ‘no’ , 成绩 as ‘score’ from student;
别名查询只是在显示查询结果的时候,按照别名显示,实际的表的字段名并没有改变!
(2)使用关键字AS来连接表达式和指定的别名
格式:select 列名 as ‘列名’ from 表名;
例:select 学号 as ‘no’,姓名 as ‘name’,年龄 as ‘age’ from student;
(3)在查询的过程中对列进行计算
比如要查询所有同学的成绩0.8是多少
eg:select 学号,成绩,成绩0.8 新成绩 from student;
- 条件查询
1、比较运算符
格式:
select * from 表名 where 条件
eg:
select * from student where 籍贯=‘广东’;
select * from student where 年龄=18 and 籍贯=‘甘肃’;
2、逻辑运算符
and :逻辑与,用来连接多个条件,这些是必须同时满足的
or:逻辑或,用来连接多个条件,满足一个即可
格式:
select 列名 from 表名 where 条件1 and 条件2 and 条件3;
select 列名 from 表名 where 条件1 or 条件2 or 条件3;
-
范围搜索条件
针对查询结果在某个范围之内(闭区间)
(1)在某个范围内
格式:between……and……
select 列名 from 表名 where 列名 between 开始值 and 结束值
(2)不在某个范围内 not between……and……
select 列名 from 表名 where 列名not between 开始值 and 结束值 -
列表搜索查询
关键字——in
用户可以选择与列表中的任意值匹配的行
格式:select 列名 from 表名 where 列名 in(列表);
eg :select 学号 ,姓名,籍贯 from student where 籍贯 in(‘甘肃’,‘广东’,‘内蒙古’);
查询不在列表中的数据
格式:select 列名 from 表名 where 列名 not in(列表);
eg:select 学号,籍贯 from student where 籍贯 not in (‘黑龙江’,‘广东’,‘河南’);
-
字符匹配符
关键字:like
搜索与 模式匹配的字符串、日期或者时间值,模式包含要搜索的字符串,字符串中包含2种通配符的任意组合。
通配符
%:表示0个或多个字符
_ :表示一个字符
eg:
select 会员姓名 from 会员表 where 会员姓名 like ‘王%’;
select 会员姓名 from 会员表 where 会员姓名 like ‘王_’;
select 会员姓名,会员积分 from 会员表 where 会员姓名 like ‘诸葛%’;
- 空值查询
关键字null
判断列名的空-格式:select 列名 from 表名where 列名 is null
判断列名不为空-格式:select 列名 from 表名 where 列名is not null
- 聚合函数
(1)sum(列名) ——对列求和
(2)avg(列名) ——对列求平均值
(3)max(列名) ——求该列最大值
(4)min(列名) ——求该列最小值
格式: select 聚合函数 from 表名;
select sum(成绩) as ‘总成绩’ from student;
select avg(成绩) as ‘平均成绩’ from student;
select max(成绩) as ‘最高分’ from student;
select min(成绩) as ‘最低分’ from student;
(5)count * from 表名;
eg:select count(*) as ‘总人数’ from student;
(6)count(列名) from 表名;
eg:select count(成绩) as ‘总人数’ from student;
因为在student 表中,有一条数据的成绩是空值
上述聚合函数,除了count(*)之外,均不统计空值
-
行数限定查询
关键字:limit
限定查询第m行到第n行
格式:select 列名 from 表名 limit [starts,] nums;
开始行可以省略,如果不写默认从第0行开始。也就是说行数是从0开始的。
eg:select 籍贯 from student limit 2,6; -
分组查询
关键字:group by
格式:select 列名,聚合函数 from 表名 group by 列名;
eg:select 年级,sum(人数)‘总人数’,count(*)‘班级总数’ from 班级信息表 group by 年级;
查询结果:
关键字:having 对分组的结果添加条件 和group by搭配使用
格式:select 列名 rom 表名 group by 列名 having 条件;
一般情况下 这个条件都是聚合函数。
having 后面可以写聚合函数
where 不可以写聚合函数。
eg:查看每个学生的总成绩,并且成绩大于200
select 学号,sum(成绩) as ‘总成绩’
from 成绩表
group by 学号
having sum(成绩)>200;
结果:
- 排序
关键字: order by 默认升序
升序:asc
降序:desc
格式:select 列名 from 表名 order by 列名 [asc | desc];
根据两个列进行排序
格式:select 列名 from 表名 order by 列名1 ,列名2 [asc | desc] ;