SQL中如何为表添加外键约束
子任务3.4 创建外键约束
2 创建外键约束
• 需求说明
– 为Student数据表的Classno(班级编号)字段创建外键约束。
图形化工具方式
创建外键约束
建表的同时建约束
T-SQL语句方式
表创建完成后增加约束
2 创建外键约束
表创建完成增加外键约束的语法格式:
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(列名[,…n]) REFERENCES 要联系的表(要联系的列[,…n]) [ON DELETE CASCADE|ON UPDATE CASCADE]
• 拓展任务 – 教材P98页外键约束。
谢 谢!
刘万辉
ON DELETE CASCADE表示级联删除,即父表(包含主键的表)中删除被引用行时,也将从 引用表(包含外键的表)中删除引用行。ON UPDATE CASCADE表示级联更新,即父表中 更新引用行时,也将在引用表中更新引用行。
2 创建外后的表为包含主键的表(称为主表或父表); – 外键约束可以保证表与表之间数据的一致性,维护引用完整性。
《SQL Server数据库技术》 课程
创建外键约束
讲授人:史桂红
目录页
PAGE OF CONTENT
01 外键约束及其作用
02 创建外键约束
1 外键及外键约束
外键:用于建立两个数据表之间 连接的一列或多列。
外键约束:外键表中外健字段值 必须与主键表中主键字段值保持 一致,外键约束用于强制引用完 整性。
sql操作数据库(3)--外键约束、数据库表之间的关系、三大范式、多表查询、事务
sql操作数据库(3)--外键约束、数据库表之间的关系、三⼤范式、多表查询、事务外键约束在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)删除外键语法: alter table 从表表名 drop foreign key 外键名称;级联操作:注意:在从表中,修改关联主表中不存在的数据,是不合法的在主表中,删除从表中已经存在的主表信息,是不合法的。
直接删除主表(从表中有记录数据关联) 会包删除失败。
概念:在修改或者删除主表的主键时,同时它会更新或者删除从表中的外键值,这种动作我们称之为级联操作。
语法:更新级联 on update cascade 级联更新只能是创建表的时候创建级联关系。
当更新主表中的主键,从表中的外键字段会同步更新。
删除级联 on delete cascade 级联删除当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。
操作:-- 给从表student添加级联操作create table student(s_id int PRIMARY key ,s_name VARCHAR(10) not null,s_c_id int,-- constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)CONSTRAINT stu_cour_id FOREIGN key(s_c_id) REFERENCES course(c_id) -- 给s_c_id 添加外键约束ON UPDATE CASCADE ON DELETE CASCADE)insert into student VALUE(1,'⼩孙',1),(2,'⼩王',2),(3,'⼩刘',4);insert into student VALUE(4,'⼩司马',1),(5,'⼩赵',1),(6,'⼩钱',1);-- 查询学⽣表中的记录select * from student;-- 级联操作。
Oracle:SQL语句--对表的操作——添加主键约束
Oracle:SQL语句--对表的操作——添加主键约束–创建主外键(可以在创建表的同时添加主外键约束,也可以
–创建完成后再添加约束)
—–⽅法⼀:表创建的同时,添加主键约束
语法:
create table 表名
(
列名1 数据类型及长度 constraint 主键名称(⼀般主键名称为”PK_”开头) primary key,
列名2 数据类型及长度 not null,——-not null 约束该列不为空,不写表⽰可以为空
列名3 数据类型及长度
)tablespace 表空间名称;——-指定将该表放在某个表空间⾥,可以省略不指定
例:
create table T_DEPOSIT
(savingid VARCHAR2(20) constraint pk_savingid primary key,
savingname VARCHAR2(20) not null,
descrip VARCHAR2(50)
)tablespace ATM_tablespace;
————注意————-
CREATE TABLE T_cardInfo –银⾏卡信息表
(
cardID varchar2(19) primary key,
—— 如果此处这样定义主键,则主键名称系统⾃⼰定义设置
);
—–⽅法⼆:表创建后,添加主键约束
语法:
alter table 表名
add constraint 主键名称(⼀般主键名称为”PK_”开头) primary key(要设为主键的列名);
例:
alter table T_Grade
add constraint pk_gradeId primary key (gradeId);。
(转)SQLSERVER外键约束以及它的级联删除
(转)SQLSERVER外键约束以及它的级联删除sql server中建⽴外键约束有3中⽅式:1.enterprise manager中,tables,design table,设置table的properties,可以建⽴constraint, reference key;2.enterprise manager中,diagrams, new diagrams,建⽴两个表的关系。
3.直接⽤transact sql语句。
三个⽅法都需要先建⽴数据表。
-- 创建表author :create table [dbo].[author] ([id] [bigint] not null ,[authorname] [char] (10) null ,[address] [char] (480) null ,[introduction] [ntext] null)-- 创建表mybbs:reate table [dbo].[mybbs] ([id] [bigint] identity (1, 1) not null ,[authorid] [bigint] not null ,[title] [char] (40) null ,[date_of_created] [datetime] null ,[abstract] [char] (480) null ,[content] [ntext] null)设置表mybbs中的authorid为外键,参照author表的id字段,直接使⽤transact sql语句,过程如下:--增加表mybbs(authorid)的外键约束fk_mybbs_author,表mybbs中的authorid受表author中的主键id约束:begin transactionalter table dbo.mybbs add constraint fk_mybbs_authorforeign key (authorid)references dbo.author([id]) on update cascade on delete cascade--删除外键约束fk_mybbs_author:--alter table dbo.mybbs drop constraint fk_mybbs_author--rollbackcommit transaction上⾯on update cascade,on delete cascade两个选项,指明以后author表的id字段有delete,update操作时,mybbs表中的id也会被级联删除或更新。
sql语句 alter table
sql语句 alter tableALTER TABLE语句是SQL中用于修改现有表结构的关键字。
它可以用于添加、修改或删除表中的列、约束、索引和其他属性。
下面是10个使用ALTER TABLE语句的例子,以展示如何使用这个关键字来修改表结构。
1. 添加列:ALTER TABLE 表名ADD 列名数据类型 [约束条件];例如,要向名为"students"的表中添加一个新的"age"列,数据类型为整数,可以使用以下语句:ALTER TABLE studentsADD age INT;2. 修改列的数据类型:ALTER TABLE 表名ALTER COLUMN 列名新数据类型;例如,要将"students"表中的"age"列的数据类型从整数修改为浮点数,可以使用以下语句:ALTER TABLE studentsALTER COLUMN age FLOAT;3. 删除列:ALTER TABLE 表名DROP COLUMN 列名;例如,要从"students"表中删除"age"列,可以使用以下语句:ALTER TABLE studentsDROP COLUMN age;4. 添加主键约束:ALTER TABLE 表名ADD CONSTRAINT 约束名 PRIMARY KEY (列名);例如,要给"students"表中的"id"列添加主键约束,可以使用以下语句:ALTER TABLE studentsADD CONSTRAINT pk_students PRIMARY KEY (id);5. 删除主键约束:ALTER TABLE 表名DROP CONSTRAINT 约束名;例如,要从"students"表中删除名为"pk_students"的主键约束,可以使用以下语句:ALTER TABLE studentsDROP CONSTRAINT pk_students;6. 添加外键约束:ALTER TABLE 表名ADD CONSTRAINT 约束名FOREIGN KEY (列名) REFERENCES 参考表(参考列);例如,要在"students"表中添加一个外键约束,将"course_id"列引用到"courses"表的"id"列,可以使用以下语句:ALTER TABLE studentsADD CONSTRAINT fk_students_courses FOREIGN KEY (course_id) REFERENCES courses(id);7. 删除外键约束:ALTER TABLE 表名DROP CONSTRAINT 约束名;例如,要从"students"表中删除名为"fk_students_courses"的外键约束,可以使用以下语句:ALTER TABLE studentsDROP CONSTRAINT fk_students_courses;8. 添加索引:ALTER TABLE 表名ADD INDEX 索引名 (列名);例如,要在"students"表的"name"列上添加一个索引,可以使用以下语句:ALTER TABLE studentsADD INDEX idx_students_name (name);9. 删除索引:ALTER TABLE 表名DROP INDEX 索引名;例如,要从"students"表中删除名为"idx_students_name"的索引,可以使用以下语句:ALTER TABLE studentsDROP INDEX idx_students_name;10. 修改表名:ALTER TABLE 旧表名RENAME TO 新表名;例如,要将名为"old_students"的表更名为"new_students",可以使用以下语句:ALTER TABLE old_studentsRENAME TO new_students;通过使用ALTER TABLE语句,我们可以方便地修改表结构,以满足不同的需求。
SQL:addconstraint方法添加约束
格式:alter table 表名 add constraint 约束名称 check(列名)
例子:alter table ss add constraint pp check(age>20)
4、添加unique约束:
格式:alter table 表名 add constraint 约束名称 unique(列名)
例子:alter table ss add constraint pp unique(sname)
altertable表名addconstraint约束名称foreignkey列名references被引用表的名称列名
SQL:addconstraint方法添加约束
SQL: add constraint 方法添加约束
alter table 表名 add constraint 约束名称 约束类型(列名)
1、添加主键约束:
格式:alter table 表名 add constraint 约束名称 primary key(列名)
例子:alter table ss add constraint pp primary key(sid)
2、添加外键约束:
格式:alter table 表名 add constraint 约束名称 foreign key(列名) references 被引用表的名称(列名)
mysql外键约束的基本语法结构
MySQL外键约束的基本语法结构概述在关系型数据库中,外键是用来建立表与表之间关系的重要机制之一。
MySQL作为一种常用的关系型数据库管理系统,也支持外键约束。
本文将详细介绍MySQL外键约束的基本语法结构,包括创建外键、修改外键和删除外键。
创建外键创建外键是将两个或多个表之间关系建立起来的过程,通过外键可以实现数据一致性和完整性。
以下是创建外键的基本语法:ALTER TABLE child_tableADD CONSTRAINT fk_nameFOREIGN KEY (child_column)REFERENCES parent_table(parent_column);其中,child_table为子表,child_column为子表中的外键列,fk_name为外键的名称,parent_table为父表,parent_column为父表中子表外键列参照的列。
创建外键的步骤如下: 1. 使用ALTER TABLE语句来修改表结构。
2. 使用ADD CONSTRAINT关键字指定要添加的约束。
3. 使用FOREIGN KEY关键字指定外键列。
4. 使用REFERENCES关键字指定父表和父表列。
修改外键在一些情况下,需要对已经存在的外键进行修改。
MySQL允许对外键进行修改,包括修改外键名称、修改外键列以及修改外键参照的父表和父表列。
以下是修改外键的基本语法:ALTER TABLE child_tableDROP FOREIGN KEY fk_name;ALTER TABLE child_tableADD CONSTRAINT new_fk_nameFOREIGN KEY (new_child_column)REFERENCES new_parent_table(new_parent_column);其中,child_table为子表,fk_name为原有外键的名称,new_fk_name为修改后的外键名称,new_child_column为修改后的子表外键列,new_parent_table为修改后的父表,new_parent_column为修改后父表中子表外键列参照的列。
SQL中主键、外键完整性约束的作用以及创建语句
SQL中主键、外键完整性约束的作用以及创建语句
SQL的主键和外键约束
SQL的主键和外键的作用:
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外键就是起约束作用。
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
比如:
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键;
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键;
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。
SQL创建和使用约束
SQL创建和使用约束一、什么是约束约束(constraints)是用于定义表中数据唯一性和完整性的规则,它们用于保证数据在正确、完整的状态,确保其满足业务规则。
约束包括两种:完整性约束和实体完整性约束。
完整性约束是指数据完整性,包括主键完整性、外键完整性、唯一完整性、完整性检查和用户定义的约束。
实体完整性是指实体的合法性、有效性和可行性,是指实体之间的关系、数据结构的一致性。
二、创建约束1.主键约束(Primary Key Constraint)主键约束是表中唯一的标识符,它的作用是用来确定表中每一行的唯一性,为表中的数据进行分组,方便查询。
在插入表数据时,需要先检查是否有重复的主键。
主键约束的创建方法:语法:ALTERTABLE表名ADDCONSTRAINT主键约束名PRIMARYKEY[(字段1[,字段2[,…[,字段n]]])]例如:ALTER TABLE StudentADD CONSTRAINT PK_Student_IDPRIMARY KEY (Stu_ID)2.外键约束(Foreign Key Constraint)外键约束用来完成两张表之间的关联,它确保引用的数据行存在于被引用的表中。
在插入数据时,会检查外键值是否在被引用表中存在。
外键约束的创建方法:语法:ALTERTABLE表名2ADDCONSTRAINT外键约束名FOREIGNKEY(字段1[,字段2[,…[,字段n]]])REFERENCES表名1(字段1[,字段2[,…[,字段n]]])例如:ALTER TABLE ScoreADD CONSTRAINT FK_Score_Stu_ID。
SQL Server 外键约束的例子
外键约束的测试表与测试数据-- 创建测试主表. ID 是主键.CREATE TABLE test_main (id INT,value V ARCHAR(10),PRIMARY KEY(id));-- 创建测试子表.CREATE TABLE test_sub (id INT,main_id INT,value V ARCHAR(10),PRIMARY KEY(id));-- 插入测试主表数据.INSERT INTO test_main(id, value) V ALUES (1, 'ONE');INSERT INTO test_main(id, value) V ALUES (2, 'TWO');-- 插入测试子表数据.INSERT INTO test_sub(id, main_id, value) V ALUES (1, 1, 'ONEONE'); INSERT INTO test_sub(id, main_id, value) V ALUES (2, 2, 'TWOTWO'); 默认外键约束方式1> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;2> go1> DELETE2> test_main3> WHERE4> ID = 1;5> go消息547,级别16,状态1,服务器HOME-BED592453C\SQLEXPRESS,第1 行DELETE 语句与REFERENCE 约束"main_id_cons"冲突。
该冲突发生于数据库"Stock",表"dbo.test_sub", column 'main_id'。
My SQL中数据库约束
1、主键约束,第一种方法。
进入数据库hoter,然后创建数据表customerinfo,并将id设为主键。
这是第一种方法。
2、主键约束,第一种方法。
在数据库hoter中创建了第二个数据表customerinfo,用第二种主键设置方法。
然后查看该数据表。
3、联合主键约束。
在数据库hoter中创建第三个数据表orderinfo,并把customerid和roomid设置为联合主键。
4、给已经存在的数据表添加主键约束。
5、给已经存在的数据表添加联合主键约束。
6、删除主键,数据库hoter中的其中一个数据表customer删除主键。
7、创建外键约束8、删除外键9、设置默认值约束,给数据库hoter创建了一个数据表orderinfo,并给amount设置了默认值0。
10、修改默认值给数据库hoter创建了一个数据表orderinfo,并将amount的默认值修改为1。
11、删除默认值将amount的默认值删除12、设置非空约束目前在数据库hoter中,查看数据库hoter中的所有数据表,然后创建一个数据表customerinfo,并给表中的customername设置非空约束。
13、修改表时添加非空约束14、设置检出约束——列级检查约束15、设置检查约束——表级约束16、修改表时添加检查约束17、设置唯一约束——第一种方法18、设置唯一约束——第二种方法19、多个列设置唯一约束——列级20、多个列设置唯一约束——表级21、多个列设置共同的唯一约束22、修改表时添加一个列的唯一约束23、修改表时添加多个列的唯一约束24、删除唯一约束。
03SQLALchemy外键约束
03SQLALchemy外键约束⼀,配置1,SQLALchemy的配置单独使⽤config.py⽂件2,满⾜如下要求:#dialect+driver://username:password@host:port/database具体说明如下:# dialect:是数据库的实现,⽐如MySql,SQLlite,且转换为⼩写# driver:对应的驱动,⽐如MySql的驱动是MySqldb# username:连接数据库的⽤户名# password:密码# host:连接数据库的域名# port:数据库监听的端⼝号# database:是连接的数据库的名字,创建数据库语句为:SQL语句:"""create database db_demo1(database_name) charset utf8"""# 如果以上输出了1则说明SQLAlchemy能成功连接到数据库。
DIALECT = "mysql"DRIVER = "mysqldb"USERNAME = "root"PASSWORD = '1234'HOST = "127.0.0.1"PORT = "3306"DATABASE = "db_demo3"SQLALCHEMY_DATABASE_URI="{}+{}://{}:{}@{}:{}/{}".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE) """指定⼀个名为SQLALCHEMY_DATABASE_URI的固定变量,注意是固定的写法"""SQLALCHEMY_TRACK_MODIFICATIONS =False3,在主程序中引⽤并配置:#引⽤from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyimport config#配置app = Flask(__name__)app.config.from_object(config)db = SQLAlchemy(app)⼆,具体使⽤1,数据库创建与删除2,表的创建class User(db.Model):__tablename__ = "user"id = db.Column(db.Integer,primary_key=True,autoincrement=True)username = db.Column(db.String(100),nullable=False)class Article(db.Model):__tablename__ = "article"id = db.Column(db.Integer,primary_key=True,autoincrement=True)title = db.Column(db.String(100),nullable=False)content = db.Column(db.Text,nullable=False)author_id = db.Column(db.Integer,db.ForeignKey('user.id')) #后⾯跟表名db.create_all() #创建后⼀定记得这⼀步创建后⽤Navicat查看为:创建两个空表后需要写⼊数据:# user1 = User(username="zy")# db.session.add(user1)# mit()## user2 = User(username="ly")# db.session.add(user2)# mit()## article1 = Article(title="zy1", content="zy1",author_id=1)# article2 = Article(title="zy2", content="zy2", author_id=1)# article3 = Article(title="ly1", content="ly1", author_id=2)# article4 = Article(title="ly2", content="ly2", author_id=2)# db.session.add(article1)# db.session.add(article2)# db.session.add(article3)# db.session.add(article4)# mit()User模块下user表的结构应该是:id username1zy2lyArticle模块下articler表的结构应该是:id title content author_id1zy1zy112zy2zy213ly1ly124ly2ly223,增删改查(这⾥代码没怎么修改,主要看黄字部分)def hello_world():# 数据的增加:# article1 = Article(title="a",content="A")# db.session.add(article1)# # 数据的增删改查都是在“session”⾥做的,但是它和web中的“session”不⼀样。
SQL中主键、外键完整性约束的作用以及创建语句
SQL中主键、外键完整性约束的作用以及创建语句SQL的主键和外键约束SQL的主键和外键的作用:外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外键就是起约束作用。
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
比如:学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,学号就是一个主键;课程表(课程编号,课程名,学分)其中课程编号是唯一的,课程编号就是一个主键;成绩表(学号,课程号,成绩)成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键;同理,成绩表中的课程号是课程表的外键。
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。
是能确定另一张表记录的字段,用于保持数据的一致性。
比如,A 表中的一个字段,是B表的主键,那他就可以是A表的外键。
二、主键、外键和索引的区别定义:主键--唯一标识一条记录,不能有重复的,不允许为空外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值索引--该字段没有重复值,但可以有一个空值作用:主键--用来保证数据完整性外键--用来和其他表建立联系用的索引--是提高查询排序的速度个数:主键--主键只能有一个外键--一个表可以有多个外键索引--一个表可以有多个唯一索引创建SQL的主键和外键约束的方法:create table Student --建表格式:create table 自定义的表名( --字段名一般为有一定意义的英文StudentName nvarchar(15), -- 格式:字段名类型()括号里面的是允许输入的长度StudentAge int, --int型的后面不需要接长度StudentSex nvarchar(2) --最后一个字段后面不要逗号)--在创建表时就可以对字段加上约束:create table Student(StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)StudentAge int DEFAULT ((0)), --加默认值约束StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式))--如果在表创建好了以后再加约束,则格式分别为:-- 主键:alter table 表名add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名primary key (字段名) --字段名同上--唯一约束:alter table 表名add constraint UQ_字段名unique (字段名)--外键约束:alter table 表名add constraint FK_字段名--"FK"为外键的缩写foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)alter table 成绩表add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)ON UPDATE CASCADE ON DELETE CASCADE级联更新,级联删除,这样在删除主表Student时,成绩表中该学生的所有成绩都会删除。
[SqlServer]SQLServer创建约束图解
[SqlServer]SQLServer创建约束图解SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束,今天使⽤SQLServer2008 来演⽰下这⼏种约束的创建和使⽤的⽅法。
1 、 Primary Key 约束在表中常有⼀列或多列的组合,其值能唯⼀标识表中的每⼀⾏。
这样的⼀列或多列成为表的主键(PrimaryKey)。
⼀个表只能有⼀个主键,⽽且主键约束中的列不能为空值。
只有主键列才能被作为其他表的外键所创建。
创建主键约束可以右键单击表,选择设计。
选中要创建主键的列,然后单击上⾯的⼩钥匙。
也可以右键需要创建主键的列,然后单击⼩钥匙。
2 、 Foreign Key 约束外键约束是⽤来加强两个表(主表和从表)的⼀列或多列数据之间的连接的。
创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。
也就是说只有主表的主键才能被从表⽤来作为外键使⽤,被约束的从表中的列可以不是主键,主表限制了从表更新和插⼊的操作。
右键单击需要设置外键的列(此时的表是作为从表在外键中出现),选择关系。
接下来点击添加 --> 表和列规范。
在主键表中选择主表和主表的主键列。
设置完后保存即可。
3 、 Unique 约束唯⼀约束确保表中的⼀列数据没有相同的值。
与主键约束类似,唯⼀约束也强制唯⼀性,但唯⼀约束⽤于⾮主键的⼀列或者多列的组合,且⼀个表可以定义多个唯⼀约束。
右键单击要设置的列选择索引 / 键。
然后单击添加按钮。
选择需要设置的列,可以是⼀列也可以是多列的组合。
关闭并保存设置。
4 、 Default 约束若在表中定义了默认值约束,⽤户在插⼊新的数据⾏时,如果该⾏没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为 NULL 。
以学⽣信息表为例,在表设计器中,为性别列填写默认值男。
5 、 Check 约束Check 约束通过逻辑表达式来判断数据的有效性,⽤来限制输⼊⼀列或多列的值的范围。
sql语句添加约束
sql语句添加约束sql语句添加约束--主键约束(Primary Key constraint):要求主键列的数据唯⼀,并且不允许为空。
--唯⼀约束(Unique Constraint):要求该列唯⼀,允许为空,但只能出现⼀个空值。
--检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束。
--默认约束(Default Constraint):某列的默认值,如我们的男性同学较多,性别默认为男。
--外键约束(Foreign Key):⽤于在两表之间建⽴关系需要制定引⽤主表的哪⼀列。
语法如下alter table 表名add constraint约束名约束类型具体的约束说明⽰例:--添加主键约束alter table stuInfoadd constraint PK_stuNo primary key(stuNo)--添加唯⼀键约束alter table stuInfoadd constraint UQ_stuID unique(stuID)--添加默认约束alter table stuInfoadd constraint DF_stuAddress default('地址不详') for stuAddress--添加检查约束alter table stuInfoadd constraint CK_stuAge check(stuAge between 15 and 40)--添加外键约束alter table stuInfoadd constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)删除约束alter table 表名drop constraint约束名。
SQL语法CONSTRAINT约束操作详情
SQL语法CONSTRAINT约束操作详情CONSTRAINT约束,即对数据库表中的数据进⾏约束,以保证数据记录的完整性和有效性。
⽐较常⽤的是,创建表时添加约束,但是为了整理记录,这⾥把所有的⽤法都写下来,但是⼤家按照最常见的重点掌握。
1.主键约束 primary key#主键约束 primary key#添加主键添加后系统会默认为对应的列添加索引提⾼检索速度#⽅法⼀(单列主键):id int PRIMARY KEY //⽅法⼀是创建表时当前定义字段后⽅法⼆是创建表时所有定义字段后#⽅法⼆(单|多列主键):CONSTRAINT pk1 PRIMARY KEY(name,deptId) //CONSTRAINT pk1可以省略 pk1是索引名可以任意取#⽅法三(创建表后添加):ALTER TABLE emp1 ADD PRIMARY KEY(eid) //可以是单列也可以是多列#删除主键#ALTER TABLE emp1 DROP PRIMARY KEY //每个表只有⼀个主键删除的时候不分单列主键还是联合主键#主键作⽤是主键约束的列是唯⼀且⾮空2.⾃增长约束 auto_increment#⾃增长约束 auto_increment#⼀般⽤来实现主键的⾃增长约束⽤户就不再需要为其赋值数据库⾃动赋值默认从1开始#id int PRIMARY KEY auto_increment#创建表时可以指定⾃增长初始值/*CREATE TABLE IF NOT EXISTS mydb1.employee(id int,name varchar(20),gender varchar(10),salary double)auto_increment=100;*/#创建表后可以添加⾃增长初始值#ALTER TABLE emp2 auto_increment=100#delete 后默认⾃增长从断点开始#truncate 后默认⾃增长从1开始(⽆论有⽆初始值)3.⾮空约束 not null#⾮空约束 not null //真正的空是NULL ⽽不是'NULL'或者''#添加约束#⽅法⼀:name varchar(20) not null#⽅法⼆:ALTER TABLE emp3 MODIFY name varchar(20) not null (创建表后添加)#删除约束#ALTER TABLE emp3 MODIFY name varchar(20)4.唯⼀约束 unique#唯⼀约束 unique#添加约束 //在mysql中NULL和任何值都不相同包括它⾃⼰#⽅法⼀:name varchar(20) unique#⽅法⼆:ALTER TABLE emp4 ADD CONSTRAINT unique_pn unique(name) (创建表后添加)#删除约束#ALTER TABLE emp4 DROP INDEX unique_pn // unique_pn 是约束名若没有名字则默认是使⽤的列名5.默认约束 default#默认约束 default#添加约束#⽅法⼀:address varchar(20) DEFAULT '北京'#⽅法⼆:ALTER TABLE emp5 MODIFY address varchar(20) DEFAULT '北京' (创建表后添加)#删除约束#ALTER TABLE emp5 MODIFY address varchar(20) DEFAULT NULL6.零填充约束 zerofill#零填充约束 zerofill (显⽰效果)了解即可#添加约束#address varchar(20) zerofill#删除约束#ALTER TABLE emp6 MODIFY id int到此这篇关于SQL语法CONSTRAINT约束操作详情的⽂章就介绍到这了,更多相关SQL语法CONSTRAINT约束操作内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。