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

相关推荐
陈洪奇38 分钟前
注册中心学习笔记整理
笔记·学习
sun0077002 小时前
mysql索引底层原理
数据库·mysql
兴趣使然_4 小时前
【笔记】使用 html 创建网址快捷方式
笔记·html·js
workflower5 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
今日热点5 小时前
小程序主体变更全攻略:流程、资料与异常处理方案
经验分享·微信·小程序·企业微信·微信公众平台·微信开放平台
aramae5 小时前
C++ -- STL -- vector
开发语言·c++·笔记·后端·visual studio
Tony小周5 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen6 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
fen_fen6 小时前
学习笔记(32):matplotlib绘制简单图表-数据分布图
笔记·学习·matplotlib
TDengine (老段)6 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据