mysql数据库基本操作注意点

对于一个初学数据库的人来说,最主要的还是要掌握DQL数据库查询语言和DML数据操作语言。

这里主要对DQL进行简单的总结,实质就是学习的笔记。

数据查询语言基本的语句结构为select * from table_name;

1. 条件语句where关建字,支持多种运算符

  • 比较运算符 
    • > < = >= <= (!= <>)其中<> 与!= 均是不等于的意思
  • 逻辑运算符
    • and 与
    • or   或
    • not 非
  • 模糊查询
    • like
      • _匹配任意一个字符
        • select * from table_name where name like '周_'    #查找table_name表中name字段为两个字,且第一个字为周的信息
      • %匹配任意多个字符
        • select * from table_name where name like '周%'  # 查找table_name表中name字段为多个字,且第一个字为周的信息
  • 范围查询
    • in 表示在一个非连续的范围内 与  not  in 不非连续的范围内
      • select * from table_name where age in (18,22,24,26)  #查找table_name表中age字段是18或22或24或26的信息
    • between and  表示在一个连续的范围内(等价于18<=age<=38)与 not between and
      • select * from table_name where age between 18 and 38  #查找table_name表中age字段是在18到38之间的所有信息
  • 空判断  
    • is null  查询为空的内容(where语句中)  
      •  select * from student where height is null; # 判断身高字段为空的内容
    •  is not null 查询不为空的内容(where语句中)  
      • select * from student where height is not null;

注:
        优先级由高到低的顺序为:
            小括号,not,比较运算符,逻辑运算符
           and比or先运算,如果同时出现并希望先算or,需要结合()使用

2. 分页查询(limit)

select * from 表名 limit start=0,count
        1. limit 3 :从第一条开始取3条
            注:start默认为0,即第一条开始
        2. limit 1,3: 从第2条后边开始取3条
        n个页面,每个页面显示m条数据
        select * from 表名 limit (n-1)*m,m    

3. 聚合函数:不包含字段为空的行数
        
        概念:
            聚合函数又称组函数,操作的对象就是一组数据,默认情况下聚合函数会对当前所在表当作一个组进行统计。

        聚合函数有以下几个特点:
            * 每个组函数接收一个参数(字段名或者表达式)
            * 统计结果中默认忽略字段为NULL的记录 要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换。

            * 不允许出现嵌套 比如sum(max(xx))
            1. count(*) 表示计算总行数,括号中写星与列名,结果是相同的
                    注:count计算的是内容不为空的行数
            2. max(列) 表示求此列的最大值
                select max(age) from students;
            3. min(列) 表示求此列的最小值
                select min(height) from students;
            4. sum(列) 表示求此列的和
                select sum(age)/count(age) from students;
            5. avg(列) 表示求此列的平均值
                select avg(age) from students;
            6. round默认保留0位小数 round(数值,保留的位数)
                select round(avg(age),1) from students;
                注: round不是组函数
            注:聚合函数操作的对象是一组数据,可以是某个表数据,也可以是表的分组数据(group by),但不能是拼接的数据(join).
 4. 分组函数,对于空的字段也会进行分组
        一旦对表中数据进行分组,那么分组的结果将不再是之前的二维表结构,而是多维结构,就不能直接使用SQL语句显示全部数据,即不能直接使用select *。
        使用特点:
            1. group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
            2. group by可用于单个字段分组,也可用于多个字段分组
        group  对照看看正则
        1. select gender(这里只能写被分组的字段) from  students group gender;
        
        2. select gender,group_concat(name) from students group by gender
            注:因为分组之后的结果不再是普通的二维结构了,不能直接显示全部,如果需要查看每个分组中每个成员的某一个字段group_concat()可以将同组成员的某一个字段进行拼接在一个???显示
        
        3. select gender,group_concat(name),count(*) from students group by gender
            注:在没有分组之前,聚合函数是整个表,如果结合了group by之后,统计的就是每一个小的分组
                按照性别gender分组,前面可以不写gender,写其他的字段需要加group_concat(字段名)
        4. having 判断,筛选:对分组的结果进行条件筛选
            select gender,group_concat(name),count(*) from students group by gender having count(*) <3;
            例如:通过身高和年龄进行分组,然后筛选性别为男的字段,注意gender也需要加group_concat(gender)
                select height,age,group_concat(name) from students group by height,age having group_concat(gender) ="男";
        注:1. where对表中记录进行条件的筛选
               having 对分组的结果进行条件筛选
            
            2. 多个字段的分组,要同时满足多个字段才会分为一组
                select height,age,group_concat(name) from students group by height,age;
        5. 在最后一行加一个汇总的结果group by 后加 with rollup
            1. select gender,group_concat(name),count(*) from students group by gender with rollup;

 5. 连接查询
            内连接:只取两个表有关联的数据
            外连接;内连接+外部数据
                右(外)连接: 内连接 + 外部数据来自于左表数据,右表于左表中不存在的数据使用null填充
                左(外)连接: 内连接 + 外部数据来自于右表数据,左表于右表中不存在的数据使用null填充
            笛卡尔积(交叉连接):左表每一行分别拼接右表每一行
            
            on 条件:对笛卡尔积的结果中的数据进行过滤
            内连接:
            select * from hero jion gongfu on hero.kongfuid = gongfu.id;
            左链接:
            select * from hero left jion gongfu on hero.kongfuid = gongfu.id;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值