MySQL基础

  1. SQL通用语法

    • SQL语句和以携程单行或多行,以分号结尾

    • MySQL数据库的SQL语句不区分大小写,关键字一般大写(本文中个人习惯使用小写)。

    • 注释

      #单行注释
      -- 单行注释, -- 后有空格
      /* 多行注释 */
  2. SQL分类

    • DDL:数据定义语言。定义数据库对象:数据库、表、列
    • DML:数据操作语言。增删改
    • DQL:数据查询语言。查询记录
    • DCL:数据控制语言。访问权限、安全级别、创建用户...
  3. DDL

    • DDL操作数据库

      #查询全部数据库
      show databases;
      #创建数据库
      create database 数据库名称;
      create database if not exists 数据库名称;
      #删除数据库
      drop database 数据库名称;
      drop databases if not exists 数据库名称;
      #使用数据库
      use 数据库名称;
      #查看当前使用中的数据库,函数调用
      select database();
    • DDL操作表

      #查询数据库下所有表
      show tables;
      #查询表结构
      desc 表名称;
      #创建表
      create table 表名 (
      字段名 数据类型,
      字段名 数据类型,
      ...
      字段名 数据类型 #最后一行末尾不加逗号
      );
      #删除表
      dorp table 表名;
      drop table if exists 表名;
      #修改表名
      alter table 表名 rename to 新表名;
      #添加一列
      alter table 表名 add 列名 数据类型;
      #修改数据类型
      alter table 表明 modify 列名 新数据类型;
      #同时修改列名和数据类型
      alter table 表名 change 列名 新列名 新数据类型;
      #删除列
      alter table 表明 drop 列名;
  4. DML

    #给指定列添加数据
    insert into 表名(列名1,列名2,...) values(值1,值2,...);
    #添加一条完整数据
    insert into 表名(值1,值2...);
    #批量添加数据
    insert into 表名(列名1,列名2...) values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
    insert into 表名 values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
    #修改数据
    update 表名 set 列名1=1,列名2=2,… [where 条件] ;
    #删除数据
    delete from 表名 [where 条件];
  5. DQL

    • 查询完整语法

      select
      字段列表
      from
      表名列表
      where
      条件列表
      group by
      分组字段
      having
      分组后条件
      order by
      排序字段
      limit
      分页限定
    • 基础查询

      #查询一列
      select 字段列表 from 表名; -- 使用 * 作为字段列表查询全部数据
      #去除重复记录
      select distinct 字段列表 from 表名;
      #别名
      as -- 可省略
      #举例
      select student_name as name,student_gender as gender from student;
      select name,gender,score from student; -- 起别名之后的sql中可直接使用别名代替原字段名
    • 条件查询

      select 字段名 from 表名 where 条件列表;
      • 条件运算符

        符号 功能
        > 大于
        < 小于
        >= 大于等于
        <= 小于等于
        = 等于
        <> 或 != 不等于
        between...and... 再某个范围之内,闭区间
        in(字段值列表) 包含,用于代替多个值比较的逻辑或
        like 含占位符的字段值 模糊查询,详见【模糊查询】
        is null 为空
        is not null 非空
        and 或 && 逻辑且
        or 或 || 逻辑或
        not 或者 ! 逻辑非
    • 模糊查询

      /*
      占位符:
      _ : 代表任意单个字符
      % : 代表任意个数字符
      */
      #模糊查询
      select 字段列表 from 表名 where 字段名 like 含占位符的字段值;
    • 排序查询

      /*
      ASC : 升序排序(默认)
      DESC : 降序排序
      */
      #排序查询
      select 字段列表 from 表名 order by 排序字段1 [排序方式1],排序字段2 [排序方式2];
    • 聚合函数

      • 聚合函数分类

        函数名 功能
        count() 统计数据条数
        max() 最大值
        min() 最小值
        sum() 求和
        avg() 平均值
      • 聚合函数语法

        #聚合函数,null不参与聚合函数运算
        select 聚合函数名(字段名) from 表名;
    • 分组查询

      分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

      #分组查询
      select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
      ##举例
      #查询男同学和女同学各自的数学平均分
      select sex, avg(math) from stu group by sex;
      select name, sex, avg(math) from stu group by sex; -- 这里查询name字段就没有任何意义
      #查询男同学和女同学各自的数学平均分,以及各自人数
      select sex, avg(math),count(*) from stu group by sex;
      #查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
      select sex, avg(math),count(*) from stu where math > 70 group by sex;
      #查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
      select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;
    • 分页查询

      分页查询的索引从0开始

      起始索引 = (当前页码 - 1) * 每页显示的条数

      #分页查询
      select 字段列表 from 表名 limit 起始索引,查询条目数量;
      ##举例
      #从0开始查询,查询3条数据
      select * from stu limit 0 , 3;
      #每页显示3条数据,查询第1页数据
      select * from stu limit 0 , 3;
      #每页显示3条数据,查询第2页数据
      select * from stu limit 3 , 3;
      #每页显示3条数据,查询第3页数据
      select * from stu limit 6 , 3;
  6. MySQL数据类型整合

    • 数值类型

      数据类型 大小 描述 备注 示例
      TINYINT 1 byte 小整数值
      SMALLINT 2 bytes 大整数值
      MEDIUMINT 3 bytes 大整数值
      INT或INTEGER 4 bytes 大整数值 age int
      BIGINT 8 bytes 极大整数值
      FLOAT 4 bytes 单精度浮点数值
      DOUBLE 8 bytes 双精度浮点数值 score double(总长度,小数点后保留的位数) 0~100 2 score double(5,2)
      DECIMAL 小数值
    • 日期和时间类型

      数据类型 大小 描述 备注 示例
      DATE 3 日期值 birthday date
      TIME 3 时间值或持续时间
      YEAR 1 年份值
      DATETIME 8 混合日期和时间值
      TIMESTAMP 4 混合日期和时间值,时间戳
    • 字符串类型

      数据类型 大小 描述 备注 示例
      CHAR 0-255 bytes 定长字符串 name char(10) 10个字符空间 存储的性能高 浪费空间 “张三”
      VARCHAR 0-65535 bytes 变长字符串 name varchar(10) 2个字符空间 存储性能低 节约空间 “张三”
      TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
      TINYTEXT 0-255 bytes 短文本字符串
      BLOB 0-65 535 bytes 二进制形式的长文本数据
      TEXT 0-65 535 bytes 长文本数据
      MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
      MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
      LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
      LONGTEXT 0-4 294 967 295 bytes 极大文本数据
posted @   Dandelion_000  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示