MySQL DDL 操作

MySQL 这边的东西全部来找自 https://itbaima.net/document

MySQL

DDL 创建,删除数据库,数据表的方法

数据库操作

  1. 我们可以通过create database来创建一个数据库:
create database 数据库名
  1. 为了能够支持中文,我们在创建时可以设定编码格式:
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  1. 通过使用drop database来删除一个数据库:
drop database 数据库名

创建表

数据库创建完成后,我们一般通过create table语句来创建一张表:

create table 表名(列名 数据类型[列级约束条件],
             列名 数据类型[列级约束条件],
             ...
             [,表级约束条件])

举个例子

CREATE TABLE Employees(
    EmployeeID INT PRIMARY KEY,
    FirstName  VARCHAR(50),
    LastName   VARCHAR(50),
    BirthDate  DATE,
    HireDate   DATE           NOT NULL,
    Salary     DECIMAL(10, 2) NOT NULL
);


SQL数据类型

  1. 以下的数据类型用于字符串存储:
  • char(n)可以存储任意字符串,但是是固定长度为n,如果插入的长度小于定义长度时,则用空格填充。
  • varchar(n)也可以存储任意数量字符串,长度不固定,但不能超过n,不会用空格填充。
  1. 以下数据类型用于存储数字:
  • smallint用于存储小的整数,范围在 (-32768,32767)
  • int用于存储一般的整数,范围在 (-2147483648,2147483647)
  • bigint用于存储大型整数,范围在 (-9,223,372,036,854,775,808,9,223,372,036,854,775,807)
  • float用于存储单精度小数
  • double用于存储双精度的小数
  1. 以下数据类型用于存储时间:
  • date存储日期
  • time存储时间
  • year存储年份
  • datetime用于混合存储日期+时间

列级约束条件

列级约束有六种:主键Primary key、外键foreign key 、唯一 unique、检查 check (MySQL不支持)、默认default 、非空/空值 not null/ null

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]

举个例子

假设有两个表:StudentsDepartmentsStudents 表有一个字段 DepartmentID,该字段将引用 Departments 表的主键 ID

  1. 创建 Departments

    CREATE TABLE Departments (
        ID INT PRIMARY KEY,
        Name VARCHAR(100)
    );
    
  2. 创建 Students,并添加外键约束,使 Students 表的 DepartmentID 字段引用 Departments 表的 ID 字段:

    CREATE TABLE Students (
        StudentID INT PRIMARY KEY,
        Name VARCHAR(100),
        DepartmentID INT,
        CONSTRAINT fk_department FOREIGN KEY (DepartmentID) REFERENCES Departments (ID)
    );
    

在这个例子中,Students 表的 DepartmentID 字段与 Departments 表的 ID 字段相关联。这样,每个学生都会被分配到一个特定的部门,并且只能引用 Departments 表中存在的部门ID。通过这种方式,可以保证数据的一致性和完整性。

我们可以通过ADD来添加一个新的列,通过DROP来删除一个列,不过我们可以添加restrict或cascade,默认是restrict,表示如果此列作为其他表的约束或视图引用到此列时,将无法删除,而cascade会强制连带引用此列的约束、视图一起删除。还可以通过ALTER来修改此列的属性。

删除表

我们可以通过drop table来删除一个表:

DROP TABLE 表名[restrict|cascade]

举个例子

  1. 使用 RESTRICT 选项:这是默认选项。如果表被其他表的外键约束或视图所引用,删除操作将会失败。这用于确保不会意外地删除被其他表依赖的表。例如,如果我们想删除一个名为 Employees 的表,并确保没有其他表依赖于它,可以使用以下命令:

    DROP TABLE Employees RESTRICT;
    
  2. 使用 CASCADE 选项:如果表被其他表的外键约束或视图所引用,CASCADE 选项将使得这些外键约束或视图也被删除。这个选项应谨慎使用,因为它可能会导致数据丢失。例如,如果我们想删除 Departments 表,并且希望同时删除所有依赖于该表的外键约束和视图,可以使用以下命令:

    DROP TABLE Departments CASCADE;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值