一、DML语言
添加数据 INSERT
insert into 表名(列名1,列名2,列名3...)values (输入值1,输入值2,输入值3...)
insert into 表名 values(输入值1,输入值2,输入值3...) //默认所有的列依次添加数据
insert into 表名 values (null, '张三','admin',13588889999) //主键自增可以null
insert into 表名 values
(1001,'张三','admin'),
(1002,'李四','admin'),
(1003,'王五','admin') //一次插入多行语句
复制数据(插入的数据来自另一张表):
insert into 表名 (要插入的列名)select 数据来源列名 from 数据来源表名
修改数据 UPDATE
update 表名 set 列名='修改值' //全表都被修改
update 表名 set 列名='修改值' where 过滤条件 //只修改条件内的内容
update 表名 set 列名1=' ',列名2=' ' where 过滤条件 //一次修改多个列值
删除列中的内容:
update 表名 set 列名=null
注意:
①mysql中,' '和null不是一回事:' '表示一个字符,null表示空,没有被使用
②判断某列是否为空,不能用 列名=null来判断,正确格式为:is null / is not null
修改数据示例:
update users set u_age=u_age+10 where u_id<100 //列名可以进行正常的数学运算
常用的数学运算符号:'<','>','!=','<>',and,or
删除数据 DELETE
delete from 表名 //删除表中的所有内容
TRUNCATE 表名 //格式化表 //注意二者区别
delete from 表名 where 过滤条件 //删除符合过滤条件的数据
注意表中有外键约束的时候,该列数据不能删除
二、DQL语言
查询操作分类:
1.投影操作——指定显示列
2.选择操作——指定显示行
3.排序操作——指定查询结果顺序显示
投影操作 SELECT
select * from 表名 //*代表查询所有信息 效率低
select 列名1,列名2,列名3,... from 表名
在投影操作中可以给表取个别名,方便书写:
select i.nickname,i.email from userinfo as i //as可以省略不写
select nickname as 昵称 from userinfo //此处as同样可以省略
在投影操作中同样可以进行动态运算:
select i.age + 20 from userinfo i
拼接 CONCAT
select concat (i.nickname,'电话号码为',i.phone) from userinfo i
去重 DISTINCT
select distinct i.nickname,i.age,i.email from userinfo i
//注意此处去重关键字 DISTINCT 只会影响离它最近的列 i.age
限定查询行数(分页) LIMIT
select * from userinfo limit 0,10
//这里0是代表从第一行开始,10是代表每页显示10行(注意不是第10行的意思)
//分页显示的优点:1.控制显示的数据 2.优化代码
注意:以上所有的投影操作中,对表和列取的别名,对列中显示数据进行动态运算,拼接、去重等等,所有的操作都只会影响最后查询显示结果,对原有的数据没有任何影响
选择操作 SELECT WHERE
select * from userinfo where user_id = 1 //查询并显示id为1的这一行
select nickname from userinfo where age>18 and age<25 and gender=0
//查询并显示年龄在18到25岁之间的女性
上面这条年龄范围的查询可以使用关键字:BETWEEN
select nickname from userinfo where gender =0 and age between 18 and 25
定义集合关系:IN / NOT IN
select nickname from userinfo where user_id in(1,3,5,7)
select nickname from userinfo where user_id not in(2,4,6,8)
//查询表userinfo中 id为1,3,5,7(id不为2,4,6,8)的nickname
模糊插叙 LIKE
select * from userinfo where nickname like 'wang%'
//查询表userinfo中 昵称是以wang开头的所有用户资料
排序操作 SELECT ORDER BY
select * from userinfo order by age/age desc //加desc表示降序排列
三、聚合函数
COUNT 统计有效行数
select count (user_pwd) from emp //统计包含user_pwd的有效行数
SUM 求和
select sum(sal) from emp //统计工资列的总和
AVG 求平均值
select afg(sal) from emp //统计平均工资
MAX/MIN 统计最大最小值
select max(sal) from emp //统计最高工资
四、数据分组
关键字:GROUP BY
注意:一般数据分组与聚合函数配合一起使用
select count(*),deptNo from emp group by deptNo
//根据部门编号分组数据,并投影显示各部门的人数
如果在分组时需要使用条件过滤,使用关键字:HAVING
(分组之前使用 where 分组之后只能使用 having)
select count(*),deptNo from emp group by deptNo having count(*)<4
//根据部门编号分组数据,并显示部门人数小于4个人的部门情况
分组依据可以有多个,例如:
select deptNo,job,count(*) from emp group by deptNo,job
//按照部门编号及岗位情况进行分组,并统计人数(即有效行数)
SQL语句执行顺序如下
1.from
2.where
3.group by
4.select
5.having
6.order by
7.limit