MySQL 表的增删改查
一. CRUD
- 注释:在SQL中可以使用“–空格+描述”来表示注释说明
- CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete) 四个单词的首字母缩写。
二. 增加(Create)
create table booklist(
booklist_name varchar(64) comment '图书名称',
name varchar(32) comment '图书作者',
unitprice float comment '图书价格,单位元',
category varchar(12) comment '图书分类'
);
先创建了一个图书表,然后给表里面增加信息:
1. 单行插入
insert into booklist values('Java核心技术','Cay S. Horstman',56.43,'计算机技术');
2. 多行插入
insert into booklist(booklist_name,name,unitprice,category)values
('《道德经》','李耳',34.00,'文学'),
('《十万个为什么》','李四',62.90,'科普'),
('《java编程思想》','王五',34.87,'教材'),
('《可爱的人》','张三',19.09,'小说'),
('《三国演义》','施耐庵',32.67,'小说'),
('《西游记》','吴承恩',100.89,'小说');
三. 查询(Retrieve)
1. 全列查询
select * from 表名;
-- *表示所有列
示例:
2. 指定列查询
以下图的表为例:
那么指定列查询的语句是:
select name,chinese from student;
结果显示:
3. 查询字段为表达式
这一列的所有数据都被临时增加了10。
4. 别名
5. 查询某几列
例1: 查询姓张,而且年龄在18~25岁之间的学生
例2: 查询某个文章列表,发布日期在某两个时刻之间的文章。
例3: 查询成绩是62或者59或者98或者是97的同学
select name, math from student where math in (62,59,98,97) ;
6. 排序
这是升序的命令
select name, pe from student order by pe ;
这是降序的命令
select name, pe from student order by pe desc ;
如果这个命令是多个排序,需要排序的用逗号隔开,先排列逗号前的,如果逗号前面的有一样的,就排逗号后面的,以此类推。
-- 这个命令表示从表中查询数学和体育的升序排列结果,并显示出name,math,pe 列
select name,math, pe from student order by pe ,math ;
7. 分页查询:limit
查找前三行的数据:
select name, math from student where math limit 3;
查找排序后前三行的数据:
select name, math from student order by math limit 3;
该语句的命令是选择第1~3名,offset默认是从0开始。如果没有排序,则代表第1 ~ 3 行。
select name, chinese,math, english, pe from student order by math limit 3 offset 1;
从第2个开始,筛选出来5个
select name,math from student where math limit 2,5;
8. 去重
去除math这一列的重复数据
select distinct math from student;
9. 条件查询
用where。
运算符 | 说明 |
---|---|
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
between A and B | 范围匹配,[A, B],如果 A <= value <= B,返回 TRUE(1) |
IN (option, …) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
like | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
and | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
or | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
not | 条件为 TRUE(1),结果为 FALSE(0) |
注意:
- WHERE条件可以使用表达式,但不能使用别名。
- AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分。
四. 修改(Update)
这里的数据一旦被修改,那就是彻底的被更改了,所以操作的时需谨慎,注意备份!!!
更改某一行的某几个数据:列在前面,行在后面。
更改多名学生的成绩,在后面可以加上 OR。
让某一列成绩为原来的多少倍:
五. 删除(Delete)
删除某一行的数据: 前面是表名,后面是某一行的名称。
delete from student where name =’王小明’;
删除表:
delete from 表名;