您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> 数据库综合 >> 正文

MSSQL 基本语法及实例操作语句教程

作者:佚名    责任编辑:admin    更新时间:2022-06-22

这是一篇有关MSSQL 基本语法及实例操作语句的文章,有需要的朋友可以参考下。

MS SQL基本语法及实例操作

一:建表并初始化

============================

create database mf2011 --创建数据库

use mf2011 --使用数据库

create table dept --创建“部门”表

( www.jb51.net

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.jb51.net

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.jb51.net

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.jb51.net

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.jb51.net

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