• sql server笔记1(表的定义)


    准备SQL Server环境

    /* 创建数据库Test /
    CREATE DATABASE Test
    GO
    /
    创建登录名WANG,它的密码是“wang” /
    CREATE LOGIN WANG WITH PASSWORD = ‘wang’
    GO
    /
    选择数据库Test,对该数据库执行操作 /
    USE Test
    GO
    /
    创建用户WANG,把用户WANG映射到登录名WANG */
    CREATE USER WANG FOR LOGIN WAN

    定义schema

    /* 为用户WANG定义一个模式S-T */
    CREATE SCHEMA [S-T] AUTHORIZATION WANG;

    删除 schema

    DROP SCHEMA [S-T];

    表的创立

    CREATE TABLE SC
    (Sno CHAR(9),
    Cno CHAR(4),
    Grade SMALLINT,
    PRIMARY KEY (Sno,Cno),
    /* 主码由两个属性构成,必须作为表级完整性进行定义*/
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
    /* 表级完整性约束条件,Sno是外码,被参照表是Student /
    FOREIGN KEY (Cno)REFERENCES Course(Cno)
    /
    表级完整性约束条件, Cno是外码,被参照表是Course*/
    );

    schema 与 表

    CREATE TABLE [S-T].Student(
    Sno CHAR(9) PRIMARY KEY,
    Sname CHAR(20) UNIQUE,
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20)
    );
    CREATE TABLE [S-T].Course(
    Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(40),
    Cpno CHAR(4),
    Ccredit SMALLINT,
    FOREIGN KEY (Cpno) REFERENCES [S-T].Course(Cno)
    );
    CREATE TABLE [S-T].SC(
    Sno CHAR(9),
    Cno CHAR(4),
    Grade SMALLINT,
    PRIMARY KEY (Sno,Cno),
    FOREIGN KEY (Sno) REFERENCES [S-T].Student(Sno),
    FOREIGN KEY (Cno)REFERENCES [S-T].Course(Cno)
    );

    登录名、用户名、schema、table之间的关系

    在这里插入图片描述

    基本表的基本操作

    添加行

    向Student表增加“入学时间”列,其数据类型为日期型
    ALTER TABLE Student ADD S_entrance DATE;

    修改类型

    将年龄的数据类型由字符型(假设原来的数据类型是
    字符型)改为整数。
    ALTER TABLE Student ALTER COLUMN Sage INT;

    索引建立

    为学生-课程数据库中的Student,Course,SC三个
    表建立索引。Student表按学号升序建唯一索引,Course表
    按课程号升序建唯一索引,SC表按学号升序和课程号降序
    建唯一索引
    CREATE UNIQUE INDEX Stusno ON Student(Sno);
    CREATE UNIQUE INDEX Coucno ON Course(Cno);
    CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC)

    修改索引名

    将SC表的SCno索引名改为SCSno
    ALTER INDEX SCno RENAME TO SCSno;

    删除索引名

    删除Student表的Stusname索引
    DROP INDEX Stusname;

    约束条件

    列值非空f(NOT NULL)

    在定义SC表时,说明Sno、Cno、Grade属性不允
    许取空值。
    CREATE TABLE SC
    ( Sno CHAR(9) NOT NULL,
    Cno CHAR(4) NOT NULL,
    Grade SMALLINT NOT NULL,
    PRIMARY KEY (Sno, Cno),

    /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在
    列级不允许取空值的定义 可以不写 * /
    );

    列值唯一(UNIQUE)

    建立部门表DEPT,要求部门名称Dname列取值唯
    一,部门编号Deptno列为主码
    CREATE TABLE DEPT
    ( Deptno NUMERIC(2),
    Dname CHAR(9) UNIQUE NOT NULL,
    /要求Dname列值唯一, 并且不能取空值/
    Location CHAR(10),
    PRIMARY KEY (Deptno)
    );

    检查列值是否满足一个条件表达式 CHECK

    Student表的Ssex只允许取“男”或“女”。
    CREATE TABLE Student
    ( Sno CHAR(9) PRIMARY KEY,
    Sname CHAR(8) NOT NULL,
    Ssex CHAR(2) CHECK (Ssex IN (‘男’,’女’)),
    /*性别属性Ssex只允许取’男’或’女’ */
    Sage SMALLINT,
    Sdept CHAR(20)
    )

    check

    当学生的性别是男时,其名字不能以Ms.打头。
    CREATE TABLE Student
    ( Sno CHAR(9),
    Sname CHAR(8) NOT NULL,
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20),
    PRIMARY KEY (Sno),
    CHECK (Ssex=‘女’ OR Sname NOT LIKE ‘Ms.%’)
    /定义了元组中Sname和 Ssex两个属性值之间的约束条件/
    );

    check 、 constraint 、 foreign key

    . 使用“BETWEEN AND”方式创建约束check_grade
    ALTER TABLE SC ADD CONSTRAINT “check_grade” CHECK
    (Grade BETWEEN 0 AND 100)

    请为SC表创建名为FK_SC_Student的外键,该外键引用
    了表Student的Sno字段
    ALTER TABLE SC ADD CONSTRAINT FK_SC_Student
    FOREIGN KEY(Sno) REFERENCES Student(Sno)

  • 相关阅读:
    excel数据导入到数据库的方法
    WPF里ItemsControl的分组实现
    北斗导航 | 最小二乘模糊度估计方法(LSAR:Least Squares Ambiguity Resolution)
    善用Google搜索,资源唾手可得
    代码随想录day48|转行当小偷咯|打家劫舍系列|Golang
    【测试面试】测试开发面试算法高频题,这些题你会多少?
    Flink Hudi DataStream API代码示例
    数字图像处理(入门篇)一 图像的数字化与表示
    Soundness
    使用python获取城市经纬度以及城市间的距离、火车时间、所需成本等
  • 原文地址:https://blog.csdn.net/weixin_45952706/article/details/127763185