MySQL 这边的东西全部来找自 https://itbaima.net/document
MySQL
DDL 创建,删除数据库,数据表的方法
数据库操作
- 我们可以通过
create database
来创建一个数据库:
create database 数据库名
- 为了能够支持中文,我们在创建时可以设定编码格式:
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- 通过使用
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数据类型
- 以下的数据类型用于字符串存储:
char(n)
可以存储任意字符串,但是是固定长度为n,如果插入的长度小于定义长度时,则用空格填充。varchar(n)
也可以存储任意数量字符串,长度不固定,但不能超过n,不会用空格填充。
- 以下数据类型用于存储数字:
smallint
用于存储小的整数,范围在 (-32768,32767)int
用于存储一般的整数,范围在 (-2147483648,2147483647)bigint
用于存储大型整数,范围在 (-9,223,372,036,854,775,808,9,223,372,036,854,775,807)float
用于存储单精度小数double
用于存储双精度的小数
- 以下数据类型用于存储时间:
date
存储日期time
存储时间year
存储年份datetime
用于混合存储日期+时间
列级约束条件
列级约束有六种:主键Primary key
、外键foreign key
、唯一 unique
、检查 check (MySQL不支持)、默认defaul
t 、非空/空值 not null/ null
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]
举个例子
假设有两个表:Students
和 Departments
。Students
表有一个字段 DepartmentID
,该字段将引用 Departments
表的主键 ID
。
-
创建
Departments
表:CREATE TABLE Departments ( ID INT PRIMARY KEY, Name VARCHAR(100) );
-
创建
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]
举个例子
-
使用
RESTRICT
选项:这是默认选项。如果表被其他表的外键约束或视图所引用,删除操作将会失败。这用于确保不会意外地删除被其他表依赖的表。例如,如果我们想删除一个名为Employees
的表,并确保没有其他表依赖于它,可以使用以下命令:DROP TABLE Employees RESTRICT;
-
使用
CASCADE
选项:如果表被其他表的外键约束或视图所引用,CASCADE
选项将使得这些外键约束或视图也被删除。这个选项应谨慎使用,因为它可能会导致数据丢失。例如,如果我们想删除Departments
表,并且希望同时删除所有依赖于该表的外键约束和视图,可以使用以下命令:DROP TABLE Departments CASCADE;