数据库实验

本文介绍了如何使用SQL创建和修改数据库及表结构,包括创建studentdb和spjdb数据库,以及在其中创建多个表。此外,还详细阐述了如何修改表结构,添加约束,创建索引以提高查询效率,同时展示了在不同架构下创建表的权限差异。内容涵盖数据类型修改、默认值设置、外键约束、唯一性约束、检查约束、索引类型等数据库管理关键知识点。
摘要由CSDN通过智能技术生成

实验一

  1. 创建studentdb数据库,创建spjdb数据库

  2. 在studentdb中创建三个表student,course ,sc

  3. 在spjdb中创建四个表S,P,J,SPJ

  4. 在studentdb中创建架构Production和Person并比较区别

    1. 创建架构-图形化界面
      1. 连接服务器-》展开数据库文件夹-》选择数据库并展开-》展开安全性-》展开架构-》右键单击架构文件夹选择创建架构
  5. 修改表结构

    (1) 将表course的cname列的数据类型改为varchar(40).
    (2) 为表student增加一个新列: birthday(出生日期), 类型为datetime, 默认为空值.
    (3) 将表sc中的grade列的取值范围改为小于等于150的正数.
    (4) 为Student表的“Ssex”字段创建一个缺省约束,缺省值为’男’
    (5)为“Sdept”字段创建一个检查约束,使得所在系必须是’CS’、’MA’或’IS’之一。
    (6)为Student表的“Sname”字段增加一个唯一性约束
    (7)为SC表建立外键,依赖于Student表的fk_S_c约束。
    (8)禁止启用Student表的“Sdept”的CHECK约束ck_student。

  6. 建立索引

    (1) 在student表的sname列上建立普通降序索引.
    (2) 在course表的cname列上建立唯一索引.
    (3) 在sc表的sno列上建立聚集索引.
    (4) 在spj表的sno(升序), pno(升序)和jno(降序)三列上建立一个普通索引.

#创建数据库
CREATE DATABASE studentdb
CREATE DATABASE spjdb
/*在studentdb中创建三个表*/
CREATE TABLE student
(
    sno CHAR(9) PRIMARY KEY,
    sname CHAR(10) NOT NULL,
    ssex CHAR(2) ,
    sage SMALLINT,
    sdept char(15),
    CHECK (sage>=12),
)
CREATE TABLE course
(
    cno CHAR(4) PRIMARY KEY,
    cname CHAR(20) NOT NULL,
    cpon CHAR(4) NOT NULL,
    ccredit SMALLINT,
)
CREATE TABLE sc
(
    sno CHAR(9),
    cnp CHAR(20) PRIMARY KEY,
    grade DECIMAL(5) NOT NULL,
    CHECK(grade>=0 and grade<=100)
)
/*在spjdb中创建四个表*/
CREATE TABLE S
(
    sno CHAR(2) PRIMARY KEY,
    sname CHAR(10),
    statu SMALLINT,
    city CHAR(10) NOT NULL,
    CHECK(statu>0),
)
CREATE TABLE P
(
    pno CHAR(2) PRIMARY KEY,
    pname CHAR(10) NOT NULL ,
    color CHAR(2),
    pweight SMALLINT,
    CHECK (pweight>0),
)
CREATE TABLE J
(
    jno CHAR(2) PRIMARY KEY,
    jname CHAR(10) NOT NULL,
    jcity CHAR(10),
)
CREATE TABLE SPJ
(
    son CHAR(2),
    pon CHAR(10),
    jno CHAR(10) PRIMARY KEY,
    qty SMALLINT,
    CHECK (qty>0),
)
/*在studentdb中创建架构Production和Person并比较区别*/
/*首先创建用户*/
CREATE LOGIN wang WITH PASSWORD='root'
CREATE USER wang FOR LOGIN wang
GRANT create table to st
/*然后创建架构 图形界面操作方法如上 
然后用户st以SQL SERVER身份验证方式登录服务器,尝试执行如下的SQL语句:
    create table Person.t1
    (
        id int,
        name char(10)
    )
    --成功
    create table Production.t1
    (
        id int,
        name char(10)
    )          --失败,原因?
*/
--修改表结构
ALTER TABLE course ALTER COLUMN cname VARCHAR(40)
ALTER TABLE course ADD  brithday Datetime
ALTER TABLE sc4 ADD  constraint grade CHECK(grade<=150)
ALTER TABLE student ADD CONSTRAINT ssex1 DEFAULT '男' FOR ssex
ALTER TABLE student ADD CONSTRAINT sdept1 check(sdept='CS'or sdept='MA'or sdept='IS')
ALTER TABLE student ADD CONSTRAINT sname1 UNIQUE(sname)
ALTER TABLE student NOCHECK CONSTRAINT ch_student
--建立索引
CREATE INDEX pt ON student(sname)
CREATE UNIQUE INDEX wy ON course(cname)
CREATE CLUSTERED INDEX jj ON (sno)
CREATE INDEX lh ON SPJ(son,pon,jno)
--验证索引能提高查询速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值