我是活雷锋

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
一、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

 

posted on 2017-01-07 13:28  我是活雷锋  阅读(180)  评论(0编辑  收藏  举报