SQL 基础练习

Posted 冬月二四

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 基础练习相关的知识,希望对你有一定的参考价值。

name  kecheng fenshu
张三  语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

1、用一条SQL语句查询出每门课都大于80分的学生姓名

 1 create table chengji1(
 2 name  varchar(50) not null,
 3 kecheng varchar(50) not null,
 4 fenshu int not null
 5 )
 6 insert chengji1(name,kecheng,fenshu)values(\'张三\',\'语文\',81),(\'张三\',\'数学\',75),(\'李四\',\'语文\',76),(\'李四\',\'数学\',90),(\'王五\',\'语文\',81),(\'王五\',\'数学\',100),(\'王五\',\'英语\',90)
 7 
 8 select * from chengji1
 9 --distinct 用于返回唯一不同的值--
10 select distinct name from chengji1 where name not in (select distinct name from chengji1 where fenshu <= 80 )
11 --增加having字句的原因是,where关键字无法与合计函数一起使用--
12 select name from chengji1 group by name having min(fenshu)> 80
13 ----
14 select name from chengji1 group by name having COUNT(kecheng) >= 3 and MIN(fenshu) >= 80 
View Code

 

2、删除除了自动编号不同, 其他都相同的学生冗余信息

 1 create table stutable1(
 2 id int primary key IDENTITY(1,1) not null,
 3 stunumber varchar(20) not null,
 4 name varchar(20) not null,
 5 kcnumber varchar(20) not null,
 6 kecheng varchar(20) not null,
 7 fenshu int not null
 8 )
 9 insert stutable1(stunumber,name,kcnumber,kecheng,fenshu) values(\'2005001\',\'张三\',\'0001\',\'数学\',69),(\'2005002\',\'李四\',\'0001\',\'数学\',89),(\'2005001\',\'张三\',\'0001\',\'数学\',69)
10 select * from stutable1
11 delete stutable1 where id not in (select  MIN(id) from stutable1 group by stunumber,name,kcnumber,kecheng,fenshu)
答案

3、面试题:怎么把这样一个表儿

查成这样一个结果

create table yma(
year int not null,
month int not null,
amount decimal(18,1) not null
)
insert yma values(1991,1,1.1),(1991,2,1.2),(1991,3,1.3),(1991,4,1.4),(1992,1,2.1),(1992,2,2.2),(1992,3,2.3),(1992,4,2.4)
select * from yma
delete from yma

select year,
(select amount from yma m where month =1 and m.year= yma.year) as m1,
(select amount from yma m where month =2 and m.year= yma.year) as m2,
(select amount from yma m where month =3 and m.year= yma.year) as m3,
(select amount from yma m where month =4 and m.year= yma.year) as m4
from yma group by year
答案

4、说明:拷贝表( 拷贝数据, 源表名:a 目标表名:b)

create table yma1(
year int not null,
month int not null,
amount decimal(18,1) not null
)
insert into yma1(year,month,amount)select year,month,amount from yma
select * from yma1
答案

 5、通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?

SELECT * FROM Persons WHERE LastName BETWEEN \'Adams\' AND \'Carter\'

6、通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?

SELECT * FROM Persons WHERE FirstName LIKE \'a%\'

 

以上是关于SQL 基础练习的主要内容,如果未能解决你的问题,请参考以下文章

sql 基础练习题

sql 基础练习

SQL 基础练习

MySQL----基础sql练习

pl/sql基础练习

mysql基础SQL练习