搜档网
当前位置:搜档网 › SQL查询语句习题

SQL查询语句习题

SQL查询语句习题
SQL查询语句习题

1.检索“商品信息”类别名称=玩具并且零售价在100和300之间的商品的平均零售价,

最大零售价,最小零售价,以及零售价之和

Select 类别名称,零售价, min(零售价)最小零售价, max(零售价

)最大零售价,avg(零售价)平均零售价,sum(零售价)零售价之和from 商品信息 a inner join 商品类别b on

a.类别ID=

b.类别ID where 类别名称='玩具' group by 类别名称,零售价

2.检索“商品入出库”中审核日期大于2009年3月1日,并且入库类型编号为“采购入库”的商品的总金额(入出库数量*进价)返回数据:入出库编号、总金额

(商品入出库.入库类型编号=入出库类型.入库类型编号)

select a.入出库编号,类型名称,总金额=入出库数量*进价from 商品入出库a inner join 入出库类型b on a.入出库类型编号=b.入出库类型编号

inner join 入出库明细c on c.入出库编号= a.入出库编号where 审核日期>'2009-03-01' and 类型名称='采购入库'

3. 统计每个仓库中库存的除去食品之外的总金额

(【仓库】.仓库ID=【库存.仓库ID

select 仓库名称,类别名称, sum(数量*零售价)总金额from 仓库a inner join 库存b on a.仓库ID=b.仓库ID

inner join 商品信息c on b.商品ID=c.商品ID inner join 商品类别d on c.类别ID=d.类别ID where 类别名称not like '食品' group by 仓库名称,类别名称

4、统计“商品信息”中商品名称相同的信息,要求商品名称的重复次数大于3,返回数据商品名称,次数

select 商品名称,count(商品名称)次数from 商品信息group by 商品名称having count(商品名称)>3

5、统计“库存”中汇总库存数量小于100的商品编码、商品名称、汇总库存数量

select 商品编码,商品名称,count (数量)汇总库存数量from 库存a inner join 商品信息b

on a.商品ID=b.商品ID group by 商品编码,商品名称having count (数量)<100

实验11 SQL Server 2000的存储过程

实验目的

掌握使用向导创建存储过程并更新相应数据

掌握使用T-SQL编程的方法

掌握使用T-SQL语句创建一个存储过程并验证

掌握创建和执行带参数的存储过程

熟练使用系统存储过程、系统函数

掌握用在企业管理器中管理存储过程

实验要求

创建一个不带参数的存储过程。

创建一个带参数的存储过程p_count。

保存并上交实验结果。

实验步骤

用print语句显示“重庆正大软件职业技术学院软件技术系对日开发专业”

写一个程序,计算9到999的和,SQL自已查找:

如果职工信息表中的平均工龄大于5,就显示“平均工龄大于5”,否则显示“平均工龄不大于5”。(if---else)

在商品类别表中使用CASE语句来判断商品的类别,例如类别ID为1则显示食品,如果类别ID为2则显示副食品。

显示存在“大渡口库房”所有的商品名称。

1、创建一个存储过程查看所有商品的商品名称、类型、单价、数量,并调用该过程。

2、创建一个存储过程查看名称为‘豆浆晶’的商品的商品名称、类型、单价、数量。

3、创建一个存储过程查看某个商品的商品名称、类型、单价、数量,并调用该过程。

4、创建一个存储过程求两个数之积,要求用OUTPUT输出参数。

5、调用该过程计算20*30的积,输出‘20*30的和为:600’的效果。

6、查询4题创建存储过程的源代码。

7、删除1题创建的存储过程。

8.创建一个存储过程,输入整数a,b,计算a,b之和

1.用print语句显示“重庆正大软件职业技术学院软件技术系对日开发专业”

declare @a char(50)

set @a='重庆正大软件职业技术学院软件技术系对日开发专业'

print @a

2.写一个程序,计算9到999的和,SQL自已查找:

declare @a int ,@sum int

set @a=9

set @sum=0

while @a<999

begin

set @sum=@sum+@a

set @a=@a+1

end

select @sum

3.如果职工信息表中的平均工龄大于5,就显示“平均工龄大于5”,否则显示“平均工龄不大于5”。(if---else)

if (select avg(工龄) from 职工信息)>5

select '平均工龄大于5'

else

select '平均工龄不大于5'

4.在商品类别表中使用CASE语句来判断商品的类别,例如类别ID为1则显示食品,如果类别ID为2则显示副食品。

select 类别ID, 类别ID=

case when 类别ID=1 then '食品'

when 类别ID=2 then '副食品'

when 类别ID=3 then '日常用品'

when 类别ID=4 then '粮油类'

when 类别ID=5 then '电器类'

when 类别ID=6 then '厨具'

when 类别ID=7 then '玩具'

when 类别ID=8 then '茶类'

when 类别ID=9 then '文具'

when 类别ID=10 then '饮料'

else '无'

end

from 商品类别

5.显示存在“大渡口库房”所有的商品名称。

select 商品名称from 商品信息a inner join 库存b on a.商品ID=b.商品ID join

仓库c on c.仓库ID=b.仓库ID where 仓库名称='大渡口库房'

1、创建一个存储过程查看所有商品的商品名称、类别名称、进价、数量,并调用该过程。create proc wa

as

select 商品名称,类别名称,进价,数量from 商品信息a inner join 库存b on a.商品ID=b.商品ID join 商品类别

c on a.类别ID=c.类别ID

execute wa

2、创建一个存储过程查看名称为‘豆浆晶’的商品的商品名称、类型、单价、数量。create proc aa

as

select 商品名称,类别名称,进价,数量from 商品信息a inner join 库存b on a.商品ID=b.商品ID join 商品类别

c on a.类别ID=c.类别ID where 商品名称='豆浆晶'

execute aa

3、创建一个存储过程查看某个商品的商品名称、类型、单价、数量,并调用该过程。create proc ab

as

select 商品名称,类别名称,进价,数量from 商品信息 a inner join 库存 b on a.商品ID=b.商品ID join 商品类别

c on a.类别ID=c.类别ID where 商品名称='豆浆晶'

drop proc ab

execute ab

4、创建一个存储过程求两个数之积,要求用OUTPUT输出参数。create procedure qq

@a int,@b int,@avg int output

as

set @avg=@b*@a

drop proc qq

5、调用该过程计算20*30的积,输出‘20*30的和为:600’的效果。declare @avg int ,@c char(20)

set @c='20*30的和为:'

exec qq 20 ,30 ,@avg output

select @c+convert(char (20) ,@avg)

6、查询4题创建存储过程的源代码。

sp_helptext qq

7、删除1题创建的存储过程。

drop proc wa

8.创建一个存储过程,输入整数a,b,计算a,b之和

Create Proc wwww

As

declare @a int ,@b Int

set @a=1

set @b=0

begin

while @a<100

set @a=@a+1

set @b=@a+@b

end

select @b

execute wwww

1.检索“职工信息”中的职工ID(Employee ID)、姓名(Employee Name)

2.

Select Employee ID=职工ID,Employee Name=姓名from职工信息

3.检索“商品信息”中商品编码、商品名称、进价、零售价、利润(零售价-进价)

Select 商品编码,商品名称,进价,零售价,利润=零售价-进价from商品信息

4.检索“商品信息”中类别ID、商品名称,要求类别ID和商品名称相同的数据只显示一次

Select distinct 类别ID,商品名称from商品信息

5.检索“商品信息”进价在20和100之间的商品编码、商品名称

Select商品编码,商品名称from商品信息where 进价between 20 and 100

6.检索“商品信息”零售价在2之下和100之上的商品信息

Select商品名称from商品信息where 零售价<2 or 零售价>100

5. 检索“商品信息”进价大于50的商品名称,进价,零售价,并按进价从低到高的顺序排列

Select 商品名称,进价,零售价from商品信息where进价>50 order by进价

6. 检索“商品信息”类别ID=2或者零售价在100和200之间的商品

的商品ID、商品编码、商品名称、零售价

Select商品ID,商品编码,商品名称,零售价from商品信息where类别ID=2 or (零售价>100and 零售价<200)

7.检索“职工信息”中工龄=6并且60年代出生的职工的姓名、出生日期、工龄

Select姓名,出生日期,工龄from职工信息where工龄=6 and出生日期=?1960-01-01?

8、检索“商品信息”中进价在200和500之间的商品名称,要求商品名称不重复

Select distinct 商品名称from商品信息where 进价between 200 and 500

9、检索“商品信息”中零售价和进价之差大于20的商品编码、商品名称、进价、零售价、批发价(进价*1.1)

Select 商品编码,商品名称,进价,零售价,批发价=进价*1.1 from商品信息where (零售价-进价)>20

检索“职工信息”的年龄最小的5名职工的职工ID、姓名、性别、出生日期

Select top 5 职工ID,姓名,性别, 出生日期from 职工信息order by出生日期

检索商品信息中各种商品的销售利润总额在100和500之间的前三名商品的类别名称,利润总额

Select top 3 类别名称,sum(零售价-进价) 利润总额

from 商品信息a inner join 商品类别b on a. 类别ID=b. 类别ID

group by 类别名称

having sum(零售价-进价) between 100 and 500

order by sum(零售价-进价) desc

统计“库存”中汇总库存数量大于1000的商品编码、商品名称、汇总库存数量

Select商品编码,商品名称,sum(数量) from库存a inner join 商品信息b on a.商品ID =b. 商品ID group by 商品编码,商品名称having sum(数量)>1000

将“商品信息”中商品名称包含“康明”的商品插入到“库存”中,仓库id=2,数量=10

insert into 库存(商品ID,仓库ID,数量)

select 商品id,2,10 from 商品信息where 商品名称like …%康明%?

无库存商品初始化,将商品信息中存在,库存中不存在的数据插入到库存中,仓库id=3,数量=100

Insert into 库存(商品ID,仓库ID,数量) select商品id,3,100 from商品信息a left join库存b on a. 商品ID=b. 商品ID where a. 商品ID is null

一、使用T-SQL语句创建数据库book

1、将数据库文件保存在d:\book目录下

2、数据文件book_data,初始大小20M,增长方式20%

3、日志文件book_log,初始大小1M,文件增长无限制

二、使用T-SQL创建表(20分)

三、使用T-SQL插入数据

题目

向图书表中添加一个字段单价,数据类型Decimal(5,2)

用t-sql创建一个视图uv_book,检索图书中销量最后三名的图书名称和单价

查询购买书的种类最多的用户名称和书的种类数

4.存储过程名称“UP_book_Insert”

功能:将图书添加到订单

参数:@buyno char(9),@user_id int ,@num int,@price decimal(10,2)

业务逻辑

判断插入的@buyno在图书是否存在,如果不存在,提示“该图书不存在”。退出存储过程判断插入的,@user_id在用户中是否存在,如不存在提示“该用户不存在”。退出存储过程判断插入的@buyno, @user_id是否能在订单中存在,如果存在,提示“该图书已经在你的购物车中”,并将订单中的数量+@num;如果不存在,将记录插入到订单中

create database book

on

(

name=book_data,

filename='d:\book\book_data.mdf',

size=20mb,

filegrowth=20%

)

log on

(

name=book_log,

filename='d:\book\book_log.ldf',

size=1mb

)

create table 图书

(图书ID Int Not Null primary key ,

图书名Char(20)NOT NULL,

库存数量int null,

)

DROP Table 图书

create table 用户

(

用户id Int Not Null primary key,

用户名char(20) Not Null,

用户地址char(20) Not Null,

用户电话char(20) Not Null,

)

create table 订单

(订单编号int not null ,

序号Int Not Null,

图书ID int null,

用户id int not null,

数量Int null,

单价Decimal(5,2) null,

constraint Pk_buy primary key (订单编号,序号),

constraint FK_book foreign key (图书ID) references 图书(图书ID),

constraint FK_user foreign key(用户id) references 用户(用户id)

)

drop table 订单

alter table 图书drop column 单价

alter table 图书add 单价decimal(5,2)

insert into 图书(图书ID,图书名,库存数量,单价) values (1111,'巴黎圣母院',20,45.20)

insert into 图书(图书ID,图书名,库存数量,单价) values (1112,'三国演义',1500 ,180.50)

insert into 图书(图书ID,图书名,库存数量,单价) values (1113,'红与黑',800,29.80)

insert into 用户values (1001,'张三','重庆市巴南区','1367878549')

insert into 用户values (1002,'李四','重庆市大渡口区','1383939638')

insert into 用户values (1003,'王五', '重庆市巴南区','1367878549')

insert into 用户values (1004,'赵六','重庆市江北区','1335858588')

insert into 订单(订单编号,序号, 用户id,图书ID,数量) values (112001, 1,1001,1111,2)

insert into 订单(订单编号,序号, 用户id,图书ID,数量) values (112001,2,1001,1112,100) insert into 订单(订单编号,序号, 用户id,图书ID,数量) values (112002,3,1002,1112,9)

insert into 订单(订单编号,序号, 用户id,图书ID,数量) values (112003,4,1003,1112,5)

insert into 订单(订单编号,序号, 用户id,图书ID,数量) values (112004,4,1002,1112,6)

2. 用t-sql创建一个视图uv_book,检索图书中销量最后三名的图书名称和单价

create view uv_book

as

select top 3 a.图书名,a.单价,数量from 图书a join 订单b on a.图书ID=b.图书ID order by 数量

3. 查询购买书的种类最多的用户名称和书的种类数

select top 1 用户名,图书ID from 订单a join 用户b on a.用户id=b.用户id order by 图

书ID

1.使用T-SQL语句创建数据库,以自己的名字的拼音命名

在d盘建立一个以自己名字拼音命名的文件夹,将建立的数据库文件保存在改文件夹下,数据文件***_data,初始大小15M,增长方式20%

日志文件***_log,初始大小10m,增长方式50m

2.数据库下面建立几张表:(表用T-SQL的方式创建)

课程

学生

成绩

作业明细

create database zhanglijuan

on (

name= zhanglijuan_data,

filename='d:\zhanglijuan\zhanglijuan_data.mdf',

size=15mb,

filegrowth=20%

)

log

on (

name= zhanglijuan_log,

filename='d:\zhanglijuan\zhanglijuan_data.ldf',

size=10mb,

filegrowth=50mb

)

drop database zhanglijuan

create table 课程

(课程编号int primary key,

课程名称nvarchar (50) ,

类型nvarchar (4),

学分smallint ,

学期nvarchar (10)

)

create table 学生

(

学号varchar (10) primary key ,

姓名nvarchar (10),

性别char (2),

联系方式varchar (20),

职务nvarchar (20)

)

create table 成绩

(课程编号int,

学号varchar (10),

成绩decimal

constraint qq primary key(课程编号,学号)

constraint ss foreign key (课程编号) references 课程(课程编号), constraint sa foreign key (学号) references 学生(学号),

)

drop table 成绩

create table 作业

(作业ID int primary key ,

安排日期datetime,

上交日期datetime,

上交数量smallint,

内容nvarchar (4000),

平均分decimal

)

drop table 作业

create table 作业明细

(作业ID int,

学号varchar (10),

成绩decimal

constraint bb primary key (作业ID,学号)

constraint ab foreign key (作业ID) references 作业(作业ID), constraint ac foreign key (学号) references 学生(学号)

)

drop table 作业明细

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

SQL查询语句练习作业

一、创建名为“student”的表,结构见表1,内容见表2 表1 student表结构 字段名类型宽度 学号字符型10 姓名字符型10 性别字符型 4 出生日期日期型8 专业字符型20 年级数值型10 表2 student表

二、练习SQL查询语句——基础的select 格式: select 字段名 from 表名 1、写出查找student表中所有字段的语句,并在命令窗口测试 2、写出查找student表中学号的语句,并在命令窗口测试 3、写出查找student表中姓名的语句,并在命令窗口测试 4、写出查找student表中性别的语句,并在命令窗口测试 5、写出查找student表中出生日期的语句,并在命令窗口测试 6、写出查找student表中专业的语句,并在命令窗口测试 7、写出查找student表中年级的语句,并在命令窗口测试 8、写出查找student表中学号和姓名的语句,并在命令窗口测试(注意逗号是英文状态) 9、写出查找student表中学号、姓名和性别的语句,并在命令窗口测试 10、写出查找student表中学号、姓名、性别和出生日期的语句,并在命令窗口测试 11、写出查找student表中学号、姓名、性别、出生日期和专业的语句,并在命令窗口测试 12、写出查找student表中学号、姓名、性别、出生日期、专业和年级的语句,并在命令窗口测试

三、练习SQL查询语句——where条件查询 格式: select 字段名 from 表名 where 条件 1、查找student表中学号是101001的学生,写出语句,并在命令窗口测试 2、查找student表中李玲的个人信息,写出语句,并在命令窗口测试 3、查找student表中所有的男学生,写出语句,并在命令窗口测试 4、查找student表中的在1992年3月1日(含)之后出生的学生,写出语句,并在命令窗口测试 5、查找student表中信息管理专业的学生,写出语句,并在命令窗口测试 6、查找student表中2012级的学生,写出语句,并在命令窗口测试 四、练习SQL查询语句——where条件查询AND OR 格式: select 字段名 from 表名 where 条件1 and/or 条件2 1、查找student表中学号为121001和131005的学生信息,写出语句,并在命令窗口测试 2、查找student表中李泽田和王海东的个人信息,写出语句,并在命令窗口测试 3、查找student表中工商管理专业的男生信息,写出语句,并在命令窗口测试 4、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试 5、查找student表中信息管理专业和工商管理专业的女学生,写出语句,并在命令窗口测试 6、查找student表中2012级和2013级中1993年出生的学生,写出语句,并在命令窗口测试

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

SQL搜索语句

SQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 代码:SELECT TOP 2 * FROM `testtable` 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

实验四SQL单表查询语句练习

实验四SQL单表查询语句练习 一、实验目的 1.掌握SQL Server数据库的恢复技术 2.熟练掌握SQL单表查询语句 二、实验内容 1.数据库恢复 2.SQL查询语言练习 实验基础知识提要 Microsoft? SQL Server?查询分析器是一种图形工具,您可以使用它创建查询和其它 SQL 脚本,并针对 SQL Server 数据库执行它们。 连接 SQL Server 连接某个 Microsoft?SQL Server?实例以打开 SQL 查询分析器中的一个查询窗口。如果通过 SQL Server 企业管理器中的连接访问 SQL 查询分析器,则自动打开一个查询窗口。

如果未建立连接而访问 SQL 查询分析器,则显示"连接到SQL Server"对话框,使您可以指定数据库服务器。该对话框还可从工具栏和从"文件"菜单上的"连接"命令进行访问。 下表列出"SQL 查询分析器"工具栏中显示的图标。 最基本的查询语句具有以下的形式:

SELECT select_list FROM table_source [ WHERE search_condition ] select_list 描述结果集的列。它是一个逗号分隔的表达式列表。每个表达式同时定义格式(数据类型和大小)和结果集列的数据来源。每个选择列表表达式通常是对从中获取数据的源表或视图的列的引用,但也可能是其它表达式,例如常量或 Transact-SQL 函数。在选择列表中使用 * 表达式指定返回源表中的所有列。 选择列表还可包含控制结果集的最终格式的关键字: DISTINCT DISTINCT 关键字可从结果集中除去重复的行。 TOP n TOP 关键字指定返回结果集的前 n 行。如果指定了 ORDER BY,行将在结果集排序之后选定。除非指定了 PERCENT 关键字,否则 n 即为返回的行数。PERCENT 指定 n 为结果集中返回的行的百分比。

sql查询语句练习(解析版)

sql查询语句练习(解析版)BY DD 表情况 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar2(20),Sname varchar2(10),Sage int,Ssex varchar2(2)) ; create table Course(C# varchar2(20),Cname varchar2(10),score varchar2(4)) ; create table SC(S# varchar2(20),C# varchar2(20),score varchar2(4)) ; create table Teacher(T# varchar2(20),Tname varchar2(10)) ; insert into Student(S#,Sname,Sage,Ssex) values('1001','李五','15','男'); insert into Student(S#,Sname,Sage,Ssex) values('1002','张三','16','女'); insert into Student(S#,Sname,Sage,Ssex) values('1003','李四','15','女'); insert into Student(S#,Sname,Sage,Ssex) values('1004','陈二','14','男'); insert into Student(S#,Sname,Sage,Ssex) values('1005','小四','15','男'); 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 解析:(select s#,score from SC where C#='001') a//从SC中查询C#=001的学生学号和分数,并定义为a表。 (select s#,score from SC where C#='002') b //从SC中查询C#=002的学生学号和分数,并定义为b表。 where a.score>b.score and a.s#=b.s# 条件,a表与b表中学号相同且分数比b中的高。 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) rom sc group by S# having avg(score) >60; 解析: group by S# having avg(score) >60 这里是指平均分数大于60分的

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

SQL server 查询语句 练习题

SQL server 查询语句练习题 用SQL语句创建四个表: create database tongji go use tongji go create table student ( Sno varchar(20) not null primary key ,--学号 Sname varchar(20) not null,--学生姓名 Ssex varchar(20) not null, --学生性别 Sbirthday datetime,--学生出生年月 Class varchar(20)--学生所在班级 ) go create table teacher--老师 ( Tno varchar(20) not null primary key ,--教工编号(主码) Tname varchar(20) not null,--教工姓名 Tsex varchar(20) not null, --教工性别 Tbirthday datetime,--教工出生年月 Prof varchar(20),--职称 Depart varchar(20) not null--教工所在部门 ) go create table Course--课程 ( Cno varchar(20) not null primary key ,--课程号 Cname varchar(20) not null,--课程名称 Tno varchar(20) not null references teacher(Tno), --教工编号(外码)) go create table Score--分数 ( Sno varchar(20) not null references student(Sno), --学号(外码)Cno varchar(20) not null references Course(Cno), --课程号(外码)primary key(Sno,Cno), Degree Decimal(4,1),--成绩 ) 表中数据如下: 表(一)Student

sql查询语句练习

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 1.查询“001”课程比“002”课程成绩高的所有学生的学号; 2.查询平均成绩大于60分的同学的学号和平均成绩; 3.查询所有同学的学号、姓名、选课数、总成绩; 4.查询姓“李”的老师的个数; 5.查询没学过“叶平”老师课的同学的学号、姓名; 6.查询所有课程成绩小于60分的同学的学号、姓名; 7.查询没有学全所有课的同学的学号、姓名; 8.查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;4 9.删除学习“叶平”老师课的SC表记录; 3 10.取各科平均成绩和及格率,按及格率的百分数从高到低顺序2 11.查询不同老师所教不同课程平均分从高到低显示5 12.统计列印各科,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60] 6\ 13.查询每门课程被选修的学生数7 14.查询出只选修了一门课程的全部学生的学号和姓名1 15.查询男生、女生人数 16.查询姓“张”的学生名单 17.查询同名同姓学生名单,并统计同名人数 18.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 19.查询平均成绩大于85的所有学生的学号、姓名和平均成绩 20.查询课程名称为“数据库”,且分数低于60的学生姓名和分数 21.查询所有学生的选课情况,学号、课程号、姓名、课程名 22.查询任意一门课程成绩在70分以上的姓名、课程名称和分数; 23.查询有成绩不及格的课程,并按课程号从大到小排列 24.查询课程编号为003且课程成绩在80分以上的学生的学号和姓名; 25.查询各个课程及相应的选修人数 26.检索至少选修两门课程的学生学号 27.查询没学过“叶平”老师讲授的任一门课程的学生姓名 28.查询两门以上不及格课程的同学的学号及其平均成绩 29.检索“004”课程分数小于60,按分数降序排列的同学学号 30.删除“002”同学的“001”课程的成绩 经典SQL练习题 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

数据库中SQL查询语句习题含的答案

.word 版本可编辑. 查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.sodocs.net/doc/693423048.html,o=‘C2’ AND https://www.sodocs.net/doc/693423048.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.sodocs.net/doc/693423048.html,o=https://www.sodocs.net/doc/693423048.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.sodocs.net/doc/693423048.html,o=https://www.sodocs.net/doc/693423048.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。 17:查询选修了课程的学生人数。 18:计算选修了C1课程的学生平均成绩。

sql查询语句大全

SQL查询语句大全 《SQL语句的基本语法》 一.Select语句的完整语法为: Select[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [Where…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明: 用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。 1 FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或 由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。 例:下列SQL语句返回所有有定单的客户: Select orderID,Customer.customerID FROM orders Customers Where orders.CustomerID=Customers.CustomeersID 2 ALL、DISTINCT、DISTINCTROW、TOP谓词 (1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:Select ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 (3) DISTINCTROW 如果有重复的记录,只返回一个 (4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定货额最大的定单 Select TOP 5 PERCENT* FROM [ order Details] orDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。 例:返回FirstName字段取别名为NickName Select FirstName AS NickName ,LastName ,City

数据库中SQL查询语句习题含的答案

查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.sodocs.net/doc/693423048.html,o=‘C2’ AND https://www.sodocs.net/doc/693423048.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 在表S 中找学生,要求这个学生学了全部课程。换言之,在S 表中找学生,在C 中不存在一门课程,这个学生没有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.sodocs.net/doc/693423048.html,o=https://www.sodocs.net/doc/693423048.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.sodocs.net/doc/693423048.html,o=https://www.sodocs.net/doc/693423048.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。

50个经典SQL查询语句

--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ------------------------------------表结构-------------------------------------- --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score) --教师表tblTeacher(教师编号TeaId、姓名TeaName) --------------------------------------------------------------------------------- --1、查询“001”课程比“002”课程成绩高的所有学生的学号; Select StuId From tblStudent s1 Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')> (Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002') --2、查询平均成绩大于60分的同学的学号和平均成绩; Select StuId,Avg(Score) as AvgScore From tblScore Group By StuId Having Avg(Score)>60 --3、查询所有同学的学号、姓名、选课数、总成绩; Select StuId,StuName, SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId), SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId) From tblStudent s1 --4、查询姓“李”的老师的个数; Select Count(*) From tblTeacher Where TeaName like '李%' --5、查询没学过“叶平”老师课的同学的学号、姓名; Select StuId,StuName From tblStudent Where StuId Not In ( Select StuID From tblScore sc Inner Join tblCourse cu ON sc.CourseId=cu.CourseId Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId Where tc.TeaName='叶平' ) --6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; Select StuId,StuName From tblStudent st Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

相关主题