数据库操作基础(增删查改)
1.插入
1.1往数据表中插入一条数据
insert into 表名 values (值,值,值...)
此处列出的这些值的数目和类型 要和表的相对应
1.2指定列插入
insert into 表名(列名) values (值);
1.3一次插入多个记录
insert into 表名 values (值),(值)...
一次插入多行记录 的 效率 往往高于 一次插入一条记录,分多次插入
2.查询
2.1 全列查询
select * from 表名;
这个操作,就是查询出当前数据库中所有的行和列
*****能够代表所有的列
2.2 指定列查询
select 列名,列名.. from 表名;
手动指定要查询的某一列或某几列~~ 服务器返回的结果,就只包含想要的数据~~
2.3 查询字段为表达式
查询的同时,可以进行计算
eg:
2.4 查询的时候给列/表达式 指定别名 as
select 列名 as 别名 from 表名;
as 关键字,可以省略,但是不建议 ,写上 as 会更容易看,别名会最终显示在查询结果的临时表中.
2.5查询时去重 distinct
select distinct 列名 from 表名;
查询的时候,把重复的行,去掉,只保留一份~~
2.6排序查询 order by ----- asc/desc
针对查询到的结果进行排序,
mysql 是一个客服端-服务器结构的程序~~,因此这里的排序,也是针对临时表进行的,对于数据库服务器上的原始数据没有任何顺序上的影响
select 列名 from 表名 order by 列名 asc/desc;
asc 是升序,不写也是默认升序
desc 降序
如果SQL中没有指定 order by,则我们不能确定他是有顺序的,虽然有时候我们看着是有顺序的,但是我们不能依赖这个顺序,因为mysql没有说他是有序的
order by 还能指定多个列排序~~(order by 后面可以写多个列~)
2.7条件查询: where
2.7.1 运算符
指定一个筛选条件,把符合条件的结果保留下来,不符合的就剔除掉~~
关系运算符
逻辑运算符
注:
- where 条件可以使用表达式,但不能使用别名。
- 多个条件时,使用 () 来确保正确的顺序
2.7.2 基本查询
eg:
– 查询英语不及格的同学及英语成绩 ( < 60 )
– 查询语文成绩好于英语成绩的同学
注: 条件比较的时候,并不只是使用列名和常量比较(math>60),也可以使用列名和其他列名比较~~
–查询总分在 200 分以下的同学
注: 条件查询,也可以结合一些更复杂的表达式
mysql 的 where 条件中,无法使用 列 的别名
and 与 or
2.7.3 范围查询
between and —查询这个区间
eg: 查询语文成绩在 [80,90] 分的同学及语文成绩
注: 可以看出也能用 and 来实现,但是 between and 更方便
in 查询符合要求的
2.7.4** 模糊查询 like**
mysql 进行 like 模糊查询,低效,实际开发,慎重使用
% 匹配任意多个(包括 0 个)字符
_ 匹配严格的一个任意字符
2.7.5 null 查询 – > is[not]null
null 与其他运算的结果还是 null,即最后结果相当于 false
<=> 可以理解为 equals ,比较 两个值是否相同
2.8分页查询 limit , offset 偏移量
LIMIT出现在查询语句的最后,可以使用一个参数或两个参数来限制取出的数据。其中第一个参数代表偏移量:offset(可选参数),第二个参数代表取出的数据条数:rows。
- 单参数用法
当指定一个参数时,默认省略了偏移量,即偏移量为0,从第一行数据开始取,一共取rows条。
/* 查询前5条数据 */
SELECT * FROM Student LIMIT 5;
- 双参数用法
当指定两个参数时,需要注意偏移量的取值是从0开始的,此时可以有两种写法:
/* 查询第1-10条数据 */
SELECT * FROM Student LIMIT 0,10;
/* 查询第11-20条数据 */
SELECT * FROM Student LIMIT 10 OFFSET 10;//
针对查询出来的结果,进行 截取 ,取出其中的一个部分~~
就像是四个一页
offset 就是相当于 从哪一个开始算
上述八种查询的写法比较基础,也是经常用到的,熟练掌握即可,多写,多练
3.修改 update
update 表名 set 列名 = 值 where 条件...;
进行修好,要明确一些信息
- 改哪个表
- 改这个表里的哪个列/哪些列,改成什么
- 改这个表的哪些行
将孙悟空同学的数学成绩变为 80 分
将曹孟德同学的数学成绩变更为 60 分, 语文成绩变更为 70 分;
update 表名 set chinese = 70, math = 60 where name = '曹孟德';
修改操作,也可以搭配 order by 这样的排序操作
eg : 将总成绩倒数前三的 3 位同学的数学成绩加上 10 分
update 表名 set math = math + 10 order by chinese + math + english limit 3;
注意: 修改时也要结合一下数据范围,不要超出,不然会报错
例如加上 30 分会超过范围
由此,可以知道, update可以理解成,先查询,再修改,即先查询一下看修改后的是否符合条件,然后在进行修改
如果update 后面没有指定任何条件,则会把所有的行都进行修改
update 表名 set math = 0;
由此可见, update 也是一个很危险的操作,更改甚至比误删的后果还要大,也要谨慎使用.
4.删除 delete
delete from 表名 where 条件;
直接删除 符合条件 的行~~
eg: 删除 孙悟空 的成绩
delete from 表名 where name = '孙悟空';
如果在 delete 的时候,没有指定条件,就会把整个表的所有数据都删掉!!
delete from 删除之后,表还在,表里的数据,没了~~
drop table 删除之后,表和表里的数据都没了~~