数据库题库

有一个关于商品供应及顾客订单的数据库。其中包括四个表,表中信息如下: 供应表 apply
id name sid price ) 说明:
id 供应厂家编号, name 供应厂家名称, sid 商品编号, price
品价格。 顾客表 customers
gid name address balance ) 说明: gid 顾客编号, address
址, balance 余额。 订单表 orders
sid gid date ) 说明: sid 商品编号, gid 顾客编号,
date 订单日期。 商品表 goods
sid name count ) 说明: sid 商品编号, name 商品名称,
count 商品数量 写出 SQL 完成如下操作的 SQL 语句:
1) 查询出 2008-8-8 这一天顾客的订单信息,要求包括顾客姓名、商品名称及订单日期 .
2) 将商品表中商品编号为 '204' 的商品名称更改为百事可乐
3) 将顾客表上余额不足 1000 元的,将其订单日期延后 10
4) 删除订单表中商品编号为 102 的订单记录 5) 将商品表中没有顾客订购的商品信息删除
学生答案: 1.select*fromcustomerswherecustomers.gid=orders.gidanddate="2008-8-8"
2.updategoodssetsid=’ 百事可乐 ’wheresid=’204’;
3.selectbalanceDATE_ADD(NOW(),INTERVAL10day)fromcustomerswherebalance<1000;
4.deletefromorderswheresid=’102’;
10
已知进销存数据库 Jxcxt 包含如下数据表: 1 )商品表:商品 id( 自增 1), 商品名称 , 单位 ,
, 商品状态 2 )库存表:库存 id( 自增 1), 商品 id, 库存数量 请完成如下操作的 SQL 语句 ,
表名和列名必须和上面的一致 :
1 、创建以上两个表的 SQL 语句;
2 、在商品表上创建一个触发器 ( 名字自定 ), 当删除商品时自动删除该商品在库存表中的记录。
学生答案:
1> CREATETABLE 商品表 ( 商品 idINTNOTNULLAUTO_INCREMENTPRIMARYKEY, 商品
名称 VARCHAR(20)NOTNULL, 单位 VARCHAR(10), 单价 DOUBLE, 商品状态
VARCHAR(10));
2> CREATETABLE 库存表 ( 库存 idINTNOTNULLAUTO_INCREMENTPRIMARYKEY, 商品
idINTNOTNULL, 库存数量 INT,FOREIGNKEY( 商品 id)REFERENCES 商品表 ( 商品
id));2>CREATETRIGGERdelChainBEFOREDELETEON 商品表
FOREACHROWDELETEFROM 库存表 WHERE 商品 id=old. 商品 id;
10
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩
请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 :
1 、创建以上三个表的 SQL 语句;
2 、创建视图 V_ 选课 , 其中包含这些字段 : 选课 id, 学号 , 姓名 , 课程名 , 成绩;
3 、查询张三的数据开发技术课程的成绩。
学生答案:
1. 学生表:
CREATETABLEstudent(xsidINTPRIMARYKEY,xhVARCHAR(13),xmVARCHAR(5),zyVARC
HAR(10),njCHAR(2),xmpysxVARCHAR(5))CHARSET=utf8; 课程表:
CREATETABLEcourse(kcidINTPRIMARYKEY,kcmcVARCHAR(9),xfSMALLINT)CHARSET
=utf8; 选课表:
CREATETABLEsc(xkidINTPRIMARYKEY,xsidINT,kcidINT,gradeDOUBLE(3,2),FOREIGNKE
Y(xsid)REFERENCESstudent(xsid),FOREIGNKEY(kcid)REFERENCEScourse(kcid))CHARSE
T=utf8;
2.CREATEVIEWv_ 选课
ASSELECTs.xkid,st.xh,st.xm,c.kcmc,s.gradeFROMscsINNERJOINstudentstONs.xsid=st.xsidIN
NERJOINcoursecONc.kcid=s.kcid;
10
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩 系
统已建有 getstrpy(p_name VARCHAR(100)) 用户自定义函数。 请完成如下操作的 SQL 语句 ,
表名和列名必须和上面的一致 : 1 、创建以上三个表的 SQL 语句; 2 、创建一个存储过程(名
字自定),实现学生表的插入,姓名拼音缩写需要调用 getstrpy 函数实现。
学生答案: CREATEDATABASExkglxt;CREATETABLE 学生表 ( 学生
idCHAR(4)PRIMARYKEY, 学号 CHAR(4), 姓名 CHAR(4), 专业 CHAR(4), 年级 CHAR(4), 姓名
拼音缩写 CHAR(8))CHARSET=utf8;CREATETABLE 课程表 ( 课程 idCHAR(4)PRIMARYKEY,
44 45
课程名称 CHAR(10), 学分 CHAR(4))CHARSET=utf8;CREATETABLE 选课表 ( 选课
idCHAR(4)PRIMARYKEY, 学生 idCHAR(4), 课程 idCHAR(4), 成绩 INT,FOREIGNKEY( 学生
id)REFERENCES 学生表 ( 学生 id),FOREIGNKEY( 课程 id)REFERENCES 课程表 ( 课程
id))CHARSET=utf8;SELECT 学号 , 姓名 , 专业 , 年级 FROM 学生表 , 课程表 WHERE 学分 >=100;
7
已知选课管理系统 Xkglxt 包含如下数据表和自定义函数 ( 函数已定义好可直接使用 ) 1 )学
生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 , 姓名拼音缩写 2 )自定义函数拼音缩写查询 : pysx(' 中文
字符串 ') 返回 该中文字符串的拼音缩写 请完成如下操作的 SQL 语句 , 表名和列名必须和
上面的一致 :
1 、创建选课管理系统数据库以及学生表的 SQL 语句;
2 、在学生表上创建一个触发器 ( 名字自定 ), 当新增学生时自动处理姓名拼音缩写。
学生答案:
1 CREATEDATABASEXkglxtCHARSETutf8;CREATETABLE 学生 ( 学生 idINTPRIMARYKEY,
学号 INT, 专业 VARCHAR(30), 年纪 INT, 姓名 VARCHAR(30), 姓名拼音缩写 VARCHAR(30));
2DELIMITER$$CREATETRIGGERmytriggerAFTERINSERTON 学生
FOREACHROWBEGININSERTINTO 学生 ( 姓名拼音缩写 )VALUES(pysx(new.
));END$$DELIMITER;
10
已知产品销售数据库 cpxs 包含如下数据表: 1 )产品表:产品编号,产品名称,价格,库
存量。 2 )销售商表:客户编号,客户名称,地区,负责人,电话。 3 )产品销售表:销售
日期,产品编号,客户编号,数量,销售额。 写出 SQL 完成如下操作的 SQL 语句:
1. 写出产品表的建表语句
2. 向产品表中插入如下记录: 0001 空调 3000 200 0002 冰箱 2500 300
3. 将产品表中每种商品价格打八折后进行显示
4. 查找价格在 2000 2900 之间的产品名称。 5. 在产品销售表上创建 冰箱 产品表的视图
bxcp
学生答案:
1 CREATETABLE 产品表 ( 产品编号 char(4)PRIMARYKEY, 产品名称
VARCHAR(20)NOTNULL, 价格 float(7,2), 库存量 int(5));CREATETABLE 销售商表 ( 客户编号
char(5)PRIMARYKEY, 客户名称 VARCHAR(20)NOTNULL, 地区 VARCHAR(10), 负责人
VARCHAR(10), 电话 VARCHAR(11));CREATETABLE 产品销售表 ( 销售日期 date, 产品编号
char(4), 客户编号 char(5), 数量 int, 销售额 float(8,2));
2 insertinto 产品表 values(’0001’,’ 空调 ’,3000,200);insertinto 产品表 values(’0002’,’
’,2500,300);
3 update 产品表 set 价格 = 价格 *0.8;
4
select 产品名称 from 产品表 where 价格 between2000and2900;5
createviewbxcpasselect*from
产品表 where 产品名称 = 冰箱 withcheckoption;
10
已知进销存数据库 Jxcxt 包含如下数据表: 1 )商品表:商品 id, 商品名称 , 单位 , 单价 , 商品
状态 2 )库存表:库存 id, 商品 id, 库存数量 请完成如下操作的 SQL 语句 , 表名和列名必须
和上面的一致 :
1 、创建以上两个表的 SQL 语句;
2 、创建一个存储过程(名字自定),实现商品表的的插入,需要判断当前商品名称是否存
在。
学生答案:
CREATEDATABASEJxcxt;CREATETABLE 商品表 ( 商品 46
idCHAR(4)PRIMARYKEYAUTO_INCREMENT, 商品名称 CHAR(4), 单位 CHAR(4), 单价 INT,
商品状态 CHAR(4))CHARSET=utf8;CREATETABLE 库存表 ( 库存
idCHAR(4)PRIMARYKEYAUTO_INCREMENT, 商品 idCHAR(4), 库存数量
INT,FOREIGNKEY( 商品 id)REFERENCES 商品表 ( 商品
id))CHARSET=utf8;CREATEVIEWV_ 库存 ( 库存 id, 商品名称 , 单位 , 库存数量 , 库存金额)
ASSELECT*FROM( 商品表,库存表 )WITHCHECKOPTION;
10
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩
请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 :
1 、创建以上三个表的 SQL 语句;
2 、创建一个存储过程(名字自定),实现选课表的插入,需要判断当前课程 id 和学生 id
是否存在。
学生答案:
CREATEDATABASExkglxt;CREATETABLE 学生表 ( 学生 idCHAR(4)PRIMARYKEY, 学号
CHAR(4), 姓名 CHAR(4), 专业 CHAR(4), 年级 CHAR(4), 姓名拼音缩写
CHAR(8))CHARSET=utf8;CREATETABLE 课程表 ( 课程 idCHAR(4)PRIMARYKEY, 课程名称
CHAR(10), 学分 CHAR(4))CHARSET=utf8;CREATETABLE 选课表 ( 选课
idCHAR(4)PRIMARYKEY, 学生 idCHAR(4), 课程 idCHAR(4), 成绩 INT,FOREIGNKEY( 学生
id)REFERENCES 学生表 ( 学生 id),FOREIGNKEY( 课程 id)REFERENCES 课程表 ( 课程
id))CHARSET=utf8;
SELECT 学号 , 姓名 , 专业 , 年级 FROM 学生表 , 课程表 , 选课表 WHERE 成绩 <60
10
有一个关于商品供应及顾客订单的数据库。其中包括四个表,表中信息如下: 供应表 apply
id name sid price ) 说明:
id 供应厂家编号, name 供应厂家名称, sid 商品编号, price
品价格。 顾客表 customers
gid name address balance ) 说明: gid 顾客编号, address
址, balance 余额。 订单表 orders
sid gid date ) 说明: sid 商品编号, gid 顾客编号,
date 订单日期。 商品表 goods
sid name count ) 说明: sid 商品编号, name 商品名称,
count 商品数量
1) 从供应表中查询全体供应厂商的基本信息
2) 从顾客表中查询地址在 " 长春 " 的顾客的顾客编号、顾客姓名及余额 .
3) 从商品表中查询以 " 可乐 " 两个字结尾的商品名称及数量,并按商品数量降序排序
4) 从订单表中查询购买商品编号为 "101" 商品的顾客编号及订单日期 .
5) 向商品表中追加一条纪录 (204, 可口可乐 ,900
6) 从商品表中查询最多商品数量、最少商品数量及商品总数量的记录信息
学生答案:
1 select*fromapply;
2 selectgid,name,balancefromcustomerswhereaddress=" 长春 ";
3 selectname,countfromgoodswherenamelike"% 可乐 "orderbycountdesc;
4 selectgid,datefromorderswheresid=101;
5 insertintogoodsvalues(204," 可口可乐 ",900);
6 selectmax(count),min(count),sum(count)fromgoods;
10
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩 请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 : 1 、创建以上三个表的 SQL
句; 2 、创建一个存储过程(名字自定),实现课程表的插入,需要判断当前课程名称的课
程是否存在。
学生答案:
1. CREATETABLE`temp`.` 学生表 `(` 学生 id`VARCHAR(20),` 学号 `VARBINARY(20),` 姓名
`VARCHAR(20),` 专业 `VARCHAR(20),` 年级 `VARCHAR(20),` 姓名拼音缩写
`VARCHAR(10))CHARSET=utf8;CREATETABLE`temp`.` 课程表 `(` 课程
id`VARCHAR(20),` 课程名称 `VARCHAR(20),` 学分 `VARCHAR(20))CHARSET=utf8;
2. CREATETABLE`temp`.` 选课表 `(` 选课 id`VARCHAR(20),` 学生 id`VARCHAR(20),` 课程
id`VARCHAR(20),` 成绩 `VARCHAR(20))CHARSET=utf8;2.SELECT` 学生表 `.` 学号 `,` 学生
`.` 姓名 `,` 学生表 `.` 专业 `,` 学生表 `.` 年级 `FROM` 学生表 `,` 选课表 `,` 课程表 `WHERE`
生表 `.` 学生 id`=` 选课表 `.` 学生 id`AND` 课程表 `.` 课程 id`=` 选课表 `.` 课程 id`AND` 课程表
`.` 课程名称 `=" 数据库原理 ";
8
已知选课管理系统 Xkglxt 包含如下数据表和自定义函数 ( 函数已定义好可直接使用 ) 1 )学
生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 , 姓名拼音缩写 2 )自定义函数拼音缩写查询 : pysx(' 中文
字符串 ') 返回 该中文字符串的拼音缩写 请完成如下操作的 SQL 语句 , 表名和列名必须和
上面的一致 :
1 、创建选课管理系统数据库以及学生表的 SQL 语句;
2 、在学生表上创建一个触发器 ( 名字自定 ), 当修改学生表的姓名时自动处理姓名拼音缩写
学生答案:
1 CREATEDATABASEXkglxtCHARSETutf8;CREATETABLE 学生 ( 学生 idINTPRIMARYKEY,
学号 INT, 专业 VARCHAR(30), 年纪 INT, 姓名 VARCHAR(30), 姓名拼音缩写 VARCHAR(30));
2`DELIMITER$$CREATETRIGGERmytriggerAFTERINSERTON 学生
FOREACHROWBEGININSERTINTO 学生 ( 姓名拼音缩写 )VALUES(pysx(new.
));END$$DELIMITER;
8
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩
请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 : 1 、创建以上三个表的 SQL
句; 2 、在课程表上创建一个触发器 ( 名字自定 ) , 当删除课程信息时自动删除该课程的选课
信息。
学生答案:
1 1 CREATETABLE 学生 ( 学生 idINTPRIMARYKEY, 学号 INT, 姓名 VARCHAR(30), 专业
VARCHAR(30), 年纪 INT, 姓名拼音缩写 VARCHAR(10))CHARSETutf8;CREATETABLE 课程
( 课程 idINTPRIMARYKEY, 课程名称 VARCHAR(30), 学分
INT)CHARSETutf8;CREATETABLE 选课 ( 选课 idINTPRIMARYKEY, 学生 idINT, 课程 idINT,
成绩 INT)CHARSETutf8;
2 DELIMITER$$CREATETRIGGERmytriggerAFTERDELETEON 课程
FOREACHROWBEGINDELETEFROM 选课 WHERE 选课 . 课程 id=old. 课程 id
END$$DELIMITER;
8
已知进销存数据库 Jxcxt 包含如下数据表:
1 )商品表:商品 id( 自增 1), 商品名称 , 单位 , 单价 , 商品状态
2 )库存表:库存 id( 自增 1), 商品 id, 库存数量
请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 :
47 48
1 、创建以上两个表的 SQL 语句;
2 、在商品表上创建一个触发器 ( 名字自定 ), 当新增商品时自动在库存表中插入该商品的库存
信息 ( 库存数量为 0)
学生答案:
1)
createtable 商品表 ( 商品 idintnotnullauto_increment, 商品名称 varchar(255), 单位 varchar(10),
int, 商品状态 varchar(10),primarykey( 商品 id))charsetutf8;createtable 库存表 ( 库存
idintnotnullauto_increment, 商品 idint, 库存数量 int,foreignkey( 商品 id)references 商品表 ( 商品
id),primarykey( 库存 id))charsetutf8;
2)delimiter$$createtrigger 增商品触库存 afterinserton 商品表 foreachrowbegininsertinto 库存表
values(null,new. 商品 id,0);end$$
10
已知选课管理系统 Xkglxt 包含如下数据表: 1 )学生表 : 学生 id, 学号 , 姓名 , 专业 , 年级 ,
名拼音缩写 2 )课程表 : 课程 id, 课程名称 , 学分 3 )选课表 : 选课 id, 学生 id, 课程 id, 成绩
请完成如下操作的 SQL 语句 , 表名和列名必须和上面的一致 :
1 、创建以上三个表的 SQL 语句;
2 、创建一个存储过程(名字自定),实现学生表的插入,需要判断当前学号的学生是否存
在。
学生答案:
1>CREATETABLE 学生表 ( 学生 idINTNOTNULLPRIMARYKEY, 学号
VARCHAR(20)NOTNULL, 姓名 VARCHAR(10)NOTNULL, 专业 VARCHAR(20), 年级
VARCHAR(10), 姓名拼音缩写 VARCHAR(10));CREATETABLE 课程表 ( 课程
idINTNOTNULLPRIMARYKEY, 课程名称 VARCHAR(20), 学分 FLOAT);CREATETABLE 选课
( 选课 idINTNOTNULLPRIMARYKEY, 学生 idINTNOTNULL, 课程 idINTNOTNULL, 成绩
FLOAT,FOREIGNKEY( 学生 id)REFERENCES 学生表 ( 学生 id),FOREIGNKEY( 课程
id)REFERENCES 课程表 ( 课程
id));2>DELIMITER$$CREATEPROCEDUREisInsert(id1INT,id2INT,id3INT,gradeFLOAT)BEGI
NIF((SELECTCOUNT(*)FROM 课程表 , 学生表 WHERE 学生表 . 学生 id=id2AND 课程表 . 课程
id=id
3)<>0)THENINSERTINTO 选课表 VALUES(id1,id2,id3,grade);ENDIF;END$$DELIMITER;
10
四、计算题
1、按照要求,完成以下操作。
1)、建立一个通信录数据库,要求需要有以下三个表:
lxrenb(联系人表)其字段为(联系人编号、姓名、联系电话、家庭地址),
thjlb(通话记录表)其字段为(通话记录编号、联系人编号、通话开始时间、通
知结束时间、通话类别、通话状态),
dxjlb(短信记录表)其字段为(短信记录编号、联系人编号、接发时间、短信内 49
容、短信类别)。
请在 SQL SERVER 下建立这个数据库,数据库名为:TXLSJK。字段名以及字段数
据类型可自拟。
2)、在联系人表中插入以下 5 条记录:
1,朱红敏,15857455696,河南洛阳市中学路 1 号)
2,张丽花,18953991767,河南洛阳市武汉路 2 号)
3,梁宝莉,13752317719,河南洛阳市大学路 3 号)
4,王君志,13057676112,河南洛阳市大学路 4 号)
5,李保江,13752309239,河南洛阳市大学路 5 号)
3)、在短信记录表中插入以下一条记录
1,1,当前系统时间,你的书已到请速来领取,1)
4)、更新联系人编号为 4 的联系人电话为 13938801001
5)、依据联系人表和通话记录表建立视图:v_lxren_thjlb(联系人编号、姓
名、通话类别、通话状态)
答:(
1)create table lxrenb(
id int NOT NULL,name varchar(20) NOT NULL,tel
varchar(11),address varchar(255),primary key(id))
---同上
2)insert into lxrenb
(id, name, tel, address) values(1,’ 朱
红敏’,’ 15857455696’,’ 河南洛阳市中学路 1 号’)
---同上
3)insert into dxjlb
4)update lxrenb set ... where
5)CREATE VIEW v_lxren_thjlb (联系人编号、姓名、通话类别、通话状
态) AS
SELECT ... WHERE ...
2、学生选课系统,主要表有:学生基本信息表 steudents(学号 sid、姓名 sname、
性别 ssex、专业 spro、出生年月 sbirthday 等),选课表 courses_ selection (学 50
号 sid、课程号 cid、分数 score ),课程表 courses(课程号 cid、课程名 cname、
所属专业 professional 、学分 credits )要求:
写出 SQL 语句。
1) 查询所有选 SQL 课程的学生学号,姓名和专业。
2) 删除所有选择数学的同学的选课记录。
3) 查询有哪些课程没有被任何同学报选。
答:
1) select … from
2) delete table_name where
3) select … from courses where cid not in
(select cid from
courses_ selection )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值