MSSQL 基本语法及实例操作语句
来源:asp之家 发布时间:2012-07-11 15:40:09
MS SQL基本语法及实例操作
一:建表并初始化
============================
create database mf2011 --创建数据库
use mf2011 --使用数据库
create table dept --创建“部门”表
( www.2cto.com
deptno int primary key, --部门编号(主键)
dname nvarchar(30), --部门名称
loc nvarchar(30) --部门所在的地点
)
-----
create table emp --创建“员工”表
(
empno int primary key, --员工编号(主键)
ename nvarchar(30), --员工的姓名
job nvarchar(30), --员工的工作类型
mgr int, --员工的上级
hiredate datetime, --员工的入职时间(受聘时间)
sal numeric(10,2), --员工的每月工资
comm numeric(10,2), --员工的年终奖金
deptno int foreign key references dept(deptno) --创建一个外键指向部门表(描述该员工属于哪个部门)
)
--------
insert into dept values (10,'accounting','new york')
insert into dept values (20,'reasarch','dallas')
insert into dept values (30,'sales','chicago')
insert into dept values (40,'operations','boston')
-------
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(7369,'michael','clerk',7902,'2010-1-12',675.23,300,20)
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(7499,'allen','salesman',7698,'2009-1-23',1675.23,322.50,30)
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(7521,'ward','salesman',7698,'2008-1-3',12675.99,399.50,30)
insert into emp (empno,ename,job,mgr,hiredate,comm,deptno) values
(7566,'jones','manager',7839,'2000-1-1',8675.99,20)
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(7654,'martin','salesman',7698,'2007-12-31',1275.99,999.00,30)
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values
(7782,'blake','manager',7839,'2007-12-20',1275.99,30)
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values
(7788,'sccot','analyst',7566,'2003-1-22',1275.99,10)
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values
(7781,'miller','opreator',7566,'2005-10-12',1275.99,40)
www.2cto.com
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values
(7744,'adamc','opreator',7566,'2006-10-30',1244.0,40)
insert into emp (empno,ename,job,hiredate,sal,deptno) values
(7839,'king','president','2000-1-1',100244.0,10)
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values
(1999,'lxliog','opreator',7566,'2006-10-30',1244.0,40)
-----
select * from dept
select * from emp
--主键:唯一,非空
--外键:只能指向主键,与指向的主键数据类型必须一致
二:练习
============================
1,查询emp表所有列
select * from emp --刘君正
2,查询指定列(例如:姓名,工资两列)
select ename,sal from emp --郑朝阳
3,取消重复行(从emp表中查询部门号)
select distinct(deptno) from emp --徐绍峰,郝艳芳,刘辉,马东勤
4,从emp表中查询名字为lxliog员工的薪水,工作,所作部门
select sal,job,deptno from emp where 'lxliog'=ename --侯耀文,谭雪玲,黎小龙
5,统计总共有都少个部门(两种方式:从emp或从dept)
select count(deptno) from dept --诺布才仁
select count(distinct(deptno)) as 部门总数 from emp --诺布才仁
use mf2011
select * from dept;
select * from emp;
--6,显示每个雇员的年工资
select isnull(sal,0)*12+isnull(comm,0) as 年薪 from emp --扎西多杰
7,如何显示工资高于3000的员工信息
select * from emp where sal>3000 --邓文文
www.2cto.com
8,如何查找1982.1.1后入职的员工
select * from emp where hiredate>'1982-1-1'
9,如何显示工资在2000到2500之间的员工情况
select * from emp where sal between 1244 and 100244
select * from emp where sal>=2000 and sal<=250000
10,如何显示首字母为S的员工姓名和工资(模糊查询)
select ename ,sal from emp where ename like 's%'
11,如何显示第三个字母为‘O'的所有员工的姓名和工资(模糊查询)
select ename 姓名,sal as 月薪 from emp where ename like '__R%';
12,如何显示empno为123,345,800...的员工情况(在where条件中使用in)
select * from emp where empno in(123,345,800,1999,7400,7744);
13,如何显示没有上级的雇员的情况(使用is null 的操作符)
select * from emp where mgr is null;
14,查询工资高于1000或是岗位为manager的雇员,
同时还要满足他们的姓名首字母为j(使用逻辑操作符)
select * from emp where (sal>1000 or job='manager')
and ename like 'j%';
16,如何按工资的从低到高的顺序显示雇员的信息
(使用order by字句asc, desc)
select * from emp order by sal desc;
17,如何按入职的先后顺序显示雇员的信息(使用order by字句asc, desc)
select * from emp order by hiredate desc;
18,按部门号升序而雇员的工资降序排列显示雇员信息
(使用order by字句asc,desc)
select * from emp order by deptno asc,sal desc;
19,统计每个人的年薪,并按从低到高的顺序排序(使用列的别名排序)
select isnull(sal,0)*12+isnull(comm,0) 年薪 from emp order by 年薪;
20,如何显示员工中最高工资和最低工资
select max(sal) as "max(sal)",min(sal) from emp;
21,如何显示最低工资的员工信息
select * from emp where sal = (select min(sal) from emp);
www.2cto.com
22,显示所有员工的平均工资和工资总和
select avg(sal) as "avg(sal)" , sum(sal) as "sum(sal)" from emp;
23,把高于平均工资的雇员的名字和他的工资显示出来
select ename,sal from emp where sal>(select avg(sal) from emp);
24,计算共有多少名员工
select count(ename) from emp;
25,如何显示每个部门的平均工资和最高工资
select avg(sal) as "avg",max(sal) as "max",deptno
from emp group by deptno
26,如何显示每个部门的高于总平均工资的平均工资和最高工资
select avg(sal) as "avg",max(sal) as "max",deptno
from emp where sal>(select avg(sal) from emp) group by deptno
27显示每个部门的每种岗位的平均工资和最低工资
select avg(sal),min(sal),deptno,job from emp group by deptno,job
order by deptno
28,显示平均工资低于2000的部门号和它的平均工资
(having往往和group by结合使用,可以对分组查询结果进行筛选)
select avg(sal),deptno from emp group by deptno having avg(sal)<2000
29,使用企业管理器来操作数据库的分离与附加
见操作步骤
30,使用企业管理器来操作数据库的备份与恢复操作
见操作步骤
31,使用查询分析器器来操作数据库的备份与恢复操作
(1)备份数据库
backup database mf2011 to disk='f:/lxliog.bak';
(2)删除数据库
drop database mf2011;
(3)恢复数据库
restore database mf2011 from disk='f:/lxliog.bak';
复杂查询(多表查询)
32,显示sales部门的位置和其员工的姓名
select d.loc,e.ename from emp e,dept d where d.dname='sales' and d.deptno=e.deptno
33,显示雇员名字,雇员工资及所在部门的名字(当字段有歧义的时候要用别名)
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno
www.2cto.com
34,显示部门号为10的部门名称,及该部门的员工名字和工资
select d.dname, e.ename, e.sal from emp e,dept d where d.deptno=10 and d.deptno=e.deptno
35,显示雇员名字,雇员工资及所在部门的名字,并按部门名称排序
select e.ename, e.sal, d.dname from emp e,dept d where e.deptno=d.deptno order by d.dname
自连接:在同一张表的连接查询
36,显示某个员工的上级领导的姓名(比如:smith)
(1)select mgr from emp where ename='adamc'
(2)select ename from emp where empno=(select mgr from emp where ename='adamc')
37,显示公司每个员工和他上级的名字
select worker.ename, boss.ename from emp worker, emp boss where worker.mgr=boss.empno
子查询:嵌入在其它sql语句中的select语句,也叫嵌套查询。
单行子查询:只返回一行数据的子查询语句。
38,显示与jones同一部门的所有员工
(1)select deptno from emp where ename='jones'
(2)select * from emp where deptno=(select deptno from emp where ename='jones')
多行子查询:返回多行数据的子查询。
39,查询和部门号为10的工作相同的雇员的名字、岗位、工资、部门号。(注意要使用in,不能用=)
(1)select distinct job from emp where deptno=20
(2)select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=20);
40,在上面查询结果的基础上排除20部门的员工
select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=20) and
deptno not in (20);
或select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=20) and deptno <>20;
猜你喜欢
- 随机背景--当你每次进入该页面时,从已指定的图片文件夹中,随机选取一个图片作为背景显示。这里介绍的方法是用ASP+CSS来实现的。 &nbs
- 加强ASP网站后台安全一些主要措施:----------------------------------------------------
- 英文原文:http://www.myinkblog.com/2009/03/21/4-principles-of-good-design-f
- JavaScript Dom编程 学习书籍选择JavaScript Dom编程学习,很多朋友无疑对如何选择入门的书籍,比较头疼。或许也是他们
- 米随随在国外某站看到的国际上十四个优秀网页设计审核站,他发现还有中国的哦~HOHO~1.荷兰 strangefruits &nb
- Access数据库,同时操作大量记录(9500条以上)时报错。错误提示:Microsoft JET Database Engine 错误 &
- myisam_max_[extra]_sort_file_size足够大delay_key_write减少io,提高写入性能bulk_ins
- 表示文字链接最清楚的方式是“蓝色文字+下划线”,这是在浏览器发展过程中形成的。这个问题大家都说过很多次了,我也曾经说过。然而,这样的规范却总
- 增强的toggleClass()1.toggleClass也可以和addClass一样,用空格分隔多个class名称了。.toggleCla
- 如何一行行地读取文件?这样就可以做到一行行地读出了:dim input(30) ' 定义一个数组,大小
- JS提供两个截取字符串的方法,分别是:slice()和substring()slice和substring都可以接受一个或两个参数,第1个参
- 说到网络产品,离不开的话题就是用户,就像传统行业的消费者。人是复杂的,网民的用户行为更加复杂,用户和用户是不一样的,或者说,每个用户都不一样
- 今天突然想起做一个当鼠标经过<a/>时,会发出声音Js代码如下: <script type="text
- ASP给图片加水印是需要组件的...常用的有aspjpeg软件和中国人自己开发的wsImage软件,可以上网搜索下载这两个软件,推荐使用咱们
- 数据库镜像方案有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开
- 比如:Set Connobject=nothing nothing如同英文单词字面意思,没有,没有那个,没有这个,没有东西 Set Conn
- 以前的Dreamweaver中是没有图片处理功能的,即使你要处理也只能使用CSS中的相关滤镜进行一些效
- 近日,朋友写一个关于成绩管理的系统,其中遇到一个小问题。如果按照SQLSERVER的ORDER 排序时,比如遇到两个100分,结果必然是名次
- 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
- asp函数代码 代码如下:<% Function RemoveHTML(str) Dim objRegExp, Match,strHT