T-SQL语句练习

实验报告

案例一:表如下图所示(数据库位置:E:\Y2期试验\SQL)

实验需求:

1.在products表中查询出厂日期晚于2011年4月的水果信息

语句:select * from products where 出厂日期>‘2011-04-30‘ and 种类=‘水果‘

结果:

2.在products表中分组查询所有水果、蔬菜、坚果的总成本

语句:select 种类,SUM(成本) as 总成本from products  group by 种类

结果:

解释:

select  后面接的是列名,sum(成本):每个组的成本总和

group by :代表在种类中,相同的部分成为组

3.在products表中查询所有水果的信息,并按照成本从高到低的顺序显示结果

语句:select * from products where 种类=‘水果‘  order by 成本 desc

结果:

4.在products表中查询成本在1—5元之间的蔬菜信息

方法一:

语句:select * from products  where 种类=‘蔬菜‘  and 成本 between 1  and  5

方法二:

结果:

5.将products表中所有水果的名称、种类和出厂日期信息插入到新表products_new中

语句:select 名称,种类,出厂日期 into products_new  from products where 种类=‘水果‘

结果:

案例二:表如下图所示

实验需求:

1、在products表和sales表中查询产品的名称、种类、成本、销售地点和销售价格。

方法一:

语句:select products.名称,products.种类,products.成本,sales.销售地点,sales.销售价格

From  products,sales

Where products.名称=sales.名称

结果:

语法注释:

第一行:查询 哪个表的哪个列名称

第二行:两个表

第三行:相同的属性

方法二:

语句:select a.名称,a.种类,a.成本,b.销售地点,b.销售价格

From  products as a  inner join sales as b  on  a.名称=b.名称

结果:

语法注释:

第一行:先定义表为a表的哪个列名称和b表的哪个列名称

第二行:两个表,并且对应第一行的映射名称(as代表修改后的属性)

inner join :内链接,表示两个表对比,on:后接属性(相同的部分显示)

第三行:相同属性

2、在products表和sales表中查询销往海南的产品名称、种类、成本和销售价格。

方法一:

语句:select products.名称,products.种类,products.成本,sales.销售价格

From products,sales

Where products.名称=sales.名称 and 销售地点=’海南’

结果:

方法二:

案例三:表如下图所示

实验需求:

1、查询王明的成绩?结果:王明 90

Select 姓名,成绩  from  student where 姓名=’王明’

2、给王明加2分?

Update student set 成绩=成绩+2  where 姓名=’王明’

3、查询备注不为空的学生?

Select  *  from  student  where 备注  is not null

4、查询成绩大于95分以上的学生?

Select  *  from  student  where 成绩>95

5、王明转学,把王明删掉?

Delete from student  where 姓名=‘王明’

6、来了一位新同学,名字叫于美丽?

Insert into student  values(20,’于美丽’,’110110110’,3,100,’勤奋好学’)

7、查询成绩大于95分,并且班级是2班的都有谁?

Select * from student  where 成绩>95 and 所在班级=2

8、查询成绩大于95分,并且班级是1、2班的都有谁?

Select * from student  where 成绩>95 and 所在班级 between 1  and  2

9、查询平均成绩?

Select avg(成绩) as 平均成绩  from student

10、使用truncate删除所有的数据

Truncate  table  student

实验案例四:表如下图所示

实验需求:

1、显示表中全部内容

select * from 员工信息表

2、显示工资大于5000员工的所有信息

select * from 员工信息表

where 工资>=5000

3、显示所有在1950到1988年之间出生员工的所有信息

select * from 员工信息表

where 出生日期>=‘1950‘ and 出生日期<=‘1988‘

4、查询出所有住在昌平的员工

select * from 员工信息表

where 家庭住址 like ‘%昌平%‘

5、所有销售员的工资涨幅1000

update 员工信息表

set 工资=工资+1000

where 职位=‘销售员‘

6、删除工资小于3000员工的记录

delete from 员工信息表

where 工资<=3000

7、所有经理的工资下调10%

update 员工信息表

set 工资=工资*0.9

where 职位 like ‘%经理‘

案例五:表如下图所示

1、查询年龄大于35,小于 50,并且职位是员工?

语句:select * from 员工信息表

where 年龄>35 and 年龄<50 and 职位=‘员工‘

2、查询员工的平均年龄?

语句:select AVG(年龄) as 平均年龄  from 员工信息表

3、查询各种职位的平均年龄,并且按照每种职位的平均年龄降序排序?

语句:select 职位,AVG(年龄) as 平均年龄  from 员工信息表

group by 职位

order by AVG(年龄) desc

4、查询年龄最大和最小的人是谁?

语句:select 员工姓名,年龄 from 员工信息表

where 年龄=(select MAX(年龄)

from 员工信息表)

5、查询每种职位有多少人?并且按每种职位的人数升序排序?

语句:select 职位,COUNT(员工id) as 人数

from 员工信息表

group by 职位

按降序:

6、查询年龄大于等于50岁和小于30岁的都有哪些人?

语句:select * from 员工信息表

where 年龄>=50 or 年龄<30

案例六:表如下图所示

实验需求:

1、两个表查询(学生表,学生表1)

查询学生的姓名,电话,和家庭住址:

语句:

select 学生表.姓名,学生表1.电话,学生表1.家庭住址

from 学生表,学生表1

where 学生表.学生id=学生表1.学生id

结果:

2、三个表的查询:(学生表,课程表,成绩表)

查询每个学生选择的课程,和成绩是多少?

语句:

select 学生表.姓名,课程表.课程名,成绩表.分数

from 学生表,课程表,成绩表

where 学生表.学生id=成绩表.学生id AND 成绩表.课程ID=课程表.课程ID

结果:

(2)、查询每个学生选择的总课程数,和分数

3、合并两个结果集

SELECT 姓名,学号,班级,国籍

FROM 二班

UNION

select 姓+‘ ‘+名,学号,班级,国籍

from 一班

order by 班级 desc,学号 asc

结果:

4、内联接(查找参加考试的学生的姓名和CNT成绩,电话)

select s.姓名,s.电话,c.CNT

FROM 学生基本信息表 AS S INNER JOIN 学生成绩表 AS C

ON S.姓名=C.姓名

结果:

5、左外连接(查找本班学生的姓名和CNT才成绩,电话)

select s.姓名,s.电话,c.CNT

FROM 学生基本信息表 AS S LEFT OUTER  JOIN 学生成绩表 AS C

ON S.姓名=C.姓名

结果:

6、右外连接(查找参加本次考试的学生的姓名和CNT才成绩,电话)

select s.姓名,s.电话,c.CNT

FROM 学生基本信息表 AS S RIGHT OUTER JOIN 学生成绩表 AS C

ON S.姓名=C.姓名

7、完全连接(查找所有学生的考试情况)

select s.姓名,s.电话,c.CNT

FROM 学生基本信息表 AS S FULL OUTER JOIN 学生成绩表 AS C

ON S.姓名=C.姓名

8、自连接(查找每个员工的上司姓名)

SELECT Y.员工姓名,s.员工姓名 AS 上司姓名

from 员工信息表 as y inner join 员工信息表 as s

on y.上司ID=S.员工ID

结果:

9、子查询(查找每个季度的生产数量,百分比)

语句:

结果:

10、在where子句中使用SELECT ,查找课程ID=1并且成绩〉80的学生

select 学生表.姓名

from 学生表

where 80<(select 分数 from 成绩表

where 学生表.学生ID=成绩表.学生ID AND 成绩表.课程ID=1)

结果:

11、交叉连接

SELECT T.教师姓名,c.课程名

from 教员基本信息表 AS t cross join 课程表 AS C

时间: 2024-12-29 23:50:49

T-SQL语句练习的相关文章

oracle sql语句运行效率

--当前执行sql语句 SELECT a.SID , a.SERIAL# , a.USERNAME , b.PARSE_CALLS , b.PARSING_SCHEMA_NAME , b.CPU_TIME / 1000000 , b.ELAPSED_TIME / 1000000 , b.DISK_READS , b.DIRECT_WRITES , b.BUFFER_GETS , a.event , b.sql_text , b.SQL_FULLTEXTFROM v$session a INNER

sql 语句之 case

case语句语法: --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 首先创建一张users表,其中包含id,name,sex三个字段,表内容如下: 复制代码 SQL> drop table users purge; drop table users p

用sql语句导出oracle中的存储过程和函数

用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' replace SELECT CASE WHEN LINE = 1 THEN 'CREATE OR REPLACE ' || TEXT WHEN LINE = MAX_LINE THEN TEXT || CHR(10 ) || '/' ELSE TEXT END FROM USER_SOURCE A LEF

JDBC系列:(3)使用PreparedStatement执行sql语句

执行sql语句的接口 接口 作用 Statement接口 用于执行静态的sql语句 PreparedStatement接口 用于执行预编译sql语句 CallableStatement接口 用于执行存储过程的sql语句(call xxx) PreparedStatement Vs Statement 序号 不同 描述 1 语法不同 PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2 效率不同 PreparedStatement可以使用sql缓存区

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

应用系统如何分析和获取SQL语句的执行代码

大部分开发人员都有这样一个需求,在程序连接数据库执行时,有时需要获取具体的执行语句,以便进行相关分析,这次我向大家介绍一下通用权限管理系统提供的SQL语句执行跟踪记录,直接先看看代码吧:(这个功能我也是在看底层代码时发现的) namespace DotNet.Utilities { /// <summary> /// SQLTrace /// 记录SQL执行 Global 中设置 BaseSystemInfo.LogSQL=true 可以开启跟踪记录 /// /// /// 修改纪录 ///

SQL 语句日期用法及函数

SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date

标准sql语句,学习

标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 ----------------------------------------------------------------------------- 数据库软件清单 A商业数据库软件如下 1.微软的MS SQL Server和Access 2.IBM的DB2,informax 3.Sybase的大型数据库ASE,中小型数据库ASA 4.甲骨文公司的Oracle8.0,oracle9i系列 5.Borla

实用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.说明:创建

oracle sql语句取得本周本月本年的数据

[sql] --国内从周一到周日 国外是周日到周六  select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期-- [sql] --取本周时间内的数据  select * from table  where DTIME >=trunc(next_day(sysdate-8,1)+1) and DTIME<=trunc(next_day(sysdate-8,1)+7)+1 ;     select * from table  whe