SQL实验项⽬1:数据定义--数据库与表的基本操作
⽂章⽬录
⼀、实验⽬的及要求
1. 理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使⽤⽅法;
2. 使⽤SQL语句创建、修改和删除数据库、模式和基本表;
3. 掌握SQL语句常见语法错误的调试⽅法。
⼆、实验内容(或实验原理、实验拓扑)
任务1:创建数据库eshop
使⽤SQL建⽴数据库eshop,并在该数据库中采⽤SQL建⽴满⾜下⾯要求的如下3张表:
(1)创建会员表(members),具体要求如下:
键名数据类型长度是否为空约束M_account(会员号)varchar20否主键
M_name(会员姓名)varchar20否
M_birth(会员出⽣⽇期)datetime是
M_sex(会员性别)char2是
M_address(会员住址)varchar50是
M_salary(会员⼯资⽔平)decimal7否
M_password(密码)varchar20否
(2)创建产品表(products),具体要求如下:
键名数据类型长度是否为空约束P_no(产品号)varchar20否主键
P_name(产品号)varchar50否
P_date(产品⽣产⽇期)datetime否
P_quantity(产品总量)int否
P_price(产品单价)smallmoney否
P_information(产品信息)varchar500否
(3)创建订单表(orders),具体要求如下:
数据类型长度是否为空约束M_account(会员号)varchar20否主键P_no(产品号)varchar20否主键O_quantity(订单量)int否
O_date(定货⽇期)datetime否
O_ confirm_state(确认状态)bit否
数据类型长度是否为空约束O_pay_state(⽀付状态)bit否
O_send_state(发送状态)bit否
任务2:创建课本P79页学⽣-课程数据库(参照任务1)
任务3:创建课本P70页SPJ数据库(参照任务1)
备注:上述数据库和表建完后,将数据库拷出,并放在以⾃⼰学号和姓名命名的⽂件中,以压缩⽂件的⽅式上交。例如:学号_姓名.rar 三、实验设备与环境
I7 7700HQ+16G内存+48TB分布式硬盘的笔记本电脑、Windows 10 1903政府版、Microsoft SQL Server 2008 R2
四、实验设计⽅案(包括实验步骤、设计思想、算法描述或开发流程等)
1. 启动DBMS服务器,熟悉DBMS所提供的功能组件的使⽤⽅法。
2. 定义数据库。
(1)创建数据库,
(2)打开数据库,
(3)删除数据库。
3. 定义关系表
(1)创建关系表及其完整性约束条件。
*(2)可检验完整性机制的表创建步骤。
(3)查看和修改表的模式结构。
(4)删除关系表。
4. 录⼊初始实验数据库数据。
(1)向⼀个不含外键的表录⼊数据。
(2)向⼀个包含外键的表录⼊数据。
(3)再向⼀个包含外键所对应的主键的表录⼊数据。
(4)若(2)没能成功录⼊数据,则再次为那个包含外键的表录⼊数据。
(5)对前⾯各步的执⾏结果进⾏分析,并给出分析结果。
5. 分离数据库
五、实验结果(包括设计效果、测试数据、运⾏结果等)
任务1:创建数据库eshop
任务2:创建课本P79页学⽣-课程数据库
任务3:创建课本P70页SPJ数据库
六、实验⼩结(包括收获、⼼得体会、注意事项、存在问题及解决办法、建议等)
数据库:drop、truncate、delete三者删除的区别
1. ⽤法和区别
1. drop:drop table 表名
删除内容和定义,并释放空间。执⾏drop语句,将使此表的结构⼀起删除。
2. truncate (清空表中的数据):truncate table 表名
删除内容、释放空间但不删除定义(也就是保留表的数据结构)。与drop不同的是,只是清空表数据⽽已。
truncate不能删除⾏数据,虽然只删除数据,但是⽐delete彻底,它只删除表数据。
3. delete:delete from 表名 (where 列名 = 值)
与truncate类似,delete也只删除内容、释放空间但不删除定义;但是delete即可以对⾏数据进⾏删除,也可以对整表数据进⾏删除。
2. 注意
1. delete语句执⾏删除的过程是每次从表中删除⼀⾏,并且同时将该⾏的删除操作作为事务记录在⽇志中保存,以便进⾏进⾏回滚
操作。
2. 执⾏速度⼀般来说:drop>truncate>delete
3. delete语句是数据库操作语⾔(dml),这个操作会放到 rollback segement 中,事务提交之后才⽣效;如果有相应的 trigger,
执⾏的时候将被触发。
4. truncate、drop 是数据库定义语⾔(ddl),操作⽴即⽣效,原数据不放到 rollback segment 中,不能回滚,操作不触发
trigger。
5. truncate语句执⾏以后,id标识列还是按顺序排列,保持连续;⽽delete语句执⾏后,ID标识列不连续。
七、附录(包括作品、流程图、源程序及命令清单等)
任务1:创建数据库eshop
建库
if exists(select*from sys.databases where name ='eshop')
begin
use master
drop database eshop
end
CREATE DATABASE eshop
创建members表
-- 设置⼯作数据库
use eshop
-- 删除表
if exists(select*from sysobjects where id = object_id(N'members')and OBJECTPROPERTY(id, N'IsUserTable')=1) drop table members;
-- 创建表
CREATE TABLE members(
M_account varchar(20)NOT NULL PRIMARY Key,
M_name varchar(20)NOT NULL,
M_birth datetime NULL,
M_sex char(2)NULL,
sql中delete用法M_address varchar(50)NULL,
M_salary decimal(7,0)NOT NULL,
M_password varchar(20)NOT NULL,
);
-- 插⼊数据
INSERT members(M_account, M_name, M_birth, M_sex, M_address, M_salary, M_password)
VALUES('M_001','张三','1985-09-02 00:00:00.000','男','平顶⼭',2500,'123456')
INSERT members VALUES('M_002','李四','1986-03-01 00:00:00.000','男','洛阳',2600,'111111')
INSERT members VALUES('M_003','⼩红','1987-01-02 00:00:00.000','⼥','郑州',3000,'222222')
INSERT members VALUES('M_004','⼩菊','1988-01-01 00:00:00.000','⼥','开封',2700,'333333')
INSERT members VALUES('M_005','⼩明','1985-02-03 00:00:00.000','男','漯河',2400,'444444')
SELECT*FROM members
创建products表
-- 设置⼯作数据库
use eshop
-- 删除表
if exists(select*from sysobjects where id = object_id(N'product')and OBJECTPROPERTY(id, N'IsUserTable')=1) drop table product;
-- 创建表
CREATE TABLE product(
P_no varchar(20)NOT NULL PRIMARY Key,
P_name varchar(50)NOT NULL,
P_date datetime NOT NULL,
P_quantity int NOT NULL,
P_price SMALLMONEY NOT NULL,
P_infomation varchar(500)NOT NULL,
);
--插⼊数据
INSERT product(P_no, P_name, P_date, P_quantity, P_price, P_infomation)
VALUES('P_001','⾃⾏车','2005-05-31 00:00:00.000',10,586,'价廉物美')
INSERT product VALUES('P_002','爱国者MP3','2005-05-31 00:00:00.000',100,450,'价廉物美')
INSERT product VALUES('P_003','商务通','2005-05-20 00:00:00.000',10,850,'价廉物美')
INSERT product VALUES('P_004','名⼈好记星','2005-05-31 00:00:00.000',100,550,'价廉物美')
INSERT product VALUES('P_005','奥美嘉U盘','2005-05-31 00:00:00.000',100,350,'价廉物美')
SELECT*FROM product;
创建orders表

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。