01_02_mysql02_DDL

创建和管理

创建和管理数据库

创建数据库

  • 方式1:创建数据库

    sql 复制代码
    CREATE DATABASE 数据库名;
  • 方式2:创建数据库并指定字符集

    sql 复制代码
    CREATE DATABASE 数据库名 CHARACTER SET 字符集;
  • 方式3:判断数据库是否已经存在,不存在则创建数据库( 推荐 )

    sql 复制代码
    CREATE DATABASE IF NOT EXISTS 数据库名;

如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建数据库。

注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删旧库完成的。

使用数据库

  • 查看当前所有的数据库

    sql 复制代码
    SHOW DATABASES; #有一个S,代表多个数据库
  • 查看当前正在使用的数据库

    sql 复制代码
    SELECT DATABASE(); #使用的一个 mysql 中的全局函数
  • 查看指定库下所有的表

    sql 复制代码
    SHOW TABLES FROM 数据库名;
  • 查看数据库的创建信息

    sql 复制代码
    SHOW CREATE DATABASE 数据库名;
    # 或者:
    SHOW CREATE DATABASE 数据库名\G
  • 使用/切换数据库

    sql 复制代码
    USE 数据库名;

修改数据库

  • 更改数据库字符集

    sql 复制代码
    ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如:gbk、utf8等

删除数据库

  • 方式1:删除指定的数据库

    sql 复制代码
    DROP DATABASE 数据库名;
  • 方式2:删除指定的数据库( 推荐 )

    sql 复制代码
    DROP DATABASE IF EXISTS 数据库名;

创建表

创建方式1
  • 必须具备:

    • CREATE TABLE权限
    • 存储空间
  • 语法格式:

    sql 复制代码
    CREATE TABLE [IF NOT EXISTS] 表名(
    字段1, 数据类型 [约束条件] [默认值],
    字段2, 数据类型 [约束条件] [默认值],
    字段3, 数据类型 [约束条件] [默认值],
    ......
    [表约束条件]
    );
  • 必须指定:

    • 表名
    • 列名(或字段名),数据类型,长度
  • 可选指定:

    • 约束条件
    • 默认值
  • 创建表举例:

    sql 复制代码
    -- 创建表
    CREATE TABLE emp (
    -- int类型
    emp_id INT,
    -- 最多保存20个中英文字符
    emp_name VARCHAR(20),
    -- 总位数不超过15位
    salary DOUBLE,
    -- 日期类型
    birthday DATE
    );
  • 查看表结构

    sql 复制代码
    DESC emp;

在MySQL 8.x版本中,不再推荐为INT类型指定显示长度,并在未来的版本中可能去掉这样的语法。

创建方式2
  • 使用 AS subquery 选项,将创建表和插入数据结合起来
  • 指定的列和子查询中的列要一一对应
  • 通过列名和默认值定义列
sql 复制代码
CREATE TABLE emp1 AS SELECT * FROM employees;

CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2; -- 创建的emp2是空表

CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM employees
WHERE department_id = 80;

DESCRIBE dept80;

查询语句中字段的别名,可以作为新创建的表的字段的名称。

此时的查询语句可以结构比较丰富

查看数据表结构
  • 在MySQL中创建好数据表之后,可以查看数据表的结构。MySQL支持使用 DESCRIBE/DESC 语句查看数据表结构,也支持使用 SHOW CREATE TABLE 语句查看数据表结构。

    sql 复制代码
    SHOW CREATE TABLE 表名\G
  • 使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。

修改表

修改表指的是修改数据库中已经存在的数据表的结构。
使用 ALTER TABLE 语句可以实现:

  • 向已有的表中添加列
  • 修改现有表中的列
  • 删除现有表中的列
  • 重命名现有表中的列
追加一个列
sql 复制代码
ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
修改一个列
sql 复制代码
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名2】;
  • 可以修改列的数据类型,长度、默认值和位置
  • 对默认值的修改只影响今后对表的修改
  • 此外,还可以通过此种方式修改列的约束
重命名一个列
sql 复制代码
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
删除一个列
sql 复制代码
ALTER TABLE 表名 DROP 【COLUMN】字段名;

重命名表

  • 方式一:使用RENAME

    sql 复制代码
    RENAME TABLE '旧表名' TO '新表名';
  • 方式二:

    sql 复制代码
    ALTER TABLE '旧表名' RENAME [TO] '新表名'; -- [TO]可以省略

删除表

  • 在MySQL中,当一张数据表 没有与其他任何数据表形成关联关系 时,可以将当前数据表直接删除。

  • 数据和结构都被删除

  • 所有正在运行的相关事务被提交

  • 所有相关索引被删除

  • 语法格式:

    sql 复制代码
    DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, ..., 数据表n];

    IF EXISTS 的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。

  • DROP TABLE 语句不能回滚

清空表

  • TRUNCATE TABLE语句:

    • 删除表中所有的数据
    • 表结构存在
  • TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚

    sql 复制代码
    TRUNCATE TABLE detail_dept;
相关推荐
夜泉_ly1 小时前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser6 小时前
【SQL】多表查询案例
数据库·sql
Galeoto6 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)6 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231116 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql