一、添加数据

格式: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条件查询

mysql 数据凭借 mysql数据操作_mysql

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;

mysql 数据凭借 mysql数据操作_sql_02

10、嵌套查询

将一条sql查询语句的结果 嵌入到另一个查询语句中使用

  • 作为数据源使用
查询年龄大于18岁的男生:
SELECT * FROM (SELECT * FROM user WHERE gender =1) AS user1 WHERE user1.age >18;

mysql 数据凭借 mysql数据操作_字段_03

  • 作为查询条件使用
查询年龄大于19岁的女生:
SELECT * FROM `user` WHERE id in (SELECT id FROM `user` WHERE age>19) AND gender=0;

mysql 数据凭借 mysql数据操作_字段_04

11、多表查询

①.WHERE关联查询

格式:SELECT * FROM 表1,表2 WHERE 关联条件;

②.连接查询

a.内连接 INNER JOIN
内连接(交集查询):查询结果和where查询的结果一样.
格式:SELECT * FROM 表1 INNER JOIN 表2 ON 关联条件 WHERE 条件

mysql 数据凭借 mysql数据操作_数据库_05

b.左连接 LEFT JOIN
格式:select * from 左表 left join 右表 on 关联条件;
以左表为主表,将左表中所有的数据查询出来向右表的数据进行匹配,如果右表中没有对应的数据,以null进行占位。

mysql 数据凭借 mysql数据操作_sql_06

查询人数少于三个的班级:
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占位

mysql 数据凭借 mysql数据操作_数据库_07

查询每个学生所在班级,按照年龄从大到小排列:
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;