--创建dept表 create table dept ( deptno int primary key, dname nvarchar(30), loc nvarchar(30) ) --创建emp表 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) --根据需要将deptno做成外键,外键定义关键字为foreign key,将其与表dept中的主键相关联 ) --针对外键,有以下几点: --1.外键只能指向主键, --2.外键和主键的数据类型要一致。 ---下面添加数据 insert into dept values(10,'accounting','new york') insert into dept values(20,'research','dallas') insert into dept values(30,'sales','chicago') insert into dept values(40,'operations','boston') insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7369,'smith','clerk',7902,'1980-12-17',800.00,20) insert into emp values(7499,'allen','salesman',7698,'1981-02-20',1600.00,300.00,30) insert into emp values(7521,'ward','salesman',7698,'1981-02-22',1250.00,500.00,30) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7566,'jenos','maneger',7839,'1981-04-02',2975,20) insert into emp values(7654,'martin','salesman',7698,'1981-09-28',1250.00,1400.00,30) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7698,'blaks','maneger',7839,'1981-05-01',2850,30) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7782,'clark','maneger',7839,'1981-06-09',2450,10) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7788,'scott','analyst',7566,'1981-04-19',3000,20) insert into emp(empno,ename,job,hiredate,sal,deptno) values(7839,'king','president','1981-11-17',5000,10) insert into emp values(7844,'turner','salesman',7698,'1981-09-08',1500,.00,30) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7876,'adams','clerk',7788,'1981-05-23',1100,20) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(7900,'james','clerk',7698,'1981-12-03',950,30) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(77902,'ford','analyst',7566,'1981-12-03',3000,20) insert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(77934,'miller','clerk',7782,'1981-01-23',1300,10) --查询所有列 select *form emp(表面) where 条件 注:在查询时尽量不要使用* --查询指定列 select 字段1,字段2 from 表名 where 条件 --查询simth的薪水,工作,所在部门 select sal,job,deptno from emp where ename='smith' --如何取消重复行(distinct只能消除完全一样的行) select distinct 字段 from 表名 where 条件 查询出所有的部门 select deptno from emp--将所有的部门全部查到,有重复的 select distinct deptno from emp --将所有的部门全部查到,不含重复的 --显示每个雇员的年工资 --年工资是列工资 的别名, select ename,sal*13 年工资 from emp --年工资是列工资+奖金 select ename,sal*13+comm*13 年工资 from emp --结果会出现很多null,因为comm有很多空值 如何处理空的问题? select ename 姓名,sal*13+isnull(comm*13) 年工资 from emp --使用where语句 --如何显示工资高于3000的人 select * from emp where sal>3000 --如何查找1982.1.1后入职的员工 select *from emp where hiredate>'1982-1-1' --如何显示工资在2000到2500的员工的情况 select *from emp where sal>2000 and sal<2500 或者 select *from emp where sal between 2000 and 2500 --用like模糊查询 --如何显示首字符为S的员工姓名和工资 select ename,sal from emp where ename like 's%' 注:%表示0到多个字符 --如何显示第三个字符为大写O的所有员工的姓名和工资 select ename,sal from emp where ename like '__o%' --如何显示empno为123,345,800...的雇员的情况。 select *from emp where empno=123 or empno=345 or empno=800 一般不使用这个方法,而是使用in这个关键字,效率更高 select *from emp where empno in(123,345,800) --使用isnull操作符 如何显示没有上级的雇员的情况 select *from emp where mgr is null --查询工资高于500或者岗位为manager的雇员,同时还要满足他们的姓名首写字母为j select *from emp where (sal>500 or job='manager') and ename like 'j%' 在上面一定要加上括号 --order by的使用 --如何按照工资从低到高的顺序显示雇员的信息 select *from emp order by sal asc 注:order by 默认是升序排列,关键字为asc,当想降序排列时就换成关键字desc --按照部门号升序而雇员的工资降序排列 select *from emp where order by deptno,sal desc 注:order by 可以按照不同的字段分别排序 --统计每个人的年薪,并按照从低到高的顺序排列 select ename, (sal+isnull(comm,0))*13 from emp order by (sal+isnull(comm,0))*13 上面的操作是可以的,但是要对(sal+isnull(comm,0))*13计算两次,所以可以使用别名,然后对别名排序即可 select ename,(sal+isnull(comm,0))*13 nianxin from emp order by nianxin |
|
来自: jtll521 > 《spl server学习》