1、1.1. 数据库1.1.1. 数据库员工表的定义如下:Last_name VARCHAR2(25)First_name VARCHAR2(25)Salary NUMBER(7,2)现查询显示未达到平均工资的员工姓名.请考察下面的 SQL 语句:SELECT last_name, first_name FROM employee WHERE salary 600;1.1.18. 数据库有两张表一个学生表(id,name ,sex) ,一个学生成绩表(id,chineses,English,math) ,要求查询学生基本信息以及各科成绩和总成绩,总成绩要求在 200 到 300 之间,学生姓名降序
2、。 Student Id name sex grade Id chineses english mathSelect from student s join grade g on(s.id=g.id) 1.1.19. 现有关系数据库表如下:学生表(学号 char(6), 姓名,性别, 身份证号)课程表(课号 char(6), 名称)成绩表(id,学号 ,课号,分数)用 sql 实现下面 2 题:1.检索姓马的女同学情况(姓名, 身份证号)2.检索有一门或一门以上课程成绩大于等于 90 的所有学生信息 (学号,姓名)Student course ScoreSelect * from stu wh
3、ere exists (select 1 from score where sid=stu.id and score=90);1.1.20. 有三张表,学生表 Student,课程 Coruse,学生课程表 SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过 SC 表关联。1)写出建表语句;2)写出 SQL 语句, 查询选修了所有选修课程的学生;3)写出 SQL 语句, 查询选修了至少 2 门以上的课程的学生。1.1.21. 表 class 和 student 结构如下,请完成后续 SQL 语句表 class属性 类型(长度) 默认值 约束 含义CLASSNO 数值 (2) 无 主键
4、 班级编号CNAME 变长字符 (10) 无 非空 班级名称表 student属性 类型(长度) 默认值 约束 含义STUNO 数值 (8) 无 主键 学号SNAME 变长字符 (12) 无 非空 姓名SEX 字符 (2) 男 无 性别BIRTHDAY 字符 (8) 无 无 生日EMAIL 变长字符 (20) 无 唯一 电子邮件SCORE 数值 (5, 2) 无 检查 成绩CLASSNO 数值 (2) 无 外键,关联到表 CLASS 的CLASSNO 主键班级编号数据STUNO SNAME SEX BIRTHDAY EMAIL SCORE CLASSNO21 tom 男 19790203 8
5、9.50 156 jerry 默认值 空 空 空 2a. 修改表 student 的数据,将所有一班的学生成绩加 10 分。b. 删除表 student 的数据,将所有 3 班出生日期晚于 1981 年 5 月 12 日的记录删除。c. 按班级升序排序,成绩降序排序,查询 student 表的所有记录。d. 查询 student 表中所有三班成绩为空的学生记录。e. 表 student 与 class 联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。f. 按班级编号分组统计每个班的人数、最高分、最低分、平均分,按平均分降序排序。g. 查询一班学生记录中所有成绩高于本班学生平均分的记录。
6、h. 查询所有学生记录中成绩前十名的学生的学号、姓名、成绩、班级编号。1.1.22. 有两张表 student 和 score Student:学号,姓名,性别, 年龄Score:学号,语文 ,数学,英语1.查询张三的学号,姓名,性别 , 语文,数学,英语2.查询语文比数学好的同学3.查出姓名相同的学生学号1.1.23. 对一个用户登录模块,要求每个用户只允许次登陆错误,超过则将锁定此帐户。1.1.24. 数据脚本create table test1(pici VARCHAR2(30),busicode VARCHAR2(50),amt NUMBER,flag VARCHAR2(1);- Ad
7、d comments to the columns comment on column test1.flag is 1表示成功 2表示失败;insert into test1 values(20130201,0201111,10,1);insert into test1 values(20130201,0201112,5,2);insert into test1 values(20130201,0201113,10,2);insert into test1 values(20130201,0201114,5,1);insert into test1 values(20130202,020211
8、1,10,1);insert into test1 values(20130202,0202112,20,1);insert into test1 values(20130202,0202113,20,1);insert into test1 values(20130202,0202114,20,1);insert into test1 values(20130203,0203111,10,2);insert into test1 values(20130203,0203111,10,2);insert into test1 values(20130203,0203111,10,2);实现要求
9、:标识位 flag 1 表示扣款成功 2 表示扣款失败 一句 sql 查询出每天扣款成功笔数,成功金额,失败笔数,失败金额1.1.25. 数据库 (1 )创建 sms 表的语句(2 )写出 users 与 sms 左关联的查询语句1.1.26.书表(books)book_id,book_name,creatdate,Lastmodifydate,decription001,三个人的世界 ,2005-02-02,2005-07-07,NULL作者表(authors)A_id,A_name01,王纷02,李尚03,泰和部门表(depts)d_id,d_name001,编辑一部002,编辑二部003
10、,编辑三部书和作者关联表(bookmap)book_id,A_id001,01001,02001,03部门和作者关联表(depmap)d_id,a_id001,01002,02003,03找出每个部门的所写的总书量,比如, 一本书有 3 个人写,如果三个人在不同的部门, 则每个部门的总数量就是 1.最后结果如下:部门, 书量编辑一部,1编辑二部,1编辑三部,11.1.27.两个表情况表名:wu_plan ID plan model corp_code plannum prixis1 00001 exx22 nokia 2000 20012 00002 lc001 sony 3000 0表名:w
11、u_bomID plan pact amount 1 00001 aa1 3002 00001 aa2 2003 00002 bb1 5004 00002 bb2 8005 00002 bb3 400查询这两个表中 plan 唯一,每一个 plan 中,amount 最少的, plannum 大于prixis 的记录。结果是:ID plan model corp_code plannum prixis pact amount1 00001 exx22 nokia 2000 0 aa2 2002 00002 lc001 sony 3000 0 bb3 4001.1.28. 数据库方面: crea
12、te table tbl_threat( pk_threat_id int unsigned not null auto_increment,dt_log_time datetime, /发生时间i_severity int, /严重程度i_device_id int, /设备 idstr_tr_type varchar(64), /告警类型str_tr_name varchar(256), /类型名称i_work_id int unsigned, /工单 iddt_complete_time datetime, /完成时间i_status tinyint default 0 comment
13、0-新分派 ,1-重新激活 2-完成,/告警状态primary key (pk_threat_id);create table tbl_work( pk_work_id int not null auto_increment,str_title varchar(256), /工单名称i_owner_org_id int unsigned, /负责人组织 idi_owner_id int, /负责人 iddt_dispatch_time datetime, /派单时间dt_finish_time datetime, /完成时间i_is_history tinyint default 0, /是否
14、为历史工单dt_expect_time datetime, /期望完成时间i_in_time tinyint(1) default 0, /及时性i_priority tinyint(1), /优先级primary key (pk_work_id);ps: threat 告警 work 工单 i_severity 严重程度 0 代表一般 1 代表低危 2 代表中危 3 代表高危1.请查出当前日期前三天发生的告警的类型名称、告警类型、发生时间、严重程度及派单时间用日期按照降序排列。2.请查出当前日期前三天发生的告警的数量最多的告警类型及数量,数量按降序排列的前 5 个。1.1.29. 设有图书管
15、理数据库:图书( 总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)1.检索书价在 15 元至 25 元(含 15 元和 25 元)之间的图书的书名、作者、书价和分类号,结果按分类号升序排序。2.为图书表建立一个视图. 1.1.30. 写一个 oracle 函数,输入参数(字符串 str ,整型 len ,字符 c)返回字符串 rstr 要求:如果字符串 str 的长度小于 len, 则返回的字符串 rstr 为在字符串 str 前填充字符 c 达到长度为 len 的字符串。 如果字符串 str 的长度大于等于 len ,则返回的字符串
16、 rstr 为 str。 参考答案(oracle):1.1.31. 表结构 (1 ).表名: g_cardapply字段 (字段名/类型/ 长度) :g_applyno varchar 8; /申请单号 (关键字)g_applydate bigint 8; /申请日期g_state varchar 2; /申请状态(2 ).表名: g_cardapplydetail字段( 字段名 /类型/长度):g_applyno varchar 8; / 申请单号g_name varchar 30; /申请人姓名g_idcard varchar 18; / 申请人身份证号g_state varchar 2;
17、 / 申请状态其中,两个表的关联字段为申请单号题目:(1 ).查询身份证号码为 440401430103082 的申请日期(2 ).查询同一个身份证号码有两条以上记录的身份证号码及记录个数(3 ).将身份证号码为 440401430103082 的记录在两个表中的申请状态均改为 07(4 ).删除 g_cardapplydetail 表中的所有李姓记录1.1.32. 参见如下表结构回答问题(共 15 分)出版社: 出版社代码 char(2), 出版社名称 varchar2(32)图书: 图书编号 char(8),图书名称 varchar2(128),出版社代码 char(2),作者代号 char(4),图书简介 varchar2(128)作者: 作者代号 char(4),作者名称 varchar2(10),性别 char(1),年龄 number(3),文学方向 varchar2(64)获奖名单: 获奖日期 date,