一、添加数据
格式:INSERT INTO 表名(字段) VALUES(值)
1、同时给所有字段添加数据
insert into users(id,name,age,gender,phnoe) values(1,'男神',18,'1','521');
2、给指定字段添加数据(如果表中有非空字段必须指定·)
insert into users(name) values('女神');
3、不指定字段添加数据(不建议使用)
所有的字段都必须给值,如果不给值需要使用null进行占位
insert into users values(null,'雷布斯',38,'1','158888888');
4、给某一字段批量添加数据
INSERT INTO 表名(字段) VALUES(值),(值);
二、修改数据
格式: UPDATE 表名 SET 字段名=’value’ WHERE 字段=值;
注意:必须添加where条件,如果不加,会将表中所有的数据进行更新
UPDATE users SET age=18 WHERE id=1;
三、删除数据
格式:DELETE FROM 表名 WHERE 字段=值;
注意:必须添加where条件,如果不加,会将表中所有的数据进行删除
DELETE FROM USERS WHERE name='男神'
四、查询数据
查询语句一般书写顺序:
SELECT * FROM user WHERE 条件 GROUP BY 字段 HAVING 条件 ORDER BY 字段 LIMIT 3;
1、基本查询
SELECT 列名1,列名2 FROM 表名;
别名查询:
SELECT 列名1 as 别名1,列名2 as 别名2 FROM 表名;
查所有列:
SELECT * FROM 表名;
2、where条件查询
SELECT 字段名 FROM 表名 WHERE 条件;
查询年龄不等于18岁的所有用户信息:
SELECT * FROM USERS WHERE age!=18;
查询年龄不在19到21岁之间的所有用户信息:
SELECT * FROM USERS WHERE age not between 19 and 21;
查询id是2,3,5,7的所有用户信息:
SELECT * FROM USERS WHERE id in (2,3,5,7);
查询python和linux班的所有女生信息:
SELECT * FROM users WHERE (class='python' or class='linux') and gender='0';
SELECT * FROM users WHERE class in ('python','linux') and gender='0';
3、模糊查询 LIKE
%表示任意位数的任意字符,_表示一位任意字符
查询名字以‘王’开头的用户信息:
SELECT * FROM USERS WHERE name LIKE '王%';
查询email中包含g的所有用户信息:
SELECT * FROM USERS WHERE email LIKE '%g%';
查询姓名是两个字的用户信息:
SELECT * FROM USERS WHERE name LIKE '__';
4、聚合查询
聚合函数一般需要配合分组去使用,不能使用在where条件中。
max()、min()、count()、avg()、sum()
统计当前表男生的数量:
SELECT COUNT(*) FROM user WHERE gender='1';
查询python班级最大年龄最小年龄以及平均:
SELECT MAX(age),MIN(age),AVG(age) FROM user WHERE class='python';
5、去除重复数据 DISTINCT
查询不重复的班级:
SELECT DISTINCT class FROM user;
查询不重复的班级和性别
SELECT DISTINCT class,gender FROM user;
6、分组
查询表中有哪些班级
SELECT class FROM user GROUP BY class;
统计当前表中男生和女生的人数个多少人
SELECT gender,count(*) FROM user GROUP BY gender;
统计每个班,男生和女生各多少人
SELECT class,gender,count(*) FROM user GROUP BY class,gender;
7、having子句查询
having是分组的子查询语句,只能写在GROUP BY后面
统计每个班级的人数,并查询班级人数大于2的班级:
SELECT class,count(*) from user GROUP BY class HAVING COUNT(*)>2;
2. 查询每个班级男生人数等于2的班级
SELECT class,gender,count(*) FROM user GROUP BY class,gender HAVING gender=1 and COUNT(*)>=2;
8、排序 ORDER BY
默认升序排序ASC,降序排序DESC
查询所有学员信息 并按照年龄进行降序排序:
SELECT * FROM user ORDER BY age DESC;
查询python班的男生信息,并按照年龄进行降序排序:
SELECT * FROM user WHERE class='python’ and gender=1 ORDER BY age DESC;
按照班级进行升序,并按照年龄进行降序排序:
SELECT * FROM user ORDER BY class ASC,age DESC;
9、分页 LIMIT
LIMIT m,n
m是跳过多少行,n是显示几行
SELECT * FROM `user` LIMIT 2;
SELECT * FROM `user` LIMIT 2,4;
10、嵌套查询
将一条sql查询语句的结果 嵌入到另一个查询语句中使用
- 作为数据源使用
查询年龄大于18岁的男生:
SELECT * FROM (SELECT * FROM user WHERE gender =1) AS user1 WHERE user1.age >18;
- 作为查询条件使用
查询年龄大于19岁的女生:
SELECT * FROM `user` WHERE id in (SELECT id FROM `user` WHERE age>19) AND gender=0;
11、多表查询
①.WHERE关联查询
格式:SELECT * FROM 表1,表2 WHERE 关联条件;
②.连接查询
a.内连接 INNER JOIN
内连接(交集查询):查询结果和where查询的结果一样.
格式:SELECT * FROM 表1 INNER JOIN 表2 ON 关联条件 WHERE 条件
b.左连接 LEFT JOIN
格式:select * from 左表 left join 右表 on 关联条件;
以左表为主表,将左表中所有的数据查询出来向右表的数据进行匹配,如果右表中没有对应的数据,以null进行占位。
查询人数少于三个的班级:
select c.name,count(*) from class c left join stu s on c.id=s.cid group by c.name having count(*)<3;
b.右连接 RIGHT JOIN
格式:select * from 左表 right join 右表 on 关联条件;
以右表为主表,将右表中所有的数据查询出来,向左表中去匹配对应的数据,如果左表没有对应的数据以null占位
查询每个学生所在班级,按照年龄从大到小排列:
select stu.id,stu.name,stu.age,stu.phone,class.name from class right join stu on class.id=stu.cid order by stu.age desc;