有一个关于商品供应及顾客订单的数据库。其中包括四个表,表中信息如下:供应表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’;
已知进销存数据库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、创建一个存储过程(名字自定),实现学生表的插入,姓名拼音缩写需要调用getstryg函数实现。 学生答案:CREATEDATABASExkglxt;CREATETABLE学生表(学生 idCHAR(4)PRIMARYKEY,学号CHAR(4),姓名CHAR(4),专业CHAR(4),年级CHAR(4),姓名拼音缩写CHAR(8))CHARSET=utf8;CREATETABLE课程表(课程idCHAR(4)PRIMARYKEY. 21:06:29 课程名称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 2000002冰箱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 1)商品表:商品id,商品名称,单位,单价,商品状态2)库存表:库存id,商品id,库存数量 请完成如下操作的SQL语句,表名和列名必须和上面的一致: 1、创建以上两个表的SQL语句; 2、创建一个存储过程(名字自定),实现商品表的的插入,需要判断当前商品名称是否存在。 学生答案: CREATEDATABASEJxcxt;CREATETABLE商品表(商品 21:06:26 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语句,表名和列名必须和上面的一致: 21:06:26 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(短信记录表)其字段为(短信记录编号、联系人编号、接发时间、短信内 21:06:26 容、短信类别)。 请在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,telvarchar(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 1xrenb set …where (5)CREATEVIEWv lxren thjlb(联系人编号、姓名、通话类别、通话状态)AS SELECT ……WHERE …
2、学生选课系统,主要表有:学生基本信息表steudents(学号sid、姓名sname、性别 ssex 、专业 spro 、出生年月 sbirthday 等),选课表 courses_selection(学 49 21:06:28 符号sid、课程号cid、分数score),课程表courses(课程号cid、课程名cname、所属专业professional、学分credits)要求:写出SQL语句。1)查询所有选SQL课程的学生学号,姓名和专W B 2)删除所有选择数学的同学的选课记录。3)查询有哪些课程没有被任何同学报选。
答(1)select from delete table name where(3)select from courses where cid not in(select cid fromcourses selection)