• 数据库学习随笔


    这篇随笔用来记录数据库的学习,随时更新补充,主要写一些比较少关注的内容

    PERSISTED:
    说明物理存储计算列的值(书本上的解释,什么鬼意思...)

    现实操作中,CHECK、FOREIGN KEY 和 NOT NULL 约束要求计算列是持久化(PERSISTED)的。

    大概它的作用就是这个吧?

    AS CONVERT (AS是计算列关键字,CONVERT将字符串从一个字符集转化为另一个字符集):

    CREATE TABLE test.测试
    (
    字符串 char(10) PRIMARY KEY

    新字符串 AS CONVERT(TINYINT,SUBSTRING(字符串,3,2)) PERSISTED NOT NULL  --从字符串第三位开始(包括第三位),截取两个字符

    )

    CHECK 里面使用 OR  IN

    CREATE TABLE test.学生(
    学号 char(10) PRIMARY KEY,
    姓别 char(2) CHECK(姓别='男' OR 姓别='女'),
    状态 char(4) CHECK(状态 IN('正常','留级','休学','退学'))
    )

    联合关键字?

    (1)学号和课程编号两列构成主关键字(需要表级完整性约束)

    (2)学号参照学生表的学号(约束选课的学生必须存在)

    (3)课程编号参照课程表的课程编号(约束被选的课程必须存在)

    CREATE TABLE test.选课
    (
    学号 char(10) FOREIGN KEY REFERENCES student.学生,
    课程编号 char(6) FOREIGN KEY REFERENCES student.课程,
    考试成绩 tinyint CHECK(考试成绩 BETWEEN 0 AND 100) DEFAULT NULL
    PRIMARY KEY(学号,课程编号)
    )

    如果某列定义了外部关键字约束,则需要先删除相关的约束,才能删除此列。

    CREATE TABLE test.课程(
    责任教师 char(6) CONSTRAINT duty_teacher
    FOREIGN KEY REFERENCES student.教师(编号),
    )

    第一步:ALTER TABLE test.课程 DROP duty_teacher

    第二步:ALTER TABLE test.课程 DROP COLUMN 责任教师

    ON DELETE SET NULL --当删除时,该列置为空值

    ON UPDATE CASCADE --级联更新

  • 相关阅读:
    Centos 7.X 安装JDK1.8
    CentOS 7.X 搭建时间服务器 --- chrony
    CentOS 7.X 设置系统时间
    CentOS 7.X 关闭SELinux
    C11工具类:时间处理
    C11内存管理之道:智能指针
    C11性能之道:标准库优化
    C11性能之道:转移和转发
    C11性能之道:右值引用
    C11简洁之道:tupe元祖
  • 原文地址:https://www.cnblogs.com/ghylzwsb/p/5384696.html
Copyright © 2020-2023  润新知