SQL经典面试题及答案吉祥工作室

要在tbAddress表中插入记录,下面哪条语句是正确的?()

A.Insert Into tbAddress(strName,strTel) Values("萌萌","6545632")

B.Insert Into tbAddress(strName,strEmail) Values("萌萌", "")

C.Insert Into tbAddress(strName,strEmail) Values("萌萌",NULL)

D.Insert Into tbAddress(strName,intAge) Values(萌萌,22)


正确答案:ABC


以下插入记录正确的( )

A.insert into emp(ename,hiredate,sal) values (value1,value2,value3);

B.insert into emp (ename,sal)values(value1,value2,value3);

C.insert into emp (ename)values(value1,value2,value3);

D.insert into emp (ename,hiredate,sal)values(value1,value2);


正确答案:A 


向“成绩”表末尾插入一条“学号”为“08102002”,“课程编号”为“4001”,“成绩”为“86”的新记录,正确的语句是( )。

A.INSERT INTO成绩VALUES(08102002,4001,86)

B.INSERT INTO成绩VALUES("08102002","4001",86)

C.INSERT FOR成绩VALUES(08102002,4001,"86")

D.INSERT FOR成绩VALUES("08102002","4001",86)


正确答案:B
解析:Visual FoxPro支持两种SQL插入格式,第一种为标准格式,第二种是Visual FoxPro的特殊格式。
第一种格式为:
INSERT INTO表名>[(字段名1[,字段名2,...])];
VALUES(表达式1[,表达式2,...])
其中,INSERT INTO表名>说明向指定的表中插入记录。当插入的不是完整的记录时,可以用字段名1,字段名2,...指定字段;VALUE(表达式1巳表达式2,...])给出具体的记录值。
插入记录时,要注意插入的数据的类型与其字段类型要相同,本题中成绩为


In a test database, you issue the SELECT … INTO OUTFILE statement to create a file with your t1 table data. You then TRUNCATE this table to empty it.()Mysql> SELECT * INTO OUTFILE ‘/tmp/t1.sql‘ from t1;mysql> TRUNCATE t1;

A.$ mysqladmin – u root – p – h localhost test – restore /tmp/t1.sql

B.Mysql> INSERT INTO t1 VALUES FROM ‘/tmp/t1.sql‘

C.$ mysql – u root – p – h localhost test < /tmp/t1.sql

D.Mysql> LOAD DATA INFILE ‘/tmp/t1.sql‘ INTO TABLE t1

E.$ mysqlinport – u root – p – h localhost test /tmp/t1.sql


参考答案:D, E


如果学生表STUDENT是使用下面的SQL语句创建的

CREATE TABLE STUDENT(SNO C(4) PRIMARY KEY NOT NULL,;

SN C(8),;

SEX C(2),;

AGE N(2) CHECK(AGE>15 AND AGE<30))

下面的SQL语句中可以正确执行的是

A.INSERT INTO STUDENT(SNO,SEX,AGE)VALUES (“S9”,“男”,17)

B.INSERT INTO STUDENT(SN,SEX,AGE)VALUES (“李安琦”,“男”,20)

C.INSERT INTO STUDENT(SEX,AGE)VALUES (“男”,20)

D.INSERT INTO STUDENT(SNO,SN)VALUES (“S9”,“安琦”,16)


正确答案:A
解析:题干中创建表的SQL语句使用了短语PRIMARY KEY,将SNO字段规定为主索引字段,同时使用短语NOT NULL,规定在该字段中不允许出现空值,因此选项B、C都是错误的;而选项D的错误在于,语句中的VALUES后面所描述的插入记录值,与题干中所创建的字段不符;正确选项为A,能够实现插入记录的操作。


1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何写sql语句? 胜 负2005-05-09 2 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),shengfu nchar(1))insert into #tmp values('2005-05-09','胜')insert into #tmp values('2005-05-09','胜')insert into #tmp values('2005-05-09','负')insert into #tmp values('2005-05-09','负')insert into #tmp values('2005-05-10','胜')insert into #tmp values('2005-05-10','负')insert into #tmp values('2005-05-10','负')1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from #tmp group by rq2) select N.rq,N.勝,M.負 from (select rq,勝=count(*) from #tmp where shengfu='胜'group by rq)N inner join(select rq,負=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq3)select a.col001,a.a1 胜,b.b1 负 from(select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a,(select col001,count(col001) b1 from temp1 where col002='负' group by col001) bwhere a.col001=b.col0012.请教一个面试中遇到的SQL语句的查询问题表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。------------------------------------------select (case when ab then a else b end ),(case when bc then b esle c end)from table_name3.面试题:一个日期判断的sql语句?请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)------------------------------------------select * from tb where datediff(dd,SendTime,getdate())=04.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文 数学 英语 及格 优秀 不及格------------------------------------------select(case when 语文=80 then '优秀' when 语文=60 then '及格'else '不及格') as 语文,(case when 数学=80 then '优秀' when 数学=60 then '及格'else '不及格') as 数学,(case when 英语=80 then '优秀' when 英语=60 then '及格'else '不及格') as 英语,from table5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?------------------------------------------用户临时表:create table #xx(ID int, IDValues int)系统临时表:create table ##xx(ID int, IDValues int)区别:用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.当创建它的进程消失时这个临时表就自动删除.全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。------------------------------------------它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Server的存储容量是可以扩大的.SQL Server 2000 数据库有三种类型的文件:主要数据文件主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。次要数据文件次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。日志文件日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。7.请用一个sql语句得出结果从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。如使用存储过程也可以。table1月份mon 部门dep 业绩yj-------------------------------一月份 01 10一月份 02 10一月份 03 5二月份 02 8二月份 04 9三月份 03 8table2部门dep 部门名称dname-------------------------------- 01 国内业务一部 02 国内业务二部 03 国内业务三部 04 国际业务部table3 (result)部门dep 一月份 二月份 三月份-------------------------------------- 01 10 null null 02 10 8 null 03 null 5 8 04 null null 9------------------------------------------1)select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二月份',d.业绩yj as '三月份'from table1 a,table2 b,table2 c,table2 dwhere a.部门dep = b.部门dep and b.月份mon = '一月份' anda.部门dep = c.部门dep and c.月份mon = '二月份' anda.部门dep = d.部门dep and d.月份mon = '三月份' and2)select a.dep,sum(case when b.mon=1 then b.yj else 0 end) as '一月份',sum(case when b.mon=2 then b.yj else 0 end) as '二月份',sum(case when b.mon=3 then b.yj else 0 end) as '三月份',sum(case when b.mon=4 then b.yj else 0 end) as '四月份',sum(case when b.mon=5 then b.yj else 0 end) as '五月份',sum(case when b.mon=6 then b.yj else 0 end) as '六月份',sum(case when b.mon=7 then b.yj else 0 end) as '七月份',sum(case when b.mon=8 then b.yj else 0 end) as '八月份',sum(case when b.mon=9 then b.yj else 0 end) as '九月份',sum(case when b.mon=10 then b.yj else 0 end) as '十月份',sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',from table2 a left join table1 b on a.dep=b.dep

如果学生表STUDENT是使用下面的SQL语句创建的: CREATE TABLE STUDENT(SNO C(4)PRIMARY KEY NOT NULL. SN C(8), SEX C(2), AGE N(2)CHECK(AGE>15 AND AGE<25)) 下面的SQL语句中可以正确执行的是( )。

A. INSERT INTO STUDENT(SN,SEX,AGE)VALUES(”王磊”,”男”,20)

B. INSERT INTO STUDENT(SN0,SEX,AGE)VALUES(”S9”,”男”,17)

C. INSERT INTO STUDENT(SEX,AGE)VALUES(”男”,20)

D. INSERT INTO STUDENT(SN0,SN,AGE)VALUES(”S9”,”王磊”,14)


正确答案:B
由于SN0项不可以为空,是必填字段,在用INSERT插入记录时,SN0字段的值不可省,故A、c不正确,在用INSERT插入记录时,D项中的年龄不符合约束条件,故D不正确。
INSERT语句的格式为:
INSERT INTO dbf__name[(fnamel[,fname2,...])]VALUES(eExpressionl[,eExpression2,...j)
PRIMARY KEY NOT NULL用来定义SN0为主关键字,并且不可为NULL值;
CHECK(ACE>15 AND AGE<25)语句用来约束字段 AGE必须大于l5并且小于25。


如果学生表STUDENT是使用下面的SQL语句创建的 CREATE TABLE STUDENT(SNOC(4)PR1MARY KEY NOTNULL; SNC(8),; SEXC(2),; AGEN(2)CHECK(AGE>15AND AGE<30) 下面的SQI语句中可以正确执行的是 ______。

A.INSERT INTO STUDENT(SNO,SEX,AGE)valueS("S9","男",17)

B.INSERT INTO STUDENT(SNO,SEX,AGE)valueS(“李安琦”,“男”,20)

C.INSERT INTO STUDENT(SEX,AGE)valueS(“男”,20)

D.INSERT INTO STUDENT(SNO,SN)valueS("S9",“安琦”,16)


正确答案:A
解析:本题中SNO字段值在定义时为主关键字,所以不能为空。当插入一条新的记录时;必须保证此字段有数据,且插入的数据如果为字符型数据,要加双引号。


A table was created using the following DDL:CREATE TABLE employee (id SMALLINT NOT NULL, name VARCHAR(9), dept SMALLINT CHECK (dept BETWEEN 10 AND 100),job CHAR(10) CHECK (job IN (‘Sales‘,‘Mgr‘,‘Clerk‘)), hiredate DATE, salary DECIMAL(7,2), comm DECIMAL(7,2), PRIMARY KEY (id), CONSTRAINT yearsal CHECK (YEAR(hiredate) > 2004 OR salary > 80500) );Which of the following INSERT statements will fail?()

A.INSERT INTO employee VALUES (2, ‘Smith‘, 80, ‘Mgr‘, ‘09/03/2006‘, 80000, NULL)

B.INSERT INTO employee VALUES (4, ‘Smith‘, 86, ‘Mgr‘, ‘07/14/2003‘, 90000, NULL)

C.INSERT INTO employee VALUES (1, ‘Smith‘, 55, ‘Sales‘, ‘07/14/2003‘, NULL, NULL)

D.INSERT INTO employee VALUES (3, ‘Smith‘, 33, ‘Analyst‘, ‘11/26/2006‘, 90000, NULL)


参考答案:D


Given the following DDL and INSERT statements:CREATE VIEW v1 AS SELECT col1 FROM t1 WHERE col1 > 10; CREATE VIEW v2 AS SELECT col1 FROM v1 WITH CASCADED CHECK OPTION; CREATE VIEW v3 AS SELECT col1 FROM v2 WHERE col1 < 100; INSERT INTO v1 VALUES(5); INSERT INTO v2 VALUES(5); INSERT INTO v3 VALUES(20); INSERT INTO v3 VALUES(100);How many of these INSERT statements will be successful?()

A.0

B.1

C.2

D.3


参考答案:C


正确的SQL插入命令的语法格式是( )。 A.INSERT IN…VALUES…B.INSERT TO…VALUES…

正确的SQL插入命令的语法格式是( )。

A.INSERT IN…VALUES…

B.INSERT TO…VALUES…

C.INSERT INTO…VALUES…

D.INSERT…VALUES…


正确答案:C
C。【解析】SQL语句插入数据的格式为INSERTINTO[(fnamel)[,fname2,…]]VALUES[eExpressionl[,eExpression2…]]。

更多 “SQL经典面试题及答案吉祥工作室” 相关考题
考题 现有表book,字段:id(int),title(varchar),price(float);其中id字段设为标识,使用insert语句向book表中插入数据,以下语句错误的是()。A、insert into book (id,title,price) values(1,'java',100)B、insert into book (title,price) values('java',100)C、insert into book values ('java',100) 这辆都不可以啊,如果不指定列需要明确的给出空值D、insert book values('java',100)正确答案:C,D

考题 现有表book,字段:id(int),title(varchar),price(float);其中id字段设为标识,使用insert语句向book表中插入数据,以下语句错误的是()。A、insert into book(id,title,price)values(1,’java’,100)B、insert into book(title,price)values(’java’,100)C、insert into book values(’java’,100)D、insert book values(’java’,100)正确答案:A

考题 设有健身项目表,该表的定义如下:CREATE TABLE健身项目表(项目编号I PRIMARY KEY,;项目名称C(30)NOT NULL,;单价I NULL CHECK(单价&gt;=0))下列插入语句中,提示错误的是( )。A.INSERT INTO健身项目表(项目编号,项目名称,单价)VALUES(1,ˋ瑜伽ˊ,20)B.INSERT INTO健身项目表(项目编号,项目名称)VALUES(1,ˋ瑜伽ˊ)C.INSERT INTO健身项目表VALUES(1,ˋ瑜伽ˊ,NULL)D.INSERT INTO健身项目表(项目名称,单价)VALUES(ˋ瑜伽ˊ,20)正确答案:DINSERTINTO<表名>[(字段名1[,字段名2,……])]VALUES(字段值1[,字段值2,……])命令用于插入数据,D选项插入主键为空,故D选项正确。

考题 Examine the structure of the EMPLOYEES table: EMPLOYEE_ID NUMBER NOT NULL EMP_NAME VARCHAR2(30) JOB_ID VARCHAR2(20) SAL NUMBER MGR_ID NUMBER DEPARTMENT_ID NUMBER You want to create a SQL script file that contains an INSERT statement. When the script is run, the INSERT statement should insert a row with the specified values into the EMPLOYEES table. The INSERT statement should pass values to the table columns as specified below: EMPLOYEE_ID: Next value from the sequence EMP_ID_SEQ EMP_NAME and JOB_ID: As specified by the user during run time, throughsubstitution variables SAL: 2000 MGR_ID: No value DEPARTMENT_ID: Supplied by the user during run time through substitution variable. The INSERT statement should fail if the user supplies a value other than 20 or 50. Which INSERT statement meets the above requirements?()A、INSERT INTO employees VALUES (emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did);B、INSERT INTO employees VALUES (emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did IN (20,50));C、INSERT INTO (SELECT * FROM employees WHERE department_id IN (20,50)) VALUES (emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did);D、INSERT INTO (SELECT * FROM employees WHERE department_id IN (20,50) WITH CHECK OPTION) VALUES (emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did);E、INSERT INTO (SELECT * FROM employees WHERE (department_id = 20 AND department_id = 50) WITH CHECK OPTION ) VALUES (emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did);正确答案:D

考题 In a test database, you issue the SELECT … INTO OUTFILE statement to create a file with your t1 table data. You then TRUNCATE this table to empty it.() Mysql> SELECT * INTO OUTFILE '/tmp/t1.sql' from t1; mysql> TRUNCATE t1;A、$ mysqladmin – u root – p – h localhost test – restore /tmp/t1.sqlB、Mysql> INSERT INTO t1 VALUES FROM '/tmp/t1.sql'C、$ mysql – u root – p – h localhost test < /tmp/t1.sqlD、Mysql> LOAD DATA INFILE '/tmp/t1.sql' INTO TABLE t1E、$ mysqlinport – u root – p – h localhost test /tmp/t1.sql正确答案:D,E

考题 根据关系模型Teacher(编号,职称)下列SQL语句正确的是()A、INSERT INTO Teacher(编号,职称)VALUES("070041","助教")B、INSERT INTO Teacher("070041","助教")VALUES(编号,职称)C、INSERT INTO VALUES(编号,职称)Teacher("070041","助教")D、INSERT INTO VALUES("070041","助教")Teacher(编号,职称正确答案:A

考题 A table was created using the following DDL: CREATE TABLE employee (id SMALLINT NOT NULL, name VARCHAR(9), dept SMALLINT CHECK (dept BETWEEN 10 AND 100), job CHAR(10) CHECK (job IN ('Sales','Mgr','Clerk')), hiredate DATE, salary DECIMAL(7,2), comm DECIMAL(7,2), PRIMARY KEY (id), CONSTRAINT yearsal CHECK (YEAR(hiredate) > 2004 OR salary > 80500) ); Which of the following INSERT statements will fail?()A、INSERT INTO employee VALUES (2, 'Smith', 80, 'Mgr', '09/03/2006', 80000, NULL)B、INSERT INTO employee VALUES (4, 'Smith', 86, 'Mgr', '07/14/2003', 90000, NULL)C、INSERT INTO employee VALUES (1, 'Smith', 55, 'Sales', '07/14/2003', NULL, NULL)D、INSERT INTO employee VALUES (3, 'Smith', 33, 'Analyst', '11/26/2006', 90000, NULL)正确答案:D

考题 正确的SQL插入命令的语法格式是A.INSERT IN…VALUES…B.INSERT TO…VALUES…C.INSERT INTO…VALUES…D.INSERT…VALUES…正确答案:C解析:正确的SQL插入命令的语法格式是INSERT INTO<表名>[(字段名1[,字段名2,…])]VALUES(字段值1[,字段值2,…]),选项A)、B)、D)的命令格式不对,故选C)。

考题 设有Teachers表,该表的定义如下:  CREATE TABLE Teachers(  Tno  CHAR(8)  PRIMARY  KEY,  Tname  VARCHAR(10)  NOT NULL,  Age  TINYINT  CHECK(Age BETWEEN 25 AND 65)  )  下列插入语句中,不能正确执行的是()。A、INSERT INTO Teachers VALUES(’T100’,’张宏’,NULL)B、INSERT INTO Teachers(Tno,Tname,Age) VALUES(’T100’,’张宏’,30)C、INSERT INTO Teachers(Tno,Tname) VALUES(’T100’,’张宏’)D、INSERT INTO Teachers VALUES(’T100’,’张宏’)正确答案:D

考题 Examine the structure of the EMPLOYEES table: EMPLOYEE_ID NUMBER Primary Key FIRST_NAME VARCHAR2(25) LAST_NAME VARCHAR2(25) HIRE_DATE DATE Which INSERT statement is valid?()A、INSERT INTO employees (employee_id, first_name, last_name, hire_date) VALUES (1000, 'John', 'smith','01/01/01);B、INSERT INTO employees(employee_id, first_name, last_name, hire_date) VALUES (1000, 'John', 'smith','01 january 01');C、INSERT INTO employees(employee_id, first_name, last_name, Hire_date) VALUES (1000, 'John', 'smith', To_ date ('01/01/01));D、INSERT INTO employees(employee_id, first_name, last_name, hire_date) VALUES (1000, 'John', 'smith','01-Jan-01');正确答案:A