重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

mysql怎么为约束起名 mysql约束名是什么

怎样在mysql 建表时约束属性类型为汉字

1.约束主要有一下几种:

创新互联专注于西湖企业网站建设,响应式网站开发,商城开发。西湖网站建设公司,为西湖等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

NOT NULL : 用于控制字段的内容一定不能为空(NULL)。

UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

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

CHECK: 用于控制字段的值范围。

DEFAULT: 用于设置新记录的默认值。

3. not null : 用于控制字段的内容一定不能为空(NULL)。

用法 :Create table MyTable

(

id varchar(32) not null,

name varchar (32)

)

4. Primary Key :也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

在Sql Server、Orcale、MS Access 支持的添加Primary Key语法:

Create table myTB1

(

id nvarchar(32) not null primary key,

name nvarchar(32)

)

MySQL数据表的修改:添加约束

4.4.7添加约束

语句格式:ALTER TABLE 表名ADD  CONSTRAINT  约束名 约束类型(字段名)

上面语句格式中,“表名”指定要添加约束的是哪个表,“ADD CONSTRAINT”表示要在表中增加约束,其后的“约束名”是拟增加约束的名字,“约束类型”是拟增加约束的类型,其后括号里的“字段名”是指约束是在哪一个字段上建立起来的。

下面截图中的“ALTER TABLE”语句在t_dept表中新增加了一个约束名为unidept的约束,它是在对字段deptno进行的唯一性约束。

SQL在设置约束和索引时,有时会取个名字,请问这个名字是干嘛用的?怎么使用?它存在哪里了?

给约束取名字,   目的是将来你可以比较容易的删除掉.

否则你要自己去查询数据字典表.

例如下面的例子.

唯一约束的名字,  是  t_123,  那么当我不需要这个约束的时候

如果我知道名字, 那么可以直接去删除掉.

-- 创建测试表.

CREATE TABLE test_123 (

id   INT,

value  VARCHAR(10)

);

GO

-- 创建 UNIQUE 约束.

ALTER TABLE test_123

ADD CONSTRAINT t_123 UNIQUE (value);

GO

-- 删除  UNIQUE 约束.

ALTER TABLE [test_123] 

DROP CONSTRAINT [t_123];

GO

如果我不指定约束名称, 例如:

1 ALTER TABLE test_sub

2   ADD UNIQUE (value)

3 go

那么这种情况下, 如果我要删除这个约束, 就需要去查询数据字典表。

由于各个数据库厂商的数据字典表各有不同, 下面简单列一些常用的数据库。

Oracle  参考    USER_CONSTRAINTS   视图

SQL Server

对于 唯一约束, 参考  sys.indexes  视图里面的  is_unique_constraint = 1  的数据

对于外键约束,参考  sys.foreign_keys 视图里面的数据

对于 Check约束, 参考 sys.check_constraints 视图里面的数据

对于 MySQL

可以参考  INFORMATION_SCHEMA.TABLE_CONSTRAINTS  里面的数据。

mysql外键约束怎么写

你好朋友

1.简介

外键表示一个表中的一个字段被另外一个表中的字段应用.外键对相关表中的数据造成了限制,使MySQL 能够保证参照完整性.

在MySQL 中,InnoDB 存储引擎支持外键.在一张表中,可以存在多个外键.

外键的创建可以在创建表的时候创建,也可以在创建表之后增加(考虑数据的完整性问题).

父表:外键所指向的表.

字表:相对于父表,拥有外键的表.

2.语法

create 语法

create table table_name(

column_1,

column_2,

....

constraint constraint_name foreign key (column_name)

references parent_table(column_name)

on delete action

on update action

) engine=InnoDB default charset utf8;

constraint 子句允许为外键定义一个名称,如果不写,MySQL 自动生成一个名称

foreign key 子句指定子表中要应用父表的列.注意:MySQL 会自动创建一个基于外键的索引.

references 子句指定父表中的被引用字段.foreign key 和references 指定的列数必须相同.

on delete: 定义当父表中的记录被删除时,子表的记录应该执行的动作.action包括:

on delete restrict:(默认),父表不能删除一个已经被子表引用的记录.

on delete no action:等同与on delete restrict

on delete cascade: 级联模式,父表删除后,对应子表关联的数据也跟着被删除

on delete set null:置空模式,父表删除后,对应子表关联的外键值被设置为NULL,需要注意的是,如果子表的外键设置not null ,则不能使用这种模式,因为会相互冲突.

on update:定义父表中的记录更新时,子表的记录应该执行的动作.action 包括:

on update restrict:(默认),父表不能更新一个已经被子表引用的记录.

on update no action:等同与on delete restrict

on update cascade: 级联模式,父表更新后,对应子表关联的数据也跟着被更新

on update set null:置空模式,父表更新后,对应子表关联的外键值被设置为NULL,需要注意的是,如果子表的外键设置not null ,则不能使用这种模式.

alter 语法

-- 添加外键

alter table table_name add constraint constraint_name

foreign key column_name

references parent_table(column_name)

on delete action

on update action

-- 删除外键

alter table table_name drop constraint_name;

-- 如果没有显式的定义名字,可以使用如下命令获取

show create table table_name;

3.演示

构造两张表categoryes 和products.每个类别有多种产品,而每个产品只属于一个类别.

-- 设置 类别表 categoryes 和产品表 products

create table categoryes(

c_id int not null auto_increment,

c_name varchar(45) not null,

c_description text,

primary key (c_id)

) engine=InnoDB default charset utf8 comment '类别表';

create table products(

p_id int not null auto_increment,

p_name varchar(45) not null,

p_price decimal(8,4),

c_id int,

primary key (p_id),

constraint fk_products_categoryes

foreign key (c_id)

references categoryes(c_id)

on delete set null

on update cascade

) engine=InnoDB default charset utf8 comment '产品表';

在这两张表的基础上,新生成一张vendors 供应商表,并更新products字段

-- 新生成一张表 供应商 vendors ,并为 products 新添加字段 v_id 外键

-- 引用 vendors.v_id

create table vendors(

v_id int not null auto_increment,

v_name varchar(45),

primary key (v_id)

) engine=InnoDB default charset utf8 comment '供应商';

alter table products add column v_id int not null;

alter table products add

constraint fk_products_vendors foreign key (v_id)

references vendors(v_id)

on delete no action

on update cascade;

望采纳祝你好运


分享文章:mysql怎么为约束起名 mysql约束名是什么
标题来源:http://cqcxhl.com/article/dosgjee.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP