SQL世界之命令语句Ⅳ

目录

[一、SQL CREATE DATABASE 语句](#一、SQL CREATE DATABASE 语句)

[1.CREATE DATABASE 语句](#1.CREATE DATABASE 语句)

[2.SQL CREATE DATABASE 语法](#2.SQL CREATE DATABASE 语法)

[3.SQL CREATE DATABASE 实例](#3.SQL CREATE DATABASE 实例)

[二、SQL CREATE TABLE 语句](#二、SQL CREATE TABLE 语句)

[1.CREATE TABLE 语句](#1.CREATE TABLE 语句)

[2.SQL CREATE TABLE 语法](#2.SQL CREATE TABLE 语法)

3.SQL中最常用的数据类型

[4.SQL CREATE TABLE 实例](#4.SQL CREATE TABLE 实例)

[三、SQL 约束 (Constraints)](#三、SQL 约束 (Constraints))

[四、SQL NOT NULL 约束](#四、SQL NOT NULL 约束)

[五、SQL UNIQUE 约束](#五、SQL UNIQUE 约束)

[1.在 "Persons" 表创建时,在 "Id_P" 列创建 UNIQUE 约束](#1.在 "Persons" 表创建时,在 "Id_P" 列创建 UNIQUE 约束)

[2.命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束](#2.命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束)

[3.当表已被创建时,在 "Id_P" 列创建 UNIQUE 约束](#3.当表已被创建时,在 "Id_P" 列创建 UNIQUE 约束)

[4.命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束](#4.命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束)

[5.撤销 UNIQUE 约束](#5.撤销 UNIQUE 约束)

[六、SQL PRIMARY KEY 约束](#六、SQL PRIMARY KEY 约束)

[1.SQL PRIMARY KEY 约束](#1.SQL PRIMARY KEY 约束)

[2.在 "Persons" 表创建时,在 "Id_P" 列创建 PRIMARY KEY 约束](#2.在 "Persons" 表创建时,在 "Id_P" 列创建 PRIMARY KEY 约束)

[3.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束](#3.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束)

[4.在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束](#4.在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束)

[5.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束](#5.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束)

[6.撤销 PRIMARY KEY 约束](#6.撤销 PRIMARY KEY 约束)

[七、SQL FOREIGN KEY 约束](#七、SQL FOREIGN KEY 约束)

[1.SQL FOREIGN KEY 约束](#1.SQL FOREIGN KEY 约束)

[2.在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY](#2.在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY)

[3.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束](#3.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束)

[4.在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束](#4.在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束)

[5.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束](#5.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束)

[6.撤销 FOREIGN KEY 约束](#6.撤销 FOREIGN KEY 约束)

[八、SQL CHECK 约束](#八、SQL CHECK 约束)

[1.SQL CHECK 约束](#1.SQL CHECK 约束)

[2.在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束](#2.在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束)

[3.命名 CHECK 约束,以及为多个列定义 CHECK 约束](#3.命名 CHECK 约束,以及为多个列定义 CHECK 约束)

[4.在表已存在的情况下为 "Id_P" 列创建 CHECK 约束](#4.在表已存在的情况下为 "Id_P" 列创建 CHECK 约束)

[5.命名 CHECK 约束,以及为多个列定义 CHECK 约束](#5.命名 CHECK 约束,以及为多个列定义 CHECK 约束)

[6.撤销 CHECK 约束](#6.撤销 CHECK 约束)

[九、SQL DEFAULT 约束](#九、SQL DEFAULT 约束)

[1.SQL DEFAULT 约束](#1.SQL DEFAULT 约束)

[2.在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束](#2.在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束)

[3.通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值](#3.通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值)

[4.在表已存在的情况下为 "City" 列创建 DEFAULT 约束](#4.在表已存在的情况下为 "City" 列创建 DEFAULT 约束)

[5.撤销 DEFAULT 约束](#5.撤销 DEFAULT 约束)


一、SQL CREATE DATABASE 语句

1.CREATE DATABASE 语句

CREATE DATABASE 用于创建数据库。

2.SQL CREATE DATABASE 语法

CREATE DATABASE database_name

3.SQL CREATE DATABASE 实例

创建一个名为 "my_db" 的数据库,使用的 CREATE DATABASE 语句:

CREATE DATABASE my_db

二、SQL CREATE TABLE 语句

1.CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。

2.SQL CREATE TABLE 语法

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

....

)

3.SQL中最常用的数据类型

|------------------------------------------------------|----------------------------------------------|
| 数据类型 | 描述 |
| integer(size) int(size) smallint(size) tinyint(size) | 仅容纳整数。在括号内规定数字的最大位数。 |
| decimal(size,d) numeric(size,d) | 容纳带有小数的数字。"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。 |
| char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。 |
| varchar(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。 |
| date(yyyymmdd) | 容纳日期。 |

4.SQL CREATE TABLE 实例

创建名为 "Person" 的表,该表包含 5 个列。

列名分别是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City"。

CREATE TABLE Persons

(

Id_P int,

LastName varchar(255),

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

解析:Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。

空的 "Persons" 表类似这样:

|------|----------|-----------|---------|------|
| Id_P | LastName | FirstName | Address | City |
| | | | | |

可使用 INSERT INTO 语句向空表写入数据。

三、SQL 约束 (Constraints)

约束用于限制加入表的数据的类型。可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。

四、SQL NOT NULL 约束

NOT NULL 约束强制列不接受 NULL 值、强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

五、SQL UNIQUE 约束

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

每个表可以有多个 UNIQUE 约束,但是只能有一个 PRIMARY KEY 约束。

1.在 "Persons" 表创建时,在 "Id_P" 列创建 UNIQUE 约束

①MySQL:

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

UNIQUE (Id_P)

)

②SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

Id_P int NOT NULL UNIQUE,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

2.命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

)

3.当表已被创建时,在 "Id_P" 列创建 UNIQUE 约束

ALTER TABLE Persons

ADD UNIQUE (Id_P)

4.命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束

ALTER TABLE Persons

ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

5.撤销 UNIQUE 约束

①MySQL:

ALTER TABLE Persons

DROP INDEX uc_PersonID

②SQL Server / Oracle / MS Access:

ALTER TABLE Persons

DROP CONSTRAINT uc_PersonID

六、SQL PRIMARY KEY 约束

1.SQL PRIMARY KEY 约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

2.在 "Persons" 表创建时,在 "Id_P" 列创建 PRIMARY KEY 约束

①MySQL:

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (Id_P)

)

②SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

Id_P int NOT NULL PRIMARY KEY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

3.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

)

4.在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束

ALTER TABLE Persons

ADD PRIMARY KEY (Id_P)

5.命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束

ALTER TABLE Persons

ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

注:在表首次创建时使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值。

6.撤销 PRIMARY KEY 约束

①MySQL:

ALTER TABLE Persons

DROP PRIMARY KEY

②SQL Server / Oracle / MS Access:

ALTER TABLE Persons

DROP CONSTRAINT pk_PersonID

七、SQL FOREIGN KEY 约束

1.SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

"Persons" 表:

|------|----------|-----------|------------|----------|
| Id_P | LastName | FirstName | Address | City |
| 001 | Aam | Joh | Oxd Street | London |
| 002 | Buh | Grge | Fifth Aue | New York |
| 003 | Car | Tmas | Can Street | Beijing |

"Orders" 表:

|------|---------|------|
| Id_O | OrderNo | Id_P |
| 1 | 77895 | 003 |
| 2 | 44678 | 003 |
| 3 | 22456 | 001 |
| 4 | 24562 | 001 |

"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。

"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。

"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。

FOREIGN KEY 约束用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

2.在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY

①MySQL:

CREATE TABLE Orders

(

Id_O int NOT NULL,

OrderNo int NOT NULL,

Id_P int,

PRIMARY KEY (Id_O),

FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

)

②SQL Server / Oracle / MS Access:

CREATE TABLE Orders

(

Id_O int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

Id_P int FOREIGN KEY REFERENCES Persons(Id_P)

)

3.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束

CREATE TABLE Orders

(

Id_O int NOT NULL,

OrderNo int NOT NULL,

Id_P int,

PRIMARY KEY (Id_O),

CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)

REFERENCES Persons(Id_P)

)

4.在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束

ALTER TABLE Orders

ADD FOREIGN KEY (Id_P)

REFERENCES Persons(Id_P)

5.命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束

ALTER TABLE Orders

ADD CONSTRAINT fk_PerOrders

FOREIGN KEY (Id_P)

REFERENCES Persons(Id_P)

6.撤销 FOREIGN KEY 约束

①MySQL:

ALTER TABLE Orders

DROP FOREIGN KEY fk_PerOrders

②SQL Server / Oracle / MS Access:

ALTER TABLE Orders

DROP CONSTRAINT fk_PerOrders

八、SQL CHECK 约束

1.SQL CHECK 约束

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

2.在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束

CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。

①My SQL:

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CHECK (Id_P>0)

)

②SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

Id_P int NOT NULL CHECK (Id_P>0),

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

3.命名 CHECK 约束,以及为多个列定义 CHECK 约束

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

)

4.在表已存在的情况下为 "Id_P" 列创建 CHECK 约束

ALTER TABLE Persons

ADD CHECK (Id_P>0)

5.命名 CHECK 约束,以及为多个列定义 CHECK 约束

ALTER TABLE Persons

ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

6.撤销 CHECK 约束

①MySQL:

ALTER TABLE Persons

DROP CHECK chk_Person

②SQL Server / Oracle / MS Access:

ALTER TABLE Persons

DROP CONSTRAINT chk_Person

九、SQL DEFAULT 约束

1.SQL DEFAULT 约束

DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新记录。

2.在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255) DEFAULT 'Sandnes'

)

3.通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值

CREATE TABLE Orders

(

Id_O int NOT NULL,

OrderNo int NOT NULL,

Id_P int,

OrderDate date DEFAULT GETDATE()

)

4.在表已存在的情况下为 "City" 列创建 DEFAULT 约束

①MySQL:

ALTER TABLE Persons

ALTER City SET DEFAULT 'SANDNES'

②SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ALTER COLUMN City SET DEFAULT 'SANDNES'

5.撤销 DEFAULT 约束

①MySQL:

ALTER TABLE Persons

ALTER City DROP DEFAULT

②SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ALTER COLUMN City DROP DEFAULT

相关推荐
想摆烂的不会研究的研究生24 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
码熔burning35 分钟前
MySQL 8.0 新特性爆笑盘点:从青铜到王者的骚操作都在这儿了!(万字详解,建议收藏)
数据库·mysql
猫头虎43 分钟前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
@LetsTGBot搜索引擎机器人3 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐3 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
Tony Bai4 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072015 小时前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风5 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存