一、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