sql 修改列级完整性约束语句_MySQL 基本语句八 总结constraints 约束(除主键外键)...

b914f334ddf862e8e838c14ece299487.png

为什么要有constraints 约束?-给输入的数据设定规则。

基本的语句结构:

CREATE TABLE table_name(

column1 datatype constraint,

column2 datatype constraint,

column3 datatype constraint,

....

);

约束用于限制输入表格的数据类型。用来确保表格中数据的准确性和可靠性。

如果约束的条件与数据操作之间存在任何冲突,该操作将会中止。
约束可以是列级别或表级别。

列级约束适用于列,而表级约束适用于整个表。SQL中通常使用以下约束:
NOT NULL-确保列不能具有空值 UNIQUE-确保列中的所有值都不相同
PRIMARYKEY-NOT NULL和UNIQUE的组合。唯一标识表中的每一行
FOREIGNKEY-唯一标识另一个表中的行/记录
CHECK-确保列中的所有值都满足特定条件
DEFAULT-在未指定任何值的情况下为列设置一个默认值
INDEX-用于非常快速地从数据库创建和检索数据

分别举例:

CREATE TABLE table_1 ( 创建了一个新表

ID int NOT NULL, ID这一列不为空

Last Name varchar(255) NOT NULL, Last Name 这一列不为空

First Name varchar(255) NOT NULL, First Name 这一列不为空

Age int Age 为整数

);

修改已有的表格,列不为空

ALTER TABLE Persons 修改名为persons的表格

MODIFY Age int NOT NULL; 修改年龄不为空

确保单列中值都不同

CREATE TABLE Persons (

ID int NOT NULL,

Last Name varchar(255) NOT NULL,

First Name varchar(255),

Age int,

UNIQUE(ID) ID 列中值都不同

);

确保多列中值不相同

CREATE TABLE Persons (

ID int NOT NULL,

Last Name varchar(255) NOT NULL,

First Name varchar(255),

Age int,

CONSTRAINT UC_Person UNIQUE(ID,LastName)

);

修改表中的单列的值不相同

ALTER TABLE Persons

ADD UNIQUE(ID);

修改表中的多列的值不相同

ALTER TABLE Persons

ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

去掉Unique约束

ALTER TABLE Persons

DROP INDEX UC_Person;

check 单列的条件是否符合

CREATE TABLE Persons (

ID int NOT NULL,

Last Name varchar(255) NOT NULL,

First Name varchar(255),

Age int,

CHECK(Age>=18)

);

check 多列的条件是否符合

CREATE TABLE Persons (

ID int NOT NULL,

Last Name varchar(255) NOT NULL,

First Name varchar(255),

Age int,

City varchar(255),

CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')

);

check 已存在表的单列条件

ALTER TABLE Persons

ADD CHECK (Age>=18);

check已存在表的多列条件

ALTER TABLE Persons

ADD CONSTRAINT CHK_Person Age CHECK (Age>=18 AND City='Sandnes');

去掉check约束

ALTER TABLE Persons

DROP CHECK CHK_PersonAge;

默认值约束:会提供给输入的数据一个默认值

给特定列一个默认值

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);

也可以输入系统数据,例如输入系统时间用getdate()

CREATE TABLE Orders (
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);

修改已存在表中的默认值:

ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';

去掉默认值

ALTER TABLE Persons
ALTER City DROP DEFAULT;

Index用于快速从数据库中提取数据.

基本语句:

CREATE INDEX index_name
ON table_name (column1, column2, ...);

建立Unique Index 语句:

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

不同数据库建立index的语句不通。一定要仔细看好数据库的语句结构。

CREATE INDEX 建立index指令

The SQL statement below creates an index named "idx_lastname" on the "LastName" column in the "Persons" table:

CREATE INDEX idx_lastname 建立idx_lastname 关于Persons 表格的lastname列
ON Persons (LastName);

CREATE INDEX idx_pname 建立idx_lastname 关于Persons 表格的lastname和firstname列
ON Persons (LastName, FirstName);

DROP INDEX Statement 去除index指令

ALTER TABLE table_name
DROP INDEX index_name;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值