zoukankan      html  css  js  c++  java
  • 数据库作业4:SQL练习1

    一、模式的定义与删除
    1、定义模式
    例:为用户 WANG 定义一个学生-课程模式S-T
    (1)CREATE SCHEMA “S-T” AUTHORIZATION WANG
    这个命令成功执行的前提是存在 WANG 这个用户。若没有则先建立一个 SCHOOL 数据库。(若数据库已存在则跳过)
    (2)CREATE DATABASE SCHOOL
    建立一个用户名为 WANG 的用户
    没有创建模式的例子:
    (3)CREATE SCHEMA AUTHORIZATION WANG
    定义模式实际上是定义了一个命名空间,在此空间可以定义该模式包含的数据库对象。如基本表、视图、索引等。
    建立模式下的表

    CREATE SCHEMA TEST AUTHORIZATION wang
    CREATE TABLE TAB1(COL1 SMALLINT,
    				COL2 INT,
    				COL3 CHAR(20),
    				COL4 NUMERIC(10,3),
    				COL5 DECIMAL(5,2)
    				);
    

    必须将执行过的代码删去,重复执行会报错
    可以先点击“√”分析语句再执行。 若无第一句,TAb1默认建立在dbo。
    也可去除第一句以下面的代码将表建立在TEST模式下(前提是TEST模式已建立)

    CREATE TABLE TEST.TAB2
    		(COL1 SMALLINT
    		);
    

    定义基本表所属模式
    (1)在表名中明确给出模式名

    Create table"S-T".Student(......); 
    

    (2)创建模式语句中同时建表

    CREATE SCHEMA TEST AUTHORIZATION WANG
    CREATE TABLE TAB1   ( COL1 SMALLINT, 
                          COL2 INT,
                          COL3 CHAR(20),
                          COL4 NUMERIC(10,3),
                          COL5 DECIMAL(5,2)
                        );
    

    (3)设置所属的模式

    CREATE TABLE TEST.TAB2
                  ( COL1 SMALLINT                                                                                    
                  );
    

    2、模式的删除
    (1)CASCADE(级联)
    删除模式的同时把该模式所有的数据库对象全部删除。
    (2)RESTRICT(限制)
    如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。仅当该模式中没有任何下属的对象时才执行。
    就是级联不管是否有下属对象,执行即全部删除。限制若有下属对象则拒绝执行删除语句。

    二、基本表的定义、删除与修改
    1、表的定义
    格式:
    CREATE TABLE <表名>
    (<列名> <数据类型>[ <列级完整性约束条件> ]
    [,<列名> <数据类型>[ <列级完整性约束条件>] ]

    [,<表级完整性约束条件> ] );
    <表名>:所要定义的基本表的名字
    <列名>:组成该表的各个属性(列)
    <列级完整性约束条件>:涉及相应属性列的完整性约束条件
    <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
    !!!<列名> <数据类型>至少有一行。
    !!! 列级完整性约束条件,表级完整性约束条件,可以有也可以没有。
    列级完整性约束条件 是约束当前列。涉及一个属性列的 表级完整性约束条件,可以写成列级完整性约束条件,涉及多个属性列的 表级完整性约束条件 只能写在最后。

    CREATE TABLE Student
    		(Sno CHAR(9) PRIMARY KEY,  //学号是主码
    		Sname CHAR(20) UNIQUE,     //取值唯一
    		Ssex CHAR(2),
    		Sage SMALLINT,
    		Sdept CHAR(20)
    		);
    

    建立一个“课程”表Course

    CREATE TABLE  Course
              (Cno      CHAR(4) PRIMARY KEY,
               Cname    CHAR(40),            
               Cpno     CHAR(4),               	                      
               Ccredit  SMALLINT,
               FOREIGN KEY (Cpno) REFERENCES  Course(Cno) 
              ); 
    

    意思为 Cpno 是外码,被参照表是 Course ,被参照列是 Cno 。
    SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度。

    选择合适的数据类型,推荐用变长的数据类型 ,二进制可以存照片,视频。

    2、修改基本表
    格式:
    ALTER TABLE <表名>
    [ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
    [ ADD <表级完整性约束>]
    [ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
    [ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
    [ALTER COLUMN <列名><数据类型> ] ;

    <表名>是要修改的基本表
    ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
    DROP COLUMN 子句用于删除表中的列
    如果指定了 CASCADE 短语,则自动删除引用了该列的其他对象
    如果指定了 RESTRICT 短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
    DROP CONSTRAINT 子句用于删除指定的完整性约束条件
    ALTER COLUMN 子句用于修改原有的列定义,包括修改列名和数据类型

    可通过打开文件将文件里的代码导入。

    (1)向表内增加列
    向Student表增加“入学时间”列,其数据类型为日期型
    不管基本表中原来是否已有数据,新增加的列一律为空值。
    (2)修改数据类型
    将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
    (3)增加约束条件
    增加课程名称必须取唯一值的约束条件。
    3、删除基本表
    格式:
    DROP TABLE <表名>[RESTRICT| CASCADE];
    RESTRICT:删除表有限制。
    (1)被删除表不能被其他表的约束所引用。
    (2)被删除表不能有依赖该表的对象。
    CASCADE:删除该表无限制
    删除该表时,连连同相关的依赖对象一起删除。
    和模式的删除类似。

  • 相关阅读:
    Flask-SQLAlchemy 学习总结
    ubuntu安装redis
    PostgreSQL在Ubuntu上安装指南
    Linux(Ubuntu)下MySQL的安装与配置
    python wechat_sdk间接性的出现错误OfficialAPIError: 40001,说access_token已过期或者不是最新的。
    django不要设置datetime字段auto_now=True
    python 装饰器和 functools 模块
    关于 Python Iterator 协议的一点思考
    python中的enumerate函数
    8 种常被忽视的 SQL 错误用法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13285176.html
Copyright © 2011-2022 走看看