SQL server语句练习

相关表:
<span style="white-space:pre">create table DEPT
(
<span style="white-space:pre">	</span>deptno int not null primary key,
<span style="white-space:pre">	</span>dname varchar(14)  null,
<span style="white-space:pre">	</span>loc varchar(13) null
)

create table EMP
(
<span style="white-space:pre">	</span>empno int not null primary key,
<span style="white-space:pre">	</span>ename varchar(10) null,
<span style="white-space:pre">	</span>job varchar(9) null,
<span style="white-space:pre">	</span>mgr int null,
<span style="white-space:pre">	</span>hiredate date null,
<span style="white-space:pre">	</span>sal float null,
<span style="white-space:pre">	</span>comm float null,
<span style="white-space:pre">	</span>deptno int null foreign key references DEPT(deptno),
)
create table SALGRADE
(
<span style="white-space:pre">	</span>grade int null,
<span style="white-space:pre">	</span>losal int null,
<span style="white-space:pre">	</span>hisal int null,
)</span>
查询部分:
--查询雇员姓名的最后三个字母
SELECT SUBSTRING(ename,LEN(ename)-3,3) FROM dbo.EMP

--查询10部门雇员进入公司的星期数
SELECT ename,DATEDIFF(wk,hiredate,GETDATE())AS 进入星期数 FROM dbo.EMP WHERE deptno=10

--1 查询部门30中的全部员工
SELECT * FROM dbo.EMP WHERE deptno=30

--2 列出全部办事员(CLERK)的姓名,编号和部门编号
SELECT ename , empno , deptno FROM emp WHERE job='clerk'

--3 找出佣金高于薪金的员工
SELECT * FROM dbo.EMP WHERE comm>sal

--求出每一个雇员的年薪

SELECT ename,sal*12+ISNULL(comm,0)*12 AS 年薪 FROM dbo.EMP

--4 找出佣金高于薪金的60%的员工
SELECT * FROM dbo.EMP WHERE comm>sal*0.6

--5 找出部门10中全部经理(MANAGER)和部门20中全部办事员(CLERK)的具体资料
SELECT * FROM dbo.EMP WHERE deptno=10 AND job='manager' OR deptno=20 and  job='CLERK'

--6
--  既不是经理又不是办事员但薪金大于或等于2000的全部员工的具体资料
SELECT * FROM dbo.EMP WHERE job!='manager' AND job!='clerk' AND sal>=2000

--7 找出收取佣金的员工的不同工作
SELECT DISTINCT job FROM dbo.EMP WHERE comm IS NOT NULL

--8 找出不收取佣金或收取佣金低于100的员工
SELECT * FROM dbo.EMP WHERE comm IS NULL OR comm<100

--9 找出各月倒数第3天受雇的全部员工
SELECT * FROM dbo.EMP WHERE MONTH(DATEADD(DAY,3,hiredate))=MONTH(DATEADD(MONTH,1,hiredate))

--10 找出早于12年前受雇的员工
SELECT * FROM dbo.EMP WHERE DATEDIFF(YEAR,hiredate,GETDATE())>12

--11 以首字母大写的方式显示全部员工的姓名
select upper(substring(ename,1,1))+lower(substring(ename,2,len(ename)-1)) from emp;

--12 显示正好为5个字符的员工的姓名
SELECT ename FROM emp WHERE LEN(ename)=5

--13 显示不带有"R"的员工的姓名
SELECT ename FROM dbo.EMP WHERE ename NOT LIKE '%R%'

--14 显示全部员工的姓名的前三个字符
SELECT SUBSTRING(ename,1,3) FROM dbo.EMP

--15 显示全部员工的姓名,用"a"取代全部的"A"
SELECT REPLACE(ename,'a','A') FROM dbo.EMP

--16 显示满10年服务年限的员工的姓名和受雇日期
SELECT ename,hiredate  FROM dbo.EMP WHERE DATEDIFF(year,hiredate,GETDATE())>10

--17 显示员工具体信息,按姓名排序
SELECT * FROM dbo.EMP ORDER BY ename

--18 显示员工的姓名和受雇日期,依据其服务年限,将最老的员工排在前面
SELECT ename,hiredate FROM dbo.EMP ORDER BY DATEDIFF(year,hiredate,GETDATE()) DESC

--19 显示全部员工的姓名,工作和薪金,按工作的降序排序,若工作同样则薪金排序
SELECT ename,job ,sal+ISNULL(comm,0)AS 薪金 FROM dbo.EMP order BY job ,sal+ISNULL(comm,0)

--20 显示全部员工的姓名,增加公司的年份和月份,按受雇日期所在月排序,若月份同样则将
--最早年份的员工排在前面
SELECT ename,YEAR(hiredate),MONTH(hiredate) FROM dbo.EMP ORDER BY MONTH(hiredate),YEAR(hiredate) 

--21 显示在一个月为30天的情况,全部员工的日薪金,忽略余数
SELECT ROUND((sal+ISNULL(comm,0))/30,0) FROM dbo.EMP

--22 找出在(不论什么年份的)2月受雇的全部员工
SELECT * FROM dbo.EMP WHERE MONTH(hiredate)=2

--23 对于每一个员工,显示其增加公司的天数
SELECT ename ,DATEDIFF(DAY,hiredate,GETDATE())AS 入职天数 FROM dbo.EMP

--24 显示姓名字段的不论什么位置包括"A"的全部员工的姓名
SELECT ename FROM dbo.EMP WHERE ename LIKE '%A%'

--25 以年月日的方式显示全部员工的服务年限(大概)
SELECT STR(ROUND(DATEDIFF(day,hiredate,GETDATE())/365,0))+'年'+
str(ROUND(DATEDIFF(day,hiredate,GETDATE())%365/30+1,0))+'月'+
STR(DATEDIFF(day,hiredate,GETDATE())%365%30)+'日' AS 服务年限 FROM  dbo.EMP
时间: 2024-10-07 14:53:49

SQL server语句练习的相关文章

Sql Server 语句随笔

例1 对于两个或更多的销售员的销售点,计算其中所有销售员的总销售目标值和销售员金额. select city,sum(QUOTA),sum(SALESREPS.SALES) from OFFICE,SALESREPS group by CITY having count(*)>=2 例2 (1) 单行insert语句 单行insert语句用于向一关系表中添加一行新数据.其使用格式如下: insert into <表名> (列名列表) values (列值列表) (2) 多行insert语

Sql Server语句大全

T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 set @id = 2 --将cid为3的cname值赋给变量@cn declare @cn varchar(10) --为变量赋值:查询赋值 select @cn = cname from classes where Cid = @id --输出[print:可直接输出'字符串'或变量]变量@cn if{} ===>if beg

Oracle、Mysql、Sql Server语句的区别

1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果check_expression值为空,则返回replacement_value,否则直接返回check_expression的值 2).Mysql IFNULL(expr1.expr2) 解释:如果值expr1值为空,则返回expr2,否则直接返回expr1的值 3).Oracle NVL(expr1

基本的SQL Server 语句,包含 增、删、改、查 程序员必会

这是我以前学习时, 整理的一套基础SQL Server增.删.改.查 等语句 ,初学者可以从上往下学完. 也方便自己忘记时翻看! create database SQLschool go --批 go use SQLschool go -- --------------------------删除表----------------------------- select * from goods --全部删除 delete from goods --有条件的批量删除 delete from go

经典实用SQL Server语句大全总结(一)

简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack4.说明:创建新表crea

SQL Server语句查询指定位置(经纬度)范围内信息

指定一个经纬度,给定一个范围值,查出在经纬度周围这个范围内距离最近的5组数据. 经度:116.312785纬度:39.929875范围:1度(111公里)LONG为数据表经度字段 LAT为数据表纬度字段 CENTER为数据表该语句在SQL Server下测试通过,其他数据库可能需要修改 SELECT TOP 5 *, ACOS( SIN( (39.929875 * PI()) / 180 ) * SIN( (LAT * PI()) / 180 ) COS( (39.929875 * PI())

SQL server 语句新建用户、对用户授权、删除用户实例

Grant select on tb to db_user --给db_user用户授权 tb表 查询权限 一.命令操作 USE mydb GO --1. 新建测试用户 --1.1 添加登录用户和密码 EXEC sp_addlogin N'tony','123' --1.2 使其成为当前数据库的合法用户 EXEC sp_grantdbaccess N'tony' --2.设置操作授权 --2.1 授予对自己数据库的所有权限 EXEC sp_addrolemember N'db_owner', N

SQL server语句测试

设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一~表(四)所示,数据如表1-2的表(一)~表(四)所示.用SQL语句创建四个表并完成相关题目. create database ceshigo use ceshigocreate table Student(Sno Char(3)primary key,Sname Char(8),Ssex Char(2),Sbirthday date

sql server 语句使用规范

Sql语句使用规范 规范内容以及注意事项: 1.查询时候使用top 10 /top 100 和where 字句控制每次执行SQL 返回的结果集合,在满足业务需求的同时返回最小的结果. 2.使用数据投影的方式,选择前端程序需要的数据列,不允许使用select * from dbo.TableA的方式访问数据库中的列. 如:select userid , username , sex from dbo.TableA 3.尽量使用存储过程访问数据库中的数据.减少直接使用SQL 脚本访问数据库资源. 4

vc++,MFC 中,用ado执行sql server语句时,并且对返回值真假判断的例子,即bool类型

MFC VC++ 中的对数据库中的表进行查询,判断SQL语句是否执行成功 若存在返回bool值true(1),若失败返回bool值false(0). 简单bool类型代码如下: CString sql,Result; sql.Format(_T("select * from [dbo].[%s]"), Name);// Name是所要查找数据库中表的名字 BOOL bool_temp = TheAdoData.ExecuteSQL((_bstr_t)sql);//判断上一条SQL语句是