Java学Web——day08【mysql DML的操作】

【前言】

   心里很乱,开车不稳了。无关于学习。

【正文】


    今天get到一个新名词:CQUD:增删改查的专有名词。CRUD:(Create)生成、读取查询(Retrieve)、更新(Update)和删除(Delete)。以后关于增删改查都会用CQUD代替。


一、关于DDL、DML、DCL、DQL:
    1.DDL:数据定义语言:主要用于对数据结构上的操作,对数据库,表,字段的CQUD操作。通常写SQL语言都会出现database,table等关键字。
补充几个操作字段的SQL语句:


  -添加一个字段:(用add):[alter table 表名 add 字段名 数据类型 约束]:
  -修改字段名:(用change):[alter table 表明 change 旧字段名 新字段名 类型 约束]:alter table exam change score english int;
  
  


    2.DML:数据操作语言: 用来对表里面的数据进行增删改查的操作。在DML中,写SQL语句经常出现以下几个错误:
    -SQL语句不会出现table这个关键字的,要操作表直接写表名就好。
    
    -对于是字符串类型的数据,要添加单引号‘'
    
    添加:[insert into ]
    修改:[update 表名 set 字段名]update exam set name = '李4' where name = '李四';
    删除:[delete from 表名]
    
二、条件查询:
  使用 where 子句,where 子句后面不允许跟聚合函数判断
  1.and:并列 —— 查询名字是李四并且英语成绩大于90的学生信息:select * from exam where name = "李四" and english>90;
  
  2.or:或者
  
  3.not:非 


    1).查询 用户不是姓张的
    select * from exam where name not like '张%';
    2). 查询 密码不是空的
    select * from user where password is not null;


三、模糊查询 like
  在like子句中可以使用_或者%作为占位符,_只能代表一个字符,而%可以代表任意多个字符
   
  like '李_':名字必须是两个字
  like '李%':名字可以多个字
  like '%四' 以四结尾的
  like '%王%' 含有王的


四、范围查询in
  使用in代表的是一个范围检索


  假设我们现在查询英语成绩是:69,75,89的学生的信息;
  select * from exam where english in(69,75,89);


五、别名查询 as
 可以给查询出的结果赋予一个临时的字段名:其中as可以省略
select dname as 部门 from  dpet;
select dname 部门 from dpet; 


六、升序降序排序:
 
 asc 升序 desc 降序,默认是升序。一般放在一条SQL语句的最后面。对结果进行排序
 1)查询所有的员工,以工资的升序来排序
    select * from emp order by sal asc;
 
 2)按照工资降序排列,在工资相同情况下,按照入职日期排序  
    select * from emp order by sal desc,hiredate asc;




七、复杂查询:


1.聚合函数:
总和:sum() 
平均值:avg() 
统计个数:count() 
最大值:max() 
如果是空,用什么代替:ifnull()--比如:ifnull(sal,0):ifnull()比如如果工资如果为空,空不能运算。就用0代替
 最小值: min()


2.
工资加奖金的总和:
select sum(sal+comn) from emp;//会出现问题:原因是字段为空不能运算
改进:
select sum(sal+ifnull(count,0)) from emp;


3.求每个人的平均成绩。
select name,avg(chinese+english+math) from exam group by name; 


4.查询英语成绩信息(不显示重复的值)
select distinct english from  exam;


八、分组查询 group by 和having 关键字


   当一个公司有若干部门,求每个部门的人数总和。这样的需求时,就可以把这个表按照部门来分割成若干个表,然后分别统计出每个表的人数。
    select job,count(*) from emp group by job;




进行分组后的条件的过滤
使用关键字 having 
注意:where的子句不允许跟着聚合函数。


按商品名称统计,花费总金额在5000以上的商品;
select product,sum(price) from orderitem group by product having sum(price)>5000;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值