第四单元 表约束

这篇具有很好参考价值的文章主要介绍了第四单元 表约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了维护数据表的数据完整性而设定的一系列规则,防止用户在数据表中插入一些错误的数据.

1. 表约束分类

  1. 主键约束:保证数据的完整性,唯一性,原子性(Id:编号)

  2. 外键约束

    分类表数据:

    Id 分类名称
    1 衣服
    2 手机
    3 电器

    商品表数据:

    商品编号 商品名称 价格 所属分类(外键)
    1 李宁牌运动服 300 1
    2 华为7500手机 3600 2
    3 国美电饭堡 200 3
    4 国美油烟机 2500 5(不合理
  3. 唯一约束

  4. 检查约束

  5. 默认值约束

  6. 非空约束

 

2. 主键约束

主键只能有一个,但是可以由1-n个字段组成,多个字段组成的主键叫复合主键

-- 在表中添加主键约束
 create database 第四单元; -- 简写的创建数据库的语法,数据库的相关参数都是默认值
 -- 切换数据库
 use 第四单元;

 -- 第一种写法
 create table Category
 (
     -- 列级约束
    Id int primary key identity, -- 商品分类编号, primary key 是主键约束
    CategoryName varchar(20)
 )
 -- 第二种写法
 create table Category2
 (
    Id int identity,
    CategoryName varchar(20),
     --primary key(Id)
     -- 表级约束
     constraint pk_category2_id primary key(id)
 )
 -- 第三种写法,假设表已经创建完毕,突然发现,主键忘记创建了
  create table Category3
 (
    Id int identity, -- 商品分类编号, primary key 是主键约束
    CategoryName varchar(20)
 )
-- 表级约束
 alter table Category3
 add constraint pk_category3_id primary key(Id)

 

表级约束,列级约束

列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名; 表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用’,’分隔,定义表约束时必须指出要约束的那些列的名称。

区别

如果完整性约束涉及到该表的多个属性列,必须定义在表级上,否则既可以定义在列级也可以定义在表级。

简而言之: 列级约束:列级约束是行定义的一部分,只能应用于一列上。 表级约束:表级约束是独立于列的定义,可以应用在一个表中的多列上。

3. 复合主键

create table score
(
    studentId int,
    courseId int,
    score int,
    addTime datetime,
    primary key(studentId,courseId) -- 复合主键
)

 

学生编号 课程编号 成绩 添加时间
1 1 80 2022-04-02
1 2 78 2022-04-02
2 1 92 2022-04-02

 

2. 外键约束

-- 商品表
 create table Product
 (
    Id int primary key identity, -- 商品编号
    ProductName varchar(20),
    Price decimal(8,2),  -- 8,2 指的是,加上小数最多可以有8位,和2位小数
    -- 商品分类,这里的int 必须与Category商品表中的Id的类型保持一致
    -- foreign key :外键
    -- references:参照,引用,指向
    CategoryId int foreign key references Category3(Id)
 )

 



 -- 表级 外键
 create table Product2
 (
    Id int primary key identity, -- 商品编号
    ProductName varchar(20),
    Price decimal(8,2),  -- 8,2 指的是,加上小数最多可以有8位,和2位小数
    -- 商品分类,这里的int 必须与Category商品表中的Id的类型保持一致
    -- foreign key :外键
    -- references:参照,引用,指向
    CategoryId int,
    constraint fk_CategoryId foreign key(CategoryId) references Category3(Id)
 );
​

 


-- 第三种:在创建表的时候,添加了外键,但是没有加外键约束
 create table Product3
 (
    Id int primary key identity, -- 商品编号
    ProductName varchar(20),
    Price decimal(8,2),  -- 8,2 指的是,加上小数最多可以有8位,和2位小数
    -- 商品分类,这里的int 必须与Category商品表中的Id的类型保持一致
    -- foreign key :外键
    -- references:参照,引用,指向
    CategoryId int
 );
 alter table Product3
 add constraint fk_CategoryId foreign key(CategoryId) references Category3(Id)

 

3. 唯一约束

-- 表级唯一约束
 create Table UserInfo2
  (
      Id int primary key identity,
      NickName varchar(20) , -- 用户姓名
      Email varchar(20),
      constraint uq_NickName unique(NickName) -- NickName 添加了一个唯一约束
  );
  
  -- 也可以这样
   create Table UserInfo2
  (
      Id int primary key identity,
      NickName varchar(20) unique(NickName), 
      Email varchar(20)
  );

 

Id 用户名 邮箱
1 zhangsan 1310734441@qq.com
2 lisi 252618779@163.com
3 lisi(失败) lisi@outlook.com

4. 检查约束

Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围

第四单元 表约束

 

Create Table UserInfo4
 (
    Id int primary key identity,
    NickName varchar(20),
    Email varchar(20),
    Sex varchar(10) check(Sex in('','')), --性别:检查性别只能输入 ,男或者女
    Age tinyint check(Age>=18), -- 年龄:检查年龄是否大于等于18
    -- len(Pwd):获取密码的实际长度
    Pwd varchar(50) check(len(Pwd)>=4 and len(Pwd)<=16), -- 密码:密码的实际长度必须是4-16位
​
 )

 

请判断如下哪些数据是非法的(可以在评论区或者弹幕中告诉我答案)?

id 姓名 邮箱 性别 年龄 密码
1 张三 111@qq.com 18 root
2 李四 222@qq.com 保密 20 123456
3 叶星辰 123@163.com 19 123
4 赵日天 666@yahu.com 17 12345678

 

5. 默认值约束

create Table UserInfo6
 (
    Id int primary key identity,
    NickName varchar(20) default '张三', -- 默认值为张三
    Email varchar(20), -- 可以为null 
    Age tinyint default '10' -- 添加默认值约束
 )

 

6. 非空约束

 Create Table UserInfo5
 (
    Id int primary key identity,
    NickName varchar(20) not null, -- 非空约束
    Email varchar(20), -- 可以为null 

 )

 

 

7. 作业

一. 创建数据库DBStudents

二. 创建表student表

(stu_id 主键 不为空

stu_name 不为空

stu_tel;

stu_sex 检查约束男,女,默认男;

stu_address 默认 北京;

stu_age 介于16-40岁之间

三. 案例完成思路及要求:

  1. 使用sql命令语句创建数据库(10分)

  2. 使用sql命令语句创建数据表和创建正确约束(50分)

  3. 使用sql命令语句修改表结构删除表中stu_age列(10分)

  4. 使用sql命令语句删除表(10分)

  5. 使用sql命令语句删除数据库(10分)

  6. 注释 (10分)

 

配套视频链接:SQLServer 入门基础 - 网易云课堂 (163.com)文章来源地址https://www.toymoban.com/news/detail-746923.html

到了这里,关于第四单元 表约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实现一个MYSQL工具类,包含判断创建数据表是否存在,创建数据表

    可以使用Python的MySQLdb模块来实现一个MYSQL工具类。下面是一个简单的实现示例: 使用示例: 在上面的示例中,我们首先创建了一个MySQLTool类,并在初始化方法中传入了数据库的连接信息。然后使用connect方法连接到数据库。 table_exists方法用于判断给定的数据表是否存在,它执

    2024年01月15日
    浏览(51)
  • 【MySQL】MySQL 数据类型,数值、日期和时间、字符串类型,创建数据表,删除数据表

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日

    2024年02月15日
    浏览(61)
  • excel vba 将多张数据表的内容合并到一张数据表

    功能描述:  一个Excel文件有很多个 样式相同 的数据表, 需要将多张数据表的内容合并到一张数据表里。 vba实现代码如下:  文件链接:数据表合并.bas 下载后直接在excel 查看代码处导入文件即可。

    2024年02月11日
    浏览(37)
  • 数据表插入数据

    在MySQL通过INSERT语句向数据表中插入数据。在此,我们先准备一张学生表,代码如下:  create table student(  id int,  name varchar(30),  age int,  gender varchar(30)  ); 1. 为表中所有字段插入数据 每个字段与其值是严格一一对应的。也就是说:每个值、值的顺序、值的类型必须与对应的

    2024年02月08日
    浏览(38)
  • 第四单元 表约束

    为了维护数据表的数据完整性而设定的一系列规则, 防止用户在数据表中插入一些错误的数据 . 主键约束:保证数据的完整性,唯一性,原子性(Id:编号) 外键约束 分类表数据: Id 分类名称 1 衣服 2 手机 3 电器 商品表数据: 商品编号 商品名称 价格 所属分类(外键) 1 李宁

    2024年02月05日
    浏览(27)
  • 数据库||数据表的更新

    1.实验题目:数据表的更新 2.实验目和要求: 1)掌握SQL语句的数据操纵功能 2)掌握SQL语言的数据插入,修改,删除操作 3)掌握与嵌套查询相结合的插入,删除,修改数据的SQL语句 3.实验步骤: 1) 按实验内容要求完成各项操作 2) 根据题目要求给出解决方案 3) 提交实验报告 4.实验内容

    2024年02月19日
    浏览(46)
  • Hive数据表删除数据操作

    hive数据表中,数据的删除不可以想Oracle、MySQL那样使用delete语句删除,所以在删除数据的时候使用另外的方法 hive的数据删除,一般是两种方式 当需要删除某一条数据的时候,我们需要使用 insert overwrite 释义:就是用满足条件的数据去覆盖原表的数据,这样只要在where条件里

    2024年02月11日
    浏览(42)
  • 大数据StarRocks(七):数据表创建

    1.1 Row Column 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 ⚫ 在默认的数据模型中,Column 只分为排序列和非排序列。存储引擎会按照排序列对数据进行排序存储,并建立稀疏索引,以便在排序数据上进行快速查找。 ⚫ 而在

    2024年01月16日
    浏览(48)
  • mysql数据库和数据表

    常用的数据类型: int : 整型  用于定义整数类型的数据 float : 单精度浮点4字节32位  准确表示到小数点后六位. double :双精度浮点8字节64位 char :固定长度的字符类型  用于定义字符类型数据 varchar :可变长度的字符类型 text : 文本 image: :图片 SQL语言: Structured Query La

    2024年02月10日
    浏览(54)
  • DB2的系统数据表空间,用户数据表空间,系统临时表空间,用户临时表空间详解

    可以参考DB2 information center的官方文档:https://www.ibm.com/docs/zh/db2/10.5?topic=spaces-table-system-user-temporary-data 每个数据库都必须要有最小的一组表空间,这些表空间用于存储系统数据、用户数据和临时数据。 一个数据库至少必须包含三个表空间: 目录表空间 一个或多个用户表空间

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包