SQL的五大约束包括主键约束(PRIMARY KEY)、唯一性约束(UNIQUE)、外键约束(FOREIGN KEY)、非空约束(NOT NULL)和默认约束(DEFAULT)。
sql约束的作用:主要是保证数据的完整性、准确性和一致性,从而确保数据库中存储的数据质量。
温馨提示:以下举例为mysql版本,若您是oracle或其他数据库,语法会有差异!!!
- 主键约束(PRIMARY KEY):确保某列必须要有唯一的标识符。
应用场景:用于唯一标识数据库表中的每条记录。
注意点:一个表中只能有一个主键,主键列的值必须是唯一的,不能为空。
举例
CREATE TABLE Employees ( EmployeeID int NOT NULL, FirstName varchar(50), LastName varchar(50), BirthDate date, PRIMARY KEY (EmployeeID) );
在上述示例中,EmployeeID被定义为主键,确保每个员工都有一个唯一的标识符。
当表被创建后,可以使用ALTER TABLE语句来添加或删除约束
--添加 ALTER TABLE 表名 ADD PRIMARY KEY (列名); --例子:将"user_info"表的"UserID"列设置为主键 ALTER TABLE user_info ADD PRIMARY KEY (UserID); --删除 ALTER TABLE 表名 DROP PRIMARY KEY ; --例子:删除用户表的主键 ALTER TABLE user_info DROP PRIMARY KEY ;
- 唯一性约束(UNIQUE):唯一性约束确保在非主键列中不输入重复的值。
应用场景:用于防止在列中输入重复的值。
注意点:唯一性约束允许空值,但当和参与唯一性约束的任何值一起使用时,每列只允许一个空值。
举例
CREATE TABLE Users ( UserID int NOT NULL, Username varchar(50) NOT NULL, Email varchar(100), UNIQUE (Username), UNIQUE (Email) );
在上述示例中,Username和Email字段都被定义为唯一约束,确保用户名和电子邮件地址都是唯一的。当表被创建后,可以使用ALTER TABLE语句来添加或删除约束
--添加唯一约束 ALTER TABLE 表名 ADD UNIQUE (列名); -- 例子 ALTER TABLE user_info ADD UNIQUE (USERID); -- 删除唯一约束 ALTER TABLE 表名 DROP KEY 字段名; -- 例子 ALTER TABLE user_info DROP KEY USERID;
-
外键约束(FOREIGN KEY):外键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。
应用场景:用于保证数据库表之间的关系,确保数据表中的数据符合某种引用完整性。
注意点:外键列的值必须在被参照表的相应列中有对应的数据。
CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, CustomerID int, PRIMARY KEY (OrderID), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
Orders表中的CustomerID字段是一个外键,它引用另一个表Customers中的CustomerID字段,确保订单与客户的关联关系。
当表被创建后,可以使用ALTER TABLE语句来添加或删除约束
--添加外键 ALTER TABLE 表名 ADD FOREIGN KEY 约束名(列名) REFERENCES 另一个表名 (列名); -- 例子 ALTER TABLE user_role ADD FOREIGN KEY user_role_userid (userid) REFERENCES user_info (userid); -- 删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 约束名; -- 例子 ALTER TABLE user_role DROP FOREIGN key user_role_userid ;
- 非空约束(NOT NULL):设置非空约束,该字段不能为空。
应用场景:用于确保某列必须有值,不能为NULL。
注意点:非空约束是一种强制性的约束,它要求列中的值必须被指定,不能为NULL。
CREATE TABLE ContactDetails ( ContactID int NOT NULL, Name varchar(100) NOT NULL, PhoneNumber varchar(20) );
在上述示例中,Name字段被定义为非空约束,确保联系人的姓名不能为空。
当表被创建后,可以使用ALTER TABLE语句来添加或删除约束
--添加非空约束 ALTER TABLE 表名 MODIFY 列名 字段类型 NOT NULL; -- 例子 ALTER TABLE user_info MODIFY userID varchar(64) NOT NULL; -- 删除非空约束 ALTER TABLE 表名 MODIFY 列名 字段类型 NULL; -- 例子 ALTER TABLE user_info MODIFY userID varchar(64) NULL;
-
默认约束(DEFAULT):该数据的默认值。
应用场景:为没有提供输入值的字段或列提供默认值。
注意点:默认值必须满足列的数据类型的要求,如果未指定值则会自动使用默认值。
CREATE TABLE Products ( ProductID int NOT NULL, ProductName varchar(100), Price decimal(10, 2), DefaultStock int DEFAULT 0 );
在上述示例中,DefaultStock字段被定义为默认约束,其默认值为0。当插入新产品时,如果没有指定库存数量,则会默认给0。
当表被创建后,可以使用ALTER TABLE语句来添加或删除约束
--添加DEFAULT约束 ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值; -- 例子 ALTER TABLE user_info ALTER CITY SET DEFAULT '北京'; -- 删除DEFAULT约束 ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT; -- 例子 ALTER TABLE user_info ALTER CITY DROP DEFAULT;
猜你喜欢
- 14天前(万豪酒店 珠海)万豪酒店品牌启航珠海金湾,续写大湾区拓展新篇
- 14天前(屿见不一样是哪个酒店)屿见白纱,遇见自己 “佳能PhotoGirls屿见白纱”摄影派对玩转海岛
- 14天前(云南滇陇工程咨询有限公司)陇滇携手谋发展 文旅合作谱新篇
- 14天前(花王伴你乐享五一好“趣”处)花王伴你乐享五一好“趣”处
- 14天前(马尔代夫华尔道夫酒店多少钱)Chef Zhao就任马尔代夫伊挞富士岛华尔道夫酒店Li Long中餐厅新主厨
- 14天前(2025年安徽省“百场黄梅唱响百家景区”示范展示启动)2025年安徽省“百场黄梅唱响百家景区”示范展示启动
- 14天前(殷建祥简历)全国十大牛商解码:殷建祥如何用178天技术突围打造星空梦星空房
- 14天前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 14天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
- 14天前(泸沽湖大酒店地址)泸沽湖岚岳酒店盛大开业|以摩梭文化为魂,打造高端度假新地标
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章