Mysql应用(2)

一、 DML

1.添加数据:insert into 表名(列名1.列名2) values(值1,值2.);
注意:
1.列名和值要一一对应
2.如果表名后面不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2);
3.除了数字类型,其他类型都要引号引起来,单双号通用
2.删除数据: delete from 表名 where 条件;
注意 :如果不加后面条件,会删除所有数据;
如果要删除所有数据,推荐使用:truncate table 表名;
//先删表,然后在创建一个一摸一样的表。**********
删除列:alter table 表名 drop 字段名;
增加列:alter table 表名 add 字段名 属性 after 表名;

3.修改数据; update 表名 set 列名1=值1 where 条件;
注意:
1.如果不加修饰条件,会改变所有的值
备份表:create table 新表名as select*from 表名;

二、DQL

查询表中的记录
select * from 表名;

一.查询语法
select 字段列表
from 表名列表
where 条件列表
order by 排序
group by 分组字段
having 分组后的条件
limit 分页限定

1.基础查询
1.多个字段的查询
select 字段名1,字段2. from 表名;
* 注意 :如果查询所有字段,则可以使用*来替代所有字段列表
2.去除重复
select distinct 列名 from 表名;
* distinct (放在所有字段的前面)
3.计算列
*一般可以用四则运算计算一些列的值。(一般值进行数值型的计算)
*ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
*表达式1:哪个字段需要判断是否为null
*表达式2是如果该字段为null后的替换值
4.起别名
select 列名 as 别名 from 表名;
(as也可以省略)

2.条件查询
1.where子句后跟条件
2.运算符
is null /is not null/or 或者 || /and 或者&& /between …and/in( 集合):查询
信息,in(25,32,64);查寻几个数字,如果有,就可以展现出来
3.模糊查询 like
占位符:
:单个任意字符(占位符)
%:多个任意字符
selectfrom 表名 where 列名 like “马%”, //查询姓马的人名
select
from 表名 where 列名 like “化%",//查询姓名第二个字是化的人
selectfrom 表名 where 列名 like "
_”,//查询姓名三个字的人
select
from 表名 where 列名 like"%德%",//查询姓名中包含德的人

二、查询语句

1…排序查询
语法: order by 排序字段1 排序方式1,排序字段2 排序方式2
排序方式: asc:升序,默认的 / desc :降序
注意: (只有第一条件一样的时候,才会进行第二排序)
SELECT*FROM school ORDER BY english DESC;

2.聚合函数:将一列数据作为一个整体,进行纵向的计算
**注意:聚合函数的计算,都会排除非空的(null值)
1.count: 计算个数
1.选择不包含非空的列进行计算:主键
2. ifnull函数
3.用*可以解决
2.max:计算最小值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均值 SELECT AVG(english) FROM school;

数学函数*
rand()随机数
round() 四舍五入 round(5.203,1),结果就是5.2
sign()判断数字是正负数

3.分组查询
1.语法:group by 分组字段;
2.注意:
1.分组之后查询的字段:select (分组字段或者聚合函数)from…//只能是这两个,其他没意义
2.where和having的区别?
1.where在分组前进行限定,如果不满足条件,则不参与分组。
having在 分组后进行限定,如果不满足,则不会被查询
2.where后不可以跟聚合函数,having可以进行聚合函数的判断
select sex,avg(math) from student where math>70 group by sex having count(id)>2;

4.分页查询
1.语法 : limit 开始的索引,每页查询的条数;
2.公式: 开始的索引=(当前的页码-1)*每页显示的条数

3.limit是一个mysql方言 。
    ***除此以外,limit还可以做限制select 返回结果的行数
            SELECT * FROM `result` LIMIT 5       #返回前5条记录
            SELECT * FROM `result` LIMIT 5,10   #返回6-15条记录

多表查询:
1.内连接查询:两个表符合关联条件的数据进行展示
1.隐式内连接:使用where来消除无用数据
select a.,b. from a ,b where a.id=b.id
2.显式内连接:语法:select 字段列表() from 表名1 inner join 表名2 on 条件;
select a.
,b.* from a [inner]join b on a.id=b.id
2.外连接查询
1.左外连接:select 字段列表 from 表1 left join 表2 on 条件;
查询的是左表所有数据以及交集部分 //以left join的左边为主表,关联右表的数据
2.右外连接:select 字段列表 from 表1 right join 表2 on 条件;
查询的是右表所有数据以及交集部分//以right join的右边为主表,关联左表的数据
3.全连接:
左外连接
union
右外连接
4.自连接:自己关联自己
case 字段 when 值 then 操作 else 操作 end

      union:联合并去重
      union all:联合不去重

    3.子查询:查询中嵌套查询
            select *from 表名 where 列名= select 查询内容 from 表名;

        子查询的不同情况:
            1.子查询的结果是单行单列的;
                    *子查询可以作为条件,使用运算符去判断。
                        例题:查询员工工资小于平均工资的人:
                                select *from emp where emp.salary <(select avg(salary) from emp);
            2.子查询的结果是多行单列的;
            3.子查询的结果是多行多列的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值