0%

SQL语法笔记

MySQL语法笔记

DDL(操作数据库)

数据库 操作

  • 创建数据库

    1
    create db_name;
  • 判断数据库或表是否存在

    1
    if [not] exists db_name/tb_name
  • 删除数据库

    1
    drop db_name;
  • 使用(进入)数据库

    1
    use db_name;
  • 查看当前使用的数据库

    1
    select database();

表操作

  • 查询当前数据库中的表

    1
    show tables
  • 查看表

    1
    desc func
  • 创建表

    1
    2
    3
    4
    5
    6
    create table db_name (
    column_name_1 type_1,
    column_name_2 type_2,
    ...
    column_name type # 注意最后一个字段后不能加逗号
    );
  • 删除表

    1
    drop tb_name
  • 修改表名

    1
    alter table tb_name rename to new_tb_name;
  • 添加一列

    1
    alter table tb_name add column_name type;
  • 修改数据类型

    1
    alter table tb_name modify column_name new_type;
  • 同时修改列名和数据类型

    1
    alter table tb_name change column_name new_type;
  • 删除列

    1
    alter table tb_name drop column_name;

常用数据类型

  • 大整数 INT
  • 极大整数 BIGINT
  • 单精度浮点数 FLOAT
  • 双精度浮点数 DOUBLE double(总长度, 小数点后保留位数)
  • 日期 DATE
  • 时间或持续时间 TIME
  • 年份 YEAR
  • 混合日期和时间 DATETIME
  • 定长字符串 CHAR char(字符串长度) 存储性能高,浪费空间
  • 变长字符串 VARCHAR varchar(最大字符串长度) 存储性能低,节约空间

DML(对表中数据增删改)

添加数据

  • 给指定列添加数据

    1
    insert into tb_name(column_name_1, column_name_2, ...) values(value_1, value_2, ...);
  • 给所有列添加数据

    1
    insert into tb_name values(value_1, value_2, ...);  # 给所有列添加数据时列名可省略,但推荐列名不省略
  • 批量添加

    1
    insert into tb_name(column_name_1, column_name_2, ...) values(value_1_1, value_1_2, ...), (value_2_1, value_2_2, ...), ...;

修改数据

  • 修改表数据

    1
    update tb_name set column_name_1 = value_1,  [where 条件] # 如果update语句后没有加where条件,则会将表中所有数据全部修改

删除数据

  • 删除表数据

    1
    delete from tb_name [where 条件];

DQL(查询数据)

基本查询语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组后条件
order by
排序字段
limit
分页字段

基础查询

  • 查询指定列数据

    1
    select column_name_1, column_name_2, ... from tb_name;
  • 查询全部数据

    1
    select * from tb_name; # 不建议使用星号
  • 去重查询数据

    1
    select distinct column_name from tb_name;
  • 给列名起别名

    1
    column_name [as] other_name # as可省略

条件查询

  • 基础语法

    1
    select column_name from tb_name where 条件;
  • 模糊查询

    1
    2
    3
    select ... from ... where column_name like '...'
    % # 匹配任意个字符
    _ # 匹配单个字符

排序查询

  • 基础语法

    1
    select key_list from tb_name order by order_key_name_1 [order_method_1], order_key_name_2 [order_method_2], ... ;
  • 排序方法

    • ASC 升序排列(不写排序方式则默认升序)
    • DESC 降序排列

分组查询

  • 聚合函数

    • 概念:将一列数据作为一个整体,进行纵向计算。
    • 分类:
      • count 计数
      • max 求最大值
      • min 求最小值
      • sum 求和
      • avg 求平均值
    • null值不参与聚合函数运算
  • 基本语法

    1
    select key_list from tb_name [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
  • 执行顺序

    where -> 聚合函数 -> having

分页查询

  • 基本语法

    1
    select key_list from tb_name limit 起始索引 , 查询条目数;  # MySQL专有语法(方言)

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

约束

1. 概念

约束时作用于表上的规则,用于限制加入表的数据

2. 约束的分类

  • primary key 主键约束
  • not null 非空约束
  • unique 唯一约束
  • not null unique 主键约束(非空且唯一)
  • auto_increment 主键且自增长(如id)
  • default + 默认值 默认约束

3. 外键约束

  • 作用:让两个表的的数据建立链接,保证数据的一致性和完整性。
  • 基本语法:

    • 添加约束

      1
      2
      3
      4
      5
      create table tb_name (
      column_name type,
      ...
      [constraint] [外键名称] foreign key (外键列名) references 主表 (主表列名)
      );
    • 删除约束

      1
      alter table tb_name drop foreign key 外键名称;