用SQL写语句:在下列三张表中选出 CLASSID 为“1”的人的NAME和AGE。
表1 表2 表3
No Name Age No ID No
102 Ja 23 102 1 102
103 Ba 23 104 1 103
104 Na 24 103 2 104
第1题:
根据SQL标准,要修改表student中所有学生的年龄age,使之在原值基础上减一,下面哪个语句适用?()
A update student set age = 1
B update student set age = age - 1
C update age = age -1 from student
D update from student where age = age -1
第2题:
oracle关联查询题目1
数据库中有3 个表 teacher 表,student 表,tea_stu 关系表。
teacher 表 teaID name age
student 表 stuID name age
teacher_student 表 teaID stuID
要求用一条sql 查询出这样的结果
1.显示的字段要有老师name, age 每个老师所带的学生人数
2 只列出老师age 为40 以下学生age 为12 以上的记录
预备知识:
1.sql 语句是对每一条记录依次处理,条件为真则执行动作(select,insert,delete,update)
2.只要是迪卡尔积,就会产生“垃圾”信息,所以,只要迪卡尔积了,我们首先就要想到清除“垃圾”信息
实验准备:
drop table if exists tea_stu;
drop table if exists teacher;
drop table if exists student;
create table teacher(teaID int primary key,name varchar(50),age int);
create table student(stuID int primary key,name varchar(50),age int);
create table tea_stu(teaID int references teacher(teaID),stuID int references student(stuID));
insert into teacher values(1,'zxx',45), (2,'lhm',25) , (3,'wzg',26) , (4,'tg',27);
insert into student values(1,'wy',11), (2,'dh',25) , (3,'ysq',26) , (4,'mxc',27);
insert into tea_stu values(1,1), (1,2), (1,3);
insert into tea_stu values(2,2), (2,3), (2,4);
insert into tea_stu values(3,3), (3,4), (3,1);
insert into tea_stu values(4,4), (4,1), (4,2) , (4,3);
结果:2_3,3_2,4_3
解题思路:(真实面试答题时,也要写出每个分析步骤,如果纸张不够,就找别人要)
1 要会统计分组信息:
select teaid,count(*) from tea_stu group by teaid;
2.要会筛选大于40 的老师
先讲给1 号学生带课的所有老师的名字,要知道1 号学生的老师,要从哪个表获得?从tea_stu 里才可以,从
这个表里获得的是老师的什么?是老师的teaID,如果要得到老师的名称,则必须拿着teaID 去teacher 里找。所以,
这两个表要进行关联,关联就引出迪卡尔既的问题。假设我们好获得teaID 为1 的老师的名称,我们要关联的是哪条
记录?是1 那一条,但是,迪卡尔既的结果有几条啊?4 条,显然,我接着要做的就是把其他垃圾的3 条去掉。
select * from tea_stu,teacher where tea_stu.teaID=teacher.teaID;
再接着去掉大于40 的老师:
select * from tea_stu,teacher where tea_stu.teaID=teacher.teaID and teacher.age<=40;
3.再对上面的结果去掉小于12 的学生
select * from
(select tea_stu.* from tea_stu,teacher where tea_stu.teaID=
teacher.teaID and teacher.age<40) as t,
student
where t.stuid=student.stuid and student.age>12;
4.再对上面的结果进行统计,显示的是老师的id 和组信息
select t.teaID,count(*) from
(select tea_stu.* from tea_stu,teacher where tea_stu.teaID=
teacher.teaID and teacher.age<40) as t,
student
where t.stuid=student.stuid and student.age>12
group by t.teaID;
5.然后对上面的东西进行改写,改写成显示老师的名字
select teacher.name,t2.c from
(select t.teaID,count(*) c from
(select tea_stu.* from tea_stu,teacher where tea_stu.teaID=
teacher.teaID and teacher.age<40) as t,
student
where t.stuid=student.stuid and student.age>12
group by t.teaID) as t2,
teacher
where teacher.teaID=t2.teaID;
第二种写法:
select teacher.teaID, teacher.name, t1.total from teacher,
(select teaID,count(tea_stu.stuID) total from tea_stu, student
where tea_stu.stuID = student.stuID and student.age>12
group by teaID ) as t1
where teacher.teaID = t1.teaID and teacher.age<40 ;
求出发帖最多的人:
select authorid,count(*) total from articles
group by authorid
having total=
(select max(total2) from (select count(*) total2 from articles group by authorid) as t);
select t.authorid,max(t.total) from
(select authorid,count(*) total from articles )as t
这条语句不行,因为max 只有一列,不能与其他列混淆。
select authorid,count(*) total from articles
group by authorid having total=max(total)也不行。
第3题:
在Visual FoxPro中,使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令是A)REPLACEAGE WITH AGE+1B)UPDATE STUDENT AGE WITH AGE+1C)UPDATE SET AGE WITH AGE+1D)UPDATE STUDENT SET AGE=AGE+1
第4题:
描述
表1 student 学生信息表
ID int 学生编号
Name varchar 学生姓名
Sex bit 性别(男0女1)
Class int 班级编号
表2 schedule 课程信息表
ID int 课程编号
Name varchar 课程名称
表3 Grade 成绩信息表
ID int 自动编号
UID int 学生编号
SID int 课程编号
Num int 考试成绩
(a)求各班的总人数(1分)
(b)求1班女生和男生的平均成绩(2分)
(c)各班"数据结构"(课程名称)不及格的人数(2分)
第5题:
MySQL中用DROP语句可删除数据库和数据表,以下哪句是正确的语法?()
A、DROPTABLEtable_name1
B、DROPTABLEtable_name1,table_name2
C、DROPTABLEIFEXISTStable_name1
D、DROPDATABASEDBname1
第6题:
若用如下的SQL语句创建一个student表: CREATE TABLE student( N0 C(4)NOT NULL, NAME C(8)NOT NULL, SEX C(2), AGE N(2) ) 可以插入到student表中的是
A.('1031','曾华',男,23)
B.('1031','曾华',NULL,NULL)
C.(NULL,'曾华','男','23')
D.('1031',NULL,'男',23)
第7题:
若用如下的SQL语句创建一个student表: CREATE TABLE student( NO C(4) NOT NULL,NAME C(8) NOT NULL, SEX C(2) ,AGE N(2) ) 可以插入到student表中的是
A. ('1031','李林',男,23)
B. ('1031','李林',NULL)
C. (NULL,'李林','男','23')
D. ('1031',NULL,'男',23)
第8题:
创建表并给出约束。 用SQL语句创建如下三张表:学生表(Student)、课程表(Course)和学生修课表(SC),这三张表的结构和约束如表4-1到表4-3所示。 
创建满足约束条件的上述三张表的SQL语句如下:
略
第9题:
数据库a1.mdb中的数据表s1,含ID、name、pwd三个字段,能够正确输出当前记录的用户名(name)的语句是()。
第10题:
数据库中有一张表名称为Student,有列Name,Age,IDCard,Sex。要求写SQL语句查询出表中年龄介于20和30岁之间的数据,下列哪个SQL语句是正确的?()
第11题:
REPLACE AGE WITH AGE+1
UPDATE STUDENT AGE WITH AGE+1
UPDATE SET AGE WITH AGE+1
UPDATE STUDENT SET AGE=AGE+I
第12题:
Select* From Student
Select Name From Student
Select Name,Age,IDCard From Student
Select Name,Age,IDCard,Sex From Student
第13题:
在Visual FoxPro中,使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令是
A.REPLACE AGE WITH AGE+1
B.UPDATE STUDENT AGE WITH AGE+1
C.UPDATE SET AGE WITH AGE+I
D.UPDATE STUDENT SET AGE=AGE+1
第14题:
在Visual FoxPro中,使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该的使用命令是( )。
A. REPLACE AGE WITH AGE+1
B. MODIFY STUDENT SET AGE=AGE+1
C. ALTER STUDENT SET AGE WITH AGE+1
D. UPDATE STUDENT SET AGE=AGE+1
第15题:
若用如下的SQL语句建立一个Worker表: CREATE TABLE worker(NO C(4)NOT NULL,NAME C(8)NOT NULL,SEX C(2),AGE N(2)) 可以插入到worker表中的是______。
A.('20031006',NULL,'男',23)
B.(NULL,NULL,'女',23)
C.(NULL,'李林','男',23)
D.('20031006','李林','男',23)
第16题:
在一个 mysql 4.0+的数据库中有两个表,学生表和成绩表,分别如下所示:
SN | Name SN | Score
------------- -------------
1 | Jerry 1 | 48
------------- -------------
2 | Lily 2 | 50
------------- -------------
3 | Roy
-------------
其中 SN 是联系两个表的外键。用带有 LEFT JOIN 的SQL 语句删除哪些没有对应成绩的学生。
第17题:
A.public Person(){}
B.public Person(String name,int age) { this.name = name; this.age = age; }
C.public Person(int age,String name) { this.age = age; this.name = name; }
D.public Person(String name) { this.name = name; }
第18题:
Inthisscenario,assumethatyouarchivelogs101to104totwoarchivingdestinations,/log1and/log2.Thecontrolfilecontainsarchivedlogrecordsasfollows:
SequenceFilename
101/log1/log_1_101.arc
101/log2/log_1_101.arc
102/log1/log_1_102.arc
102/log2/log_1_102.arc
103/log1/log_1_103.arc
103/log2/log_1_103.arc
104/log1/log_1_104.arc
104/log2/log_1_104.arc
Youaccidentallydeletelogs102and104fromlog1.Yourunthiscommand:
BACKUPARCHIVELOGFROMSEQUENCE101UNTILSEQUENCE105;
Whathappens?()
第19题:
第20题:
若用如下的SQL语句创建一个student表:CREA TETABLE student(NO CHAR(4)NOT NULL,NAME CHAR(8)NOT NULL,SEX CHAR(2),AGE INT)可以插入到student表中的是()
第21题:
数据库中有一张表名称为Student,有列Number,Name,Age,IDCard,Sex。主键为Number。统计学生总人数,下列哪个SQL语句是正确的()
第22题:
使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令是()。
第23题:
LEFT(Name,1)=‘刘’ORLEFT(Name,1)=‘杨’
NameLIKE‘刘%‘ORNameLIKE杨%‘
NameLIKE‘[刘,杨]%‘
NameLIKE‘[^刘,^杨]%