文章目录
新增
在向数据表新增数据之前,要首先选中数据库.
单行插入
insert into 表名 values (值,值...);
多行插入
insert into 表名 values (值,值...),(值,值...)...;
建议,如果插入的数据很多的话,使用多行插入的方法.
查询
全列查询
select * from 表名;
通常情况下不建议使用 * 进行全列查询
查询的列越多,意味着需要传输的数据量越大;
可能会影响到索引的使用
*表示为通配符,表示一个表中更多所有列.
这里查找的结果是一个"临时表",而创建的表的数据全部在硬盘上.而这里的临时表不是在硬盘上,而是在内存中,随着数据进行输出后,数据也被释放了,
指定列查询
select 列名,列名... from 表名;
在查询的时候,会显示的告诉数据库要查哪些列,数据库会有针对性性的进行返回数据.
相比较全列查询,指定列查询要高效的多.
同样的,这里显示的也是一个临时表,不会对数据库中的原始数据产生任何影响.
指定查询字段为表达式
例如:这里查询姓名和对应的总成绩,sql语句应该这样写:
临时表的结果的数据类型不一定和原始表的数据类型完全一致,临时表的类型会自动的适应,保证结果的正确.
上述操作,都是针对一个或者多个列进行运算操作,行与行之间互不影响.
查询字段指定别名
上一个查询过程中,最后的结果的列名是chinese+math+english
,看起来格外不舒服,这时候就可以使用指定别名的方法:
select column [AS] 别名 from 表名;
通过制定别名的方法,可以避免得到的临时表,名字乱的问题.,同时as可以省略.
去重distinct
针对查询的结果,将重复的记录去掉.
从执行结果可以看到,加了distinct的sql
语句,最后输出的结果中,只剩下了一个98.
如果针对多列进行去重,那么就得这多个列同时相同才可以去重.
排序
针对查询结果(临时表)进行排序
select 列名... from 表名 order by 列名 asc/desc;
asc
:升序 排序默认升序
desc
:降序
针对数学成绩进行升序排序
向数据库查询结果,如果不去指定排序,此时查询结果的顺序是不可预期的.
针对数学成绩进行降序排序
如果数据库中有带NULL值的,就会被认为是最小的.升序排在最前面,降序排在最后面
排序也可以根据别名进行排序
条件查询 :where
运算符 | 说,明 |
---|---|
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL不安全,例如NULL=NULL的结果就是NULL |
<=> | 等于,NULL安全,例如NULL<=>NULL的结果是true |
!=,<> | 不等于 |
between a0 and a1 | 范围匹配,[a0,a1],如果a0 <= value <=a1,返回true |
in(option,…) | 如果option中的任意一个,返回true |
is null | 是null |
is not null | 不是null |
like | 模糊匹配,%代表任意多个(包括0个);_代表任意一个字符 |
逻辑运算符:
运算符 | 说明 |
---|---|
and | 多个条件必须都为true,结果才是true |
or | 任意一个条件为true,结果为true |
not | 条件为true,结果为false |
注:
-
WHERE条件可以使用表达式,但不能使用别名。
-
AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
基本查询
查询英语不及格的同学及英语成绩 ( < 60 )
查询语文成绩好于英语成绩的同学
查询总分在 200 分以下的同学
AND与OR
查询语文成绩大于80分,且英语成绩大于80分的同学
查询语文成绩大于80分,或英语成绩大于80分的同学
and和or的优先级
and的优先级高于or,所以如果需要先执行or的时候,需要加括号.
范围查询
- between…and…
查询语文成绩在 [80, 90] 分的同学及语文成绩
也可以使用and实现
- in
查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
使用or实现
模糊查询
% 匹配任意多个(包括 0 个)字符
_ 匹配严格的一个任意字符
NULL 的查询:IS [NOT] NULL
分页查询limit
起始下标为 0
分页查询第一页,limit 3表示只取前三个。
如果要取4-6。
查找总成绩前三名的学生姓名
修改
UPDATE 表名 SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
将孙悟空同学的数学成绩变更为 80 分
将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
删除
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
删除孙悟空同学的考试成绩