【数据库原理】实验报告-实验4SQL数据定义语句

实验名称

实验四  SQL的数据定义语句

实验室

 

实验

目的

要求

  1. 掌握 SQL数据定义语句:create、 drop 、alter各自的功能
  2. 掌握数据库、模式、基本表的创建、修改、删除的SQL语句语法格式
  3. 通过SQL语句完成“电子商务系统”数据库及其基本表、模式的创建、修改和删除实践练习

实验

环境

SQL Server 2014

实验内容或

实验题目

  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的数据库:

CREATE DATABASE ecommerce1

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

通过GUI创建用户li后,输入SQL命令:

CREATE SCHEMA S_T AUTHORIZATION 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)

);

  1. 商品表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)

);

  1. 供应商表: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)

);

  1. 订单表: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,

    address 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);

4.使用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

alter table employee

drop constraint 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;

组内

分工

可选

  

实验运行结果或者是验证性的结果:

分析结果以及在试验中应注意的问题:

  1. 编写SQL命令时候注意不要写错命令,关键词会有颜色提示。
  2. 执行drop删除命令时候注意,不要写错表格删错内容。
  3. 建表时注意约束关系,小心创建错外键关系。
  4. 填入数据时注意每个表的对应关系,先给没有约束条件的表填数据,再给有约束条件的表填入数据。
  5. 在填写员工表和部门表时,由于这两个表存在着互相约束的关系。所以我们可以先创建一个部门表,将manager字段设置为空。再去创建员工表,创建完员工表后,再反过来填入manager字段,即可完成创建。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司徒阿宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值