实验四 SQL的数据定义语句

题目

  1. 通过SQL语句创建名为ecommerce1的数据库:

CREATE DATABASE ecommerce1

2、在数据库ecommerce1中练习模式的创建和删除语句(如给用户li创建一个学生管理模式“S-T”)(需要先添加一个用户li)

3、在数据库ecommerce1中执行SQL语句操作,创建如下表:

商品类别表:category(catno,catname,describe),主码为catno

商品表:product(prono,proname,brand,stock,supno,price,cost,picture,catno,ontime,status),要求proname不能取空值

供应商表:supplier(supno,supname,contactname,address,telephone),主码为(supno),属性supname不能取空值

订单表:orders(orderno,memno,prono,qty,discount,totalmoney,orderdate,paydate), 属性prono参照商品表product的属性prono,memno参照会员表member的属性memno

会员表:member(memno,memname,address,telephone,username,userpwd)

员工表:employee(empno,empname,depno,sex,telephone,username,userpwd)

部门表:department(depno,depname,manager,deptotal)

(说明:表的属性设置具体参照实验二即可)

4、使用sql语句修改表:

(1)为订单表增加一属性deliverdate(发货日期),数据类型为datetime,允许取空值。

(2)修改商品表中属性列ontime的数据类型为date

(3)为商品类别表中属性列catname增加不能取空值(not null)的约束

(4)为商品表增加一个主码约束,约束名为pk1,主码为prono

(5)为员工表employee的属性userpwd增加一个默认值约束,默认值为123456,约束名为DF1

(6)删除约束DF1

(7)为会员表member属性列username添加取唯一值的约束,约束名为UK1

(8)删除订单表中新增的属性deliverdate

(9)为商品表中属性列catno增加一个外码约束,约束名为FK1,要求其参照商品类别表中主码catno的值

(10)删除会员表、员工表和部门表

步骤如下:

1、通过SQL语句创建名为ecommerce1的数据库:

   

 2、在数据库ecommerce1中练习模式的创建和删除语句(如给用户li创建一个学生管理模式“S-T”)(需要先添加一个用户li)

  

然后通过sql语句CREATE USER li FOR LOGIN li;创建一个与登录名li相关联的用户

然后通过sql语句GRANT CREATE SCHEMA TO li;,为其分配创建模式的权限

CREATE SCHEMA [S-T] AUTHORIZATION li;   这将在 "ecommerce1" 数据库中创建一个名为 "S-T" 的模式,并将其所有权授予用户 "li"。

3、在数据库ecommerce1中执行SQL语句操作,创建如下表:

1) 商品类别表:category(catno,catname,describe),主码为catno

create table category ( 

catno int not null, 

catname varchar(30) not null, 

describe text, 

primary key (catno) 

);

2) 商品表product(prono,proname,brand,stock,supno,price,cost,picture,catno,ontime,status)要求proname不能取空值

注:需先完成供应商表才可执行此sql命令

create table product ( 

prono int not null,

proname varchar(30) not null,

brand varchar(30), stock int,

supno int, price smallmoney,

cost smallmoney, picture varchar(30), 

catno int, ontime datetime default getdate(), 

satus smallint not null default 0 check (satus in (0, 1, 2)),

primary key (prono), 

foreign key (supno) references supplier(supno),

foreign key (catno) references category(catno) 

);

3) 供应商表:supplier(supno,supname,contactname,address,telephone),主码为(supno),属性supname不能取空值

create table supplier ( supno int not null, 

supname varchar(30) not null,

contactname varchar(20), 

address varchar(30),

telephone varchar(15), 

primary key (supno)

)

4)订单表 orders(orderno,memno,prono,qty,discount,totalmoney,orderdate,paydate),属性prono参照商品表product的属性prono,memno参照会员表 member的属性memno

注:需先创建下面的会员表

create table orders ( 

orderno int not null, 

memno int, prono int,

qty int not null,

discount money not null default 0,

totalmoney money not null,

orderdate datetime not null,

paydate datetime, primary key (orderno),

foreign key (memno) references member(memno),

foreign key (prono) references product(prono) 

);

  1. 会员表:member(memno,memname,address,telephone,username,userpwd)

create table member ( 

memno int not null,

memname varchar(30) not null,

ddress varchar(50),

telephone varchar(15),

username varchar(30) not null unique,

userpwd varchar(30) not null,

 primary key (memno) 

  1. 员工表:employee(empno,empname,depno,sex,telephone,username,userpwd)
  2. 部门表:department(depno,depname,manager,deptotal)

先创建没有外键约束的department表

CREATE TABLE department (

depno INT NOT NULL,

depname VARCHAR(30) NOT NULL,

manager INT, deptotal INT, 

PRIMARY KEY (depno) ); 

再正常创建employee表

create table employee ( empno int not null, 

empname varchar(30) not null, 

depno int, sex varchar(4),

telephone varchar(15),

username varchar(30) not null, 

userpwd varchar(30) not null, 

primary key (empno), 

foreign key (depno) references department(depno) ); 

创建员工表后,再修改department的外键关系

alter table department add constaint manager_department foreign key (manager) references employee(empno);

  1. 使用sql语句修改表:
  1. 为订单表增加一属性deliverdate(发货日期),数据类型为datetime,允许取空值。
     alter table orders add deliverdate datetime null;
  2. 修改商品表中属性列ontime的数据类型为date
    alter table product alter column ontime date;

  3. 为商品类别表中属性列catname增加不能取空值(not null)的约束
    alter table category alter column catname varchar(30) not null;
  4. 为商品表增加一个主码约束,约束名为pk1,主码为prono
    alter table product add constraint pk1 primary key (prono);
  5. 为员工表employee的属性userpwd增加一个默认值约束,默认值为123456,约束名为DF1
    alter table employee add constraint df1 default '123456' for userpwd; 
  6. 删除约束DF1

(7)为会员表member属性列username添加取唯一值的约束,约束名为UK1
alter table member add constraint UK1 unique (username);

(8)删除订单表中新增的属性deliverdate
alter table orders drop column deliverdate

(9)为商品表中属性列catno增加一个外码约束,约束名为FK1,要求其参照商品类别表中主码catno的值
alter table product add constraint FK1 foreign key(catno) references category(catno);

(10)删除会员表、员工表和部门表
drop table member;
drop table employee; 
drop table department;

(写不完时,可另加附页。)

  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值