-第一节:MySQL的增删查改基础篇
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-第一节:MySQL的增删查改基础篇相关的知识,希望对你有一定的参考价值。
文章目录
一:INSET新增
INSERT新增:语法格式如下
insert
into 表名([列名1,列名2,....])
values(常量1,常量2,...)
以下面的student
为例进行说明
create table student(
Sid int,
Snumber int comment '学号',
Sname varchar(20) comment '姓名',
Seamil varchar(20) comment '邮箱'
);
例子
①:插入如下三行数据,一次只插入一行
insert into student values(1, 2012345, '张三', 'zhangsan123@qq.com');
insert into student values(2, 2012557, '李三', NULL);
insert into student values(3, 2012663, '王五', 'wangwu@163.com');
②:指定列插入,并且一次插入多行数据
insert
into student(Sid, Sname)
values
(4, '赵倩'),
(5, '孙莉');
二:SELECT查询
SELECT查询:根据WHERE子句的条件表达式从FROM子句指定的表、视图中找出满足条件的元组,再按照SELECT子句中的目标列表达式选出元组中的属性值形成结果表。如果有:
- GROUP BY:结果按<列名1>的值进行分组,该属性列值相等的元组为一个组;通常会在每组中作用聚集函数;如果该子句还携带HAVING短语,则只有满足指定条件的组才予以输出
- ORDER BY:结果表还要按<列名2>的值的升序或降序排序
以下面的exam
为例进行说明
create table exam(
Sid, int,
Sname varchar(20),
Chinese decimal(3, 1),
Math decimal(3, 1),
English decimal(3, 1)
);
insert into
exam
values
(1, '唐三藏', 67, 98, 56),
(2, '孙悟空', 87.5, 78, 77),
(3, '猪八戒', 88, 98.5, 90),
(4, '曹操', 82, 84, 67),
(5, '刘备', 55.5, 86, 45),
(5, '孙权', 70, 73, 78.5),
(5, '宋江', 75, 65, 30);
(1)全列查询
全列查询:语法格式如下
- 一般不建议使用通配符
*
进行查询,因为查询的列越多,传输的数据量就越大 - 可能会影响到索引的使用
select * from 表名;
例子
select * from exam;
(2)指定列查询
全列查询:语法格式如下
- 列的顺序可以不按照原有列顺序
select 列名1, 列名2, .. from 表名;
例子
select Sname, English from exam;
(3)查询字段为表达式
查询字段为表达式:在查询时列可以参与运算
例子
select Sname, English from exam;
(4)起别名
起别名:可以为查询结果起一个通俗易懂的名字,别名放在对应列名(表名、表达式也可以)之后即可
例子
select Sname 姓名, English + Math + Chinese 总成绩 from exam;
(5)去重(DISTINCT)
去重(DISTINCT):在列名前面加入distinct
会把重复的记录合并为一个显示
- 如果对多个列去重,那么只有多个列相同时才视为重复
例子
select distinct Math from exam;
(6)排序(ORDER BY)
排序(ORDER BY):使用order by
可以按照指定列进行排序
asc
(默认):升序desc
:降序null
数据在任何情况下被视为最小值
例子
①:对所有数据按照Chinese
升序排序
select * from exam order by Chinese;
②:对所有数据按照Engilish
降序排序
select * from exam order by English desc;
③:对多个列进行排序,写在前面的列的权重要高于后面的列,也即主要关键字和次要关键字之分。如下对所有数据依次按照Math
降序、English
升序、Chinese
升序排序。也即在保证Math
降序的前提下再对English
升序,最后对Chinese
升序
select Sname, Math, English, Chinese from exam order by Math desc, English, Chinese;
(7)条件查询(WHERE)
条件查询(WHERE):查询时where
后面可以跟上查询条件,select
会根据where
后面的内容来判断,查询条件主要包括
-
比较运算(特别注意这个
=
)
-
逻辑运算
A:基本查询
例子
①:查询英语成绩低于60分的同学
select Sname from exam where English < 60;
②:查询语文成绩高于英语成绩的同学
select Sname from exam where Chinese > English;
③:查询总分低于200分的同学
select Sname, Chinese+Math+English from exam where Chinese+Math+English < 200;
B:AND和OR
AND
优先级要高于OR
例子
①:查询语文成绩大于80且英语成绩大于80的同学
select Sname, Chinese, English from exam where Chinese > 80 and English > 80;
②:查询语文成绩大于80或英语成绩大于80的同学
select Sname, Chinese, English from exam where Chinese > 80 or English > 80;
C:范围查询
①:BETWEEN AND
例子
①:查询语文成绩在[80, 90]的同学
select Sname, Chinese from exam where Chinese between 80 and 90;
②:between
and
等价于and
select Sname, Chinese from exam where Chinese >= 80 and Chinese <= 90;
②:IN
例子
①:查询数学成绩是58或59或98或99的同学
select Sname, Math from exam where Math in (58, 59, 98, 99);
②:in
等价于 or
select Sname, Math from exam where Math = 50 or Math=59 or Math=98 or Math=99;
D:模糊查询LIKE
例子
①:%
可以匹配任意多个字符(包括0个)
select Sname from exam where Sname like '孙%';
②:匹配严格的一个任意字符
select Sname from exam where Sname like '孙_';
E:NULL的查询
例子
select Sname from student where Sname is not null;
select Sname from student where Sname is null;
F:分页查询-LIMIT
其语法格式如下,表达的意思是从s开始,筛选n条结果
select ... from table limit n offset s;
例子
select * from exam limit 3 offset 4;
三:UPDATE修改
语法:格式如下,其功能是修改指定表中满足WHERE
子句条件的元组
- 如果省略WHERE子句,则表示要修改表中所有元组
例子
①:将指定同学的数学成绩变更为80分
update exam set Math = 80 where Sname like '孙悟空';
②:将指定同学的数学、语文成绩分别变更为60分、70分
update exam set Chinese = 70, Math = 60 where Sname like '宋江';
③:将总成绩倒数前三的3位同学的数学成绩加上1分
update exam set Math = Math + 1 order by Chinese+Math+English limit 3;
四:DELETE删除
语法:格式如下,其功能是从指定表中删除满足WHERE
子句条件的所有元组,注意
DELETE
删除的是表的数据,而不是表的定义- 如果省略
WHERE
子句,那么就表示删除全部元组
例子
delete from exam where Sname = '孙悟空';
以上是关于-第一节:MySQL的增删查改基础篇的主要内容,如果未能解决你的问题,请参考以下文章