MySQL常见概念与DQL查询语言

目录

1.数据库常见概念 

2.数据库存储数据的特点

3.SQL语言分类 

4.MySQL服务的启动和停止以及常见命令 

  5.DQL查询语言  

5.1基础查询 

 5.2条件查询

5.3排序查询 

5.4分组查询  

5.5多表连接查询 

内连接 

 外连接

子查询 

5.6分页查询 

 5.7联合查询(union) 


1.数据库常见概念 

 1.DB:数据库,存储数据的容器

 2.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用户创建或管理DB
    常见DBMS:MySQL、Oracle、DB2、SqlServer等

 3.SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有主流数据库软件通用的语言

2.数据库存储数据的特点

1.数据存放到表中,然后再放到库中

2.一个库中可以有多张表,每张表具有唯一的表名来标识自己 

 3.表中有一个或多个列,列又称为“字段”,相当于java中“属性”

 4.表中的每一行数据,相当于java中的“对象”

3.SQL语言分类 

DML
    数据操纵语言,用于添加、删除、修改数据库记录,并检查数据完整性
    关键字:insert, delete, update 等 

DDL
    数据定义语言,用于库和表的创建、修改、删除
    关键字:create, drop,alter等 

TCL
    数据事务语言 

DQL
    数据查询语言,用来查询数据库中表的记录(数据)
    关键字:select, where 等 

 今天主要重点讲解DQL 

 

4.MySQL服务的启动和停止以及常见命令 

MySQL服务的启动和停止: 

方式一:计算机——右击管理——服务——MySQL

方式二:通过管理员身份运行cmd命令提示行
    net start mysql(启动服务)
    ​net stop mysql(停止服务) 

 常见命令:

 1、查看当前所有的数据库
    show databases;
2、打开指定的库
    use 库名
3、查看当前库的所有表
    show tables;
4、查看其他库的所有表
    show tables from 库名;
5、创建表
    create table 表名(  列名  列类型,   列名   列类型,...... );
6、查看表结构
    desc 表名;
7、查看服务器的版本
    方式一:登录到mysql服务端    select version();
    方式二:没有登录到mysql服务端   mysql --version 或者 mysql --V
 

  5.DQL查询语言  

5.1基础查询 

1. 查询表中所有记录
    select * from 表名;
2. 基础查询
    1. 多个字段的查询
        select 字段名1,字段名2... from 表名;
         注意:
             如果查询所有字段,则可以使用*来替代字段列表。
    2. 去除重复:
         distinct

    3. 计算列
         一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
         ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
             表达式1:哪个字段需要判断是否为null
             如果该字段为null后的替换值。

   4. 起别名:
         as(可以省略)列名
例如有一个student表,里面的字段有name  age  score,我要查询他的名字和年龄,并且列名就叫名字和年龄:

       select name as 姓名,age as 年龄    from student;

 5.2条件查询

概念:

语法格式
    select  查询列表  from  表名  where  筛选条件;
执行顺序
    先表名,再条件,最后查询列表  

分类: 
    一、按条件表达式筛选
        简单条件运算符:> <  =  !=  <>(不等于)  >=  <=
    二、按逻辑表达式筛选
        逻辑运算符:&& || !  and or not
    三、模糊查询
        like、between and、in、is null、is not null
            like
                    一般和通配符搭配使用
                    通配符:
                        %  (百分号)任意多个字符,包含0个字符
                        _  (下划线)任意单个字符
         
            between and
                1、使用between and可以提高语句的简洁度
                2、包含临界值
                3、两个临界值不要调换顺序
            in
                1、使用 in 可以提高语句简洁度
                2、in 列表的值类型必须一致或兼容
                3、in 列表中不支持通配符的使用
            is null
                =或者<>(不等于)不能用于判断null值
                is null 或is not null可以判断null值
                补充:安全等于:<=>
            <=>
                        既可以判断null值,也可以判断普通类型的数值
                        缺点:可读性不高,容易等于与不等于弄混
                建议用is null 

5.3排序查询 

语法
     select
        要查询的东西
    from
        表
    where 
        条件
    order by 排序的字段|表达式|函数|别名 【asc|desc】
    执行顺序:先表,再条件,再查询东西,再排序


排序特点:
    1、asc是升序,desc是降序,如果不写默认升序
    2、order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
    3、order by 子句一般是放在查询语句的最后面,limit 子句除外。

5.4分组查询  

语法
        select 分组函数,字段(要求出现在group by的后面)                     

        from 表                                                                                        

      【where 筛选条件】                                      

        group by 分组的字段                                                        

      【order by 子句】
    注意:  where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
   

5.5多表连接查询 

内连接 

        select 字段列表 
        from 表名1 
        [inner] join 表名2 on 条件
        where 筛选条件
        group by 分组条件
        having 分组后的筛选条件
        order by 排序字段

 外连接

左外连接:

        select 字段列表 
        from 表1 
        left [outer] join 表2 on 条件
        ...

右外连接:

        select 字段列表 
        from 表1 
        right [outer] join 表2 on 条件
        ... 

子查询 

1、子查询都放在小括号内

2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧

  •     select后面

        仅支持标量子查询(单行子查询):结果集为一行一列

  •     from后面

        表子查询:结果集为多行多列

  •     where或having后面

        标量子查询
        列子查询
        行子查询

  •     exists后面

        标量子,列子,行子,表子查询

3、子查询优先于主查询执行,主查询使用了子查询的执行结果 

4、子查询根据查询结果的行数不同分为以下两类:

  •      单行子查询

                    结果集只有一行
            一般搭配单行操作符使用:> < = <> >= <= 
            非法使用子查询的情况:
                   a、子查询的结果为一组值
                b、子查询的结果为空

  •      多行子查询

                    结果集有多行
            一般搭配多行操作符使用:any、all、in、not in
            in: 属于子查询结果中的任意一个就行
            any和all往往可以用其他查询代替 

5.6分页查询 

limit 起始的条目索引,条目数;
    特点:
        1.起始条目索引从0开始
        2.limit子句放在查询语句的最后
        3.公式:select * from  表 limit (page-1)*sizePerPage,sizePerPage 

 5.7联合查询(union) 


    语法:
            select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
            select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
            select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
             .....
            select 字段|常量|表达式|函数 from 表 where 条件


     特点:
        1、多条查询语句的查询的列数必须是一致的
        2、多条查询语句的查询的列的类型几乎相同
        3、union代表去重,union all代表不去重 

上一篇:MySQL学习(三)DQL/DML/DDL/DCL 介绍


下一篇:SQL语言