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

相关推荐
Elastic 中国社区官方博客5 分钟前
超越相似名称:Elasticsearch semantic text 如何在简洁、高效、集成方面超越 OpenSearch semantic 字段
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
哈基米喜欢哈哈哈34 分钟前
进程和线程
java·linux·windows·笔记
丰锋ff44 分钟前
2021 年全国硕士研究生招生考试真题笔记
笔记
栈溢出了1 小时前
go学习笔记-结构体
笔记·学习
头发还在的女程序员2 小时前
ThinkPHP+Mysql 灵活用工小程序-技术深度解析与实践指南
数据库·mysql·小程序
꒰ঌ 安卓开发໒꒱2 小时前
SQL Server安全删除数据并释放空间的技术方案
数据库·安全·oracle
用户848508146903 小时前
SurrealDB 快速上手教程
数据库·后端
kura_tsuki3 小时前
[Oracle数据库] ORACLE的用户维护和权限操作
数据库·oracle
努力自学的小夏4 小时前
RK3568 Linux驱动学习——新字符设备驱动
linux·arm开发·驱动开发·笔记·学习
SelectDB4 小时前
SelectDB x 同辕开发:在 ARM 架构下实现 25% 分析性能提升
大数据·数据库·华为