SQL数据库的使用:增删改查

一、向数据库插入 修改 删除数据(DML)
语法:insert into 表名称(字段1,字段2,... 字段n) values(值1,值2,... 值n);
  1. 例:insert into user(id,username,password,gender,age,email,salary,state,dept,registTime)values(1,'张三','123','男',28,'zhangsan@163.com',5000,1,'技术部','2015-12-12 12:12:12');//自增长的主键在插入的时候值可以为null


特殊插入方式,如果插入全部值有精简的写法(注意:如果是全字段插入的话 字段名可以省略)
语法:insert into 表名称 values(值1,值2,值3........值n);
  1. insert into user values(null,'王五','123','男',28,'wangwyu@163.com',5000,1,'技术部','2015-12-12 12:12:12');


插入数据的时候只要字段没有设置no null属性就可以不插入
  1. insert into user(username,password,email) values('zhaoliu','12345','zhaoliu@itcast.cn');


如果有默认约束的字段不插入的时候 显示默认值 如果插入是null 就是null
  1. insert into user(username,password,email,age) values('tianqi','12345','tianqi@itcast.cn',null);
二、修改数据
语法:update 表名称 set 字段=值,字段=值.....   [where 条件]
  1. 示例:update user set password = 'abc',gender='女' where id=3;

在执行修改语句的时候一定要加上修改条件(where=?)否则就会进行全数据库内容的修改
三、删除数据
语法:delete from 表名称 [where 条件]
  1. 示例:delete from user where username='tianqi';

注意:如果不写where条件 表中的数据会全部删除掉
问题:drop table user;与delete from user;的区别?
前者将表的数据和结构都删除掉 后者只删除表的数据表的结构还在
问题:delete from user; 与 truncate user;的区别?
前者是逐条删除表中的数据的 并且受事务的控制 ,后者先将表摧毁,然后在重建表的结构,并且不受事务的控制。
四、什么是事物:一个过程中存在n个动作(事件) 要不这些动作同时成功 要不同时失败
  1. start transaction;//开启一个事务
  2. rollback;//回滚 从开启事务到回滚之间做的所有操作都无效

  3. commit;//提交 从开启事务到提交之间做的所有操作有效


五、查询数据(DQL)
  1. 查询全部:select * from user;   //* 代表所有的字段

  2. 查询部分字段:select 字段1,字段2 from 表;

  3. 去重查询: select distinct  字段 from user;

    select distinct 字段1,字段2from 表;
    注意:上面的语句代表dept和username都重复才算是一条重复数据
  4. 运算查询:select 字段1,字段2+1000 from 表;

    注意:null+任何数值都是null,运算查询只能是int类型运算,字符串相加结果为0
    ifnull函数  

    起一个别名 as 别名   as可以省略

  5. 聚合查询(聚合函数):注意:聚合函数忽略null值
    1. count(字段)  计数函数:语法:select count(字段) from 表;

    2. sum()    求和函数:语法:select sum(字段) from 表;

      注意:聚合函数聚合的某一个字段下的所有值
    3. avg()    平均数:
      1. 第一张方式:
        语法:select sum(字段)/count(字段) from 表;(2个字段值相同)

      2. 第二种方式:
        语法:select avg(字段) from 表;

    4. max()   求最大值:
      语法:select max(字段) from 表;

    5. min()    求最小值:
      语法:select min(字段) from 表;

      注意:聚合值不要轻易与某个字段进行搭配,比如这种:select username,sum(salary) from user
  6. 排序查询  :order by 字段,语法:select *from 表 order by 字段1 参数,字段2 参数;
    1. 升序:asc(默认)
    2. 降序:desc

      多个字段查询

  7. 条件查询
    1. 单条件查询
      语法:select * from 表 where 字段>值;

      注意:涉及的符号>  <   !=  .......
    2. 多条件查询
      and 条件。语法:select * from 表 where 字段<值 and 字段=值;

      or条件:语法:select * from 表 where 字段<值 or 字段>值;

      注意:and优先级大于or
    3.  范围查询  between  and
      1. 第一种方式:select * from 表 where 字段>值1 and 字段 <值2;

      2. 第二种方式:select * from 表 here 字段 between 值1 and 值2;(包含值1和值2)

    4. 枚举查询:语法:select * from 表 where id 字段(值1,值2,值3);


    5.  空查询:语法:select * from 表 where 字段 is null;     
      非空查询:语法:select * from 表 where 字段 is not null;     
    6. 模糊查询:语法:select * from 表 where 字段 like '%(某个内容)%';      %代表任意0个或多个字符

      查询指定模糊:语法:select * from 表 where 字段 like '(某个内容)_';     注意:_代表任意一个字符

    7. 分组查询:需求:求各个部门每个月的薪资支出总和
      语法:select 字段,sum(字段) from 字段 group by 字段;
      例子:select dept,sum(salary) from user group by dept;

      having:代表对分组后的数据进行筛选
      例子:select dept,sum(salary) from user group by dept having sum(salary)>15000;

    8. 分页查询:limit
      语法:select  * from 表 limit 0,5; (第0个开始,向下5个)
      例子:select  * from user limit 2,2; 





posted @ 2016-01-01 19:06  蓝蝶岳  阅读(430)  评论(0编辑  收藏  举报