1INSERT插入数据
语法格式:
INSERT [INTO]
表名 [字段名]
VALUES (值列表);
示例 :向学生表中插入一行数据
第一种:
insert into students (id,name,age,height,gender,cls_id,is_delete)
values (0,'小明',18,180.00,2,1,0);
第二种:
insert into students values (0,'小明',18,180.00,2,1,0);
运行结果:
(select * from students;是查询语句,这里用于检验数据是否被写入表中)
向学生表中插入多行数据:
insert into students (id,name,age,height,gender,cls_id,is_delete)
values (2,'佩奇',8,130.00,2,1,0),(3,'超人',36,180.00,1,2,0);
运行结果:
2删除数据
2.1delete删除数据
语法格式:
DELETE FROM 表名
[WHERE条件];
示例:删除id是1的学生的数据
delete from students where id = 1;
运行结果:
2.2truncate删除数据
语法格式:
TRUNCATE TABLE 表名;
示例:删除学生表中的数据
truncate table students;
运行结果:
可以看见表students为空,truncate删除的是表中数据,但表还在。
3修改数据
UPDATE 表名 SET 字段1=值1,
字段2=值2,…,字段n=值n
[WHERE 条件];
示例:将年龄为8,体重为130的学生姓名改为Lily
update students set name='Lily' where age=8 and height=130;
运行结果:
4查询数据
4.1select基本查询语句
语法格式:
SELECT 列名 FROM 表名;
示例:查询所有学生信息
select * from students;
运行结果:
4.2where条件查询
语法格式:
SELECT 列名
FROM 表名
WHERE 条件
示例:查询id为1学生的姓名,性别
select name,gender from students where id=1;
运行结果:
4.3where多条件查询
语法格式:
SELECT 列名
FROM 表名
WHERE 条件 运算符 条件
示例:查询id为1或者为3的 学生 姓名,性别
select name,gender from students where id=1 or id=3;
运行结果:
4.4like模糊查询
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
LIKE '值'
like值后的通配符如下
-
示例:查询名字里面包含'小'的学生的信息
select * from students where name like '小%';
运行结果:
4.5IN关键字查询
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
IN (值1,值2,....);
示例:查询id为1,5,6,10的学生的信息
select * from students where id in (1,5,6,10);
运行结果:
还有NOT IN查询
示例:查询班级不是1或2的学生的信息
select * from students where cls_id not in (1,2);
运行结果:
4.6BETWEEN关键字查询
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
BETWEEN 值1 and 值2;
示例:查询身高在170到180的学生的信息
select * from students where height between 170 and 180;
运行结果:
4.7DISTINCT关键字查询【用于去重】
语法格式:
SELECT DISTINCT
字段名1,字段名2......
FROM 表名;
示例:在students中查找重复的性别
select distinct gender from students;
运行结果:
4.8ORDER BY关键字查询
SELECT <字段名列表>
FROM <表名>
[WHERE ] <查询条件>
[ORDER BY <排序的列名>
[ASC 或 DESC]];
(asc和desc用于降序排列)
示例:将学生的身高按照升序排列
select * from students order by height;
运行结果:
降序示例:将学生的身高按照降序排列
select * from students order by height desc;
运行结果:
4.9LIMIT关键字查询
SELECT <字段名列表>
FROM <表名>
[WHERE ] <查询条件>
[ORDER BY <排序的列名>
[ASC 或 DESC]];
[LIMIT <行数>];
示例:只看前3条学生的信息
select * from students limit 3;
运行结果:
4.10连接查询
连接查询是将多张表中记录按照指定的条件进行连接的查询方式
注意:连接查询涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外键,
下图中teacher_id在classes表中是外键,id在teachers表中是主键
连接查询包含内连接和外连接查询
4.10.1内连接
内连接是返回连接表中符合连接条件记录的连接查询。
包括:显式内连接、隐式内连接
4.10.1.1显式内连接查询
语法格式:
SELECT 字段 FROM 表1
INNER JOIN 表2
ON 连接条件
[WHERE 条件]
示例:查看老师所在班级
select t.name,c.name from teachers t inner join classes c on t.id=c.teacher_id;
运行结果:
4.10.1.2隐式内连接查询
语法格式:
SELECT 字段
FROM 表1,表2
WHERE 表1.条件=表2.条件
示例:查看老师所在班级
select t.name,c.name from teachers t,classes c where c.teacher_id=t.id;
运行结果:
4.10.2外连接
4.10.2.1左外连接查询
左外连接是以左表为基表,返回左表中所有记录及连接表中符合条件的记录的外连接
语法格式:
SELECT 字段 FROM 表1
LEFT [outer] JOIN 表2
ON 连接条件
[WHERE 条件];
示例:查看老师所在班级
select t.name,c.name from classes c left join teachers t on c.teacher_id=t.id;
运行结果:
4.10.2.2右外连接查询
右外连接是以右表为基表,返回右表中所有记录及连接表中符合条件的记录的外连接。
语法格式:
SELECT 字段 FROM 表1
RIGHT [outer] JOIN 表2
ON 连接条件
WHERE 条件
示例:查看老师所在班级
select c.name,t.name from classes c right join teachers t on c.teacher_id = t.id;
运行结果:
5.聚合函数
聚合函数是可以对一组值进行计算,并返回单个值的函数。
常见的函数类型:
- count()-计数
- sum()-求和
- max()-最大值
- min()-最小值
- avg()-平均值
语法格式:
SELECT 聚合函数
FROM 表名
[WHERE 条件]
[GROUP BY 聚合函数]
示例:查询班级学生的平均身高
select avg(height) as '平均身高' from students;
运行结果:
示例:显示每个班级学生的平均身高
select cls_id,avg(height) as'平均身高' from students group by cls_id;
运行结果:
6.子查询(查询嵌套)
6.1简单子查询
示例:查看刘亦菲同学的所在班级的所有同学
select * from students where cls_id =
(select cls_id from students where name = '刘亦菲');
运行结果:
6.2 ANY/SOME子查询
示例:查看赵老师所带的学生信息
select * from students where cls_id =
any(select id from classes where teacher_id =
(select id from teachers where name='赵老师'));
运行结果:
6.3 All子查询
示例:查看赵老师不在的班级中的学生信息
select * from students where cls_id >
all(select id from classes where teacher_id =
(select id from teachers where name='赵老师'));
运行结果:
6.4 EXISTS子查询
示例:查看存在王老师的班级表
select * from classes where exists
(select * from teachers where name='赵老师');
运行结果:
6.5 NOT EXISTS子查询
示例:创建教师表
create table IF NOT EXISTS teachers(
id int primary key,
name varchar(20)
);
运行结果:
因为我的库里存在teachers表,所以这里不会再创建一个教师表。
避免重复创建