--简单的查询功能,包括内建外键
--创建数据库
create database Testbase2
--创建部门表格dept
create table dept(
deptno int primary key,
dname nvarchar(30) ,
loc nvarchar(30)
)
--创建员工表
create table emp(
empno int primary key, --编号
ename nvarchar(10), --名字
job nvarchar(10), --工作
sal int , --薪水
comm int, --奖金
deptno int foreign key references dept(deptno)
--外键,对应于表格中的工作部门编号
)
--drop table emp
--针对外键,
--1,外键只能指向主键
--2,类型要一致
--插入数据
--插入数据时外键在表格中必须存在,可以避免无效数据
insert into dept values(20,'sell','beijing')
insert into dept values(30,'buy','shanghai')
insert into dept values(40,'qa','hangzhou')
insert into emp values(7844,'lili','shop',790,200,20)
insert into emp values(7855,'bibi','shop',500,300,30)
insert into emp values(7866,'haha','shop',2500,400,20)
insert into emp values(7877,'haik','buy',1500,500,40)
insert into emp values(7888,'toto',null,4000,600,30)
insert into emp values(7899,'john','buy',3000,700,40)
insert into emp values(7810,'mike','buy',1000,800,20)
select * from dept
select * from emp
--查询所有列
--select * from emo(表名) where 条件
--查询指定列
--select 字段1,字段2,from 表名 where 条件(varchar不区分大小写)
select sal,job,deptno from emp where ename='lili'
--取消重复行
--select distinct 字段 from 表名 where 条件
--问题:共计多少个部门编号
select distinct deptno from emp --消除结果完全相同的行
--使用算术表达式
--显示每个人的年 工资
select ename,sal*13 'year sal' from emp
select ename,sal*13+comm*13 'year sal' from emp
--where 子句,
--between ... and ...在两个数之间闭区间
select * from emp where sal between 2002 and 3000
--like操作符,模糊查询
--显示首字母为h的员工 %代表多个字符,_ 代表单个字符
select * from emp where ename like 'h%'
--第三个字母为h的员工
select * from emp where ename like '__h%'
--in关键字:
select * from emp where deptno in(20,30)
--isnull 关键字
select * from emp where job is null
--逻辑操作符号
select * from emp where (job='buy' or sal>2000) and ename like 'h%'
--order by 按顺序排,默认是升序,降序(desc)
select * from emp order by sal
--部门升序,工资降序
select * from emp order by deptno ,sal desc
--别名排序,按照年薪排序
select ename ,(sal + comm)*13 'year' from emp order by 'year'
--分页查询