SQL_server 的基本操作

时间:2022-11-08 06:49:12

1.---------------数据库基本操作

主键 : 1.不重复 2.不为NULL
外键

1.取消重复行(消除完全一样的行,保留一行)
select distinct cloumname1,cloumname2 from tablename

2.区间查询(两种是一个意思)
select * from emp where sal > 2000 and sal < 2500

select * from emp where sal between 2000 and 2500(效率会高一点)

3. 模糊查询
select * from emp where name like '%s%'
(查询name 的第三个是s的行记录,_匹配任意单个字符串)
select * from emp where name like '__s%'

4.批量查询(两种相同,一个是针对多种情况,一个是针对少数情况)
select * from emp where empno = '123' or empno = '234' or empno = '456'

select * from emp where empno in ('123','234','456')

5.顺序
select * from emp order by empno ASC(升序)

select * from emp order by empno DESC(降序)
select * from emp order by empno DESC,sal ASC

6.别名排序

select sal*12 as count_sal from emp order by count_sal

7.分组查询
select max(sal),deptno from emp group by deptno

having 可以对分组查询到的结果进行筛选
select max(sal) from emp group by deptno having sal < 2000

8.多表查询

select * from emp,dept,dept.deptno where dept.dname = 'sun' and emp.no = dept.no;
(取别名查询,加快sql的执行速度)
select * from emp e,dept d where d.dname = 'sun' and e.no = d.no;

9.内连接
select emp.name,dept.name from emp,dept where emp.no = dept.no

10.单行子查询和多行子查询
要知SQL里面能返回多条记录集,可以内连接的时候却是不能循环的。
所以,要在SQL里面使用循环,
单行子查询
select * from emp where job = (select job from emp where depton = '10')

多行子查询
select * from emp where job in (select job from emp where depton = '10')

把查询到的结果当做一个临时表
select emo.ename ,emp.sal tem.myavg from emp,(select avg(sal) myavg.deptno from emp group by deptno ) tem where emp.deptno = tem.deptno and emp.sal > tem.myavg

11.分页查询

前几个
select top 4 * from emp order by clownname

不在某个范围的前几个
select top 4 * from emp where empno not in (
select top 10 empno from emp order by clownname
)order by clownname

12.删除一个表的重复语句

select distinct *(选择一个字段,) into(到一个临时表中去) #temp from cat
delete from cat
insert into cat from select * from #temp
drop table #temp

13.外连接(左连接,右连接)
select w.ename,b.ename from emp w left t join emp b on w.mgr = b.empno
左外连接指:左边的表记录全部显示,没有匹配的记录,没有匹配的记录用NULL填

-----------2.约束
not null (非空) null 和 ''不一样
unique (唯一)--和主键不一样,都不允许重复,unique能放空(可是只能有一个空),主键不能放空
primary key (主键)主键只能有一个,不过可以有组合主键,就是字段联合做主键
复合主键
primary key (clownname1,clownname2)

foreign key (外键)定义主表和从表之间的关系,定于在从表上
check (范围) clownname int ckeck(clownname > 1000 and clownname <25000)
default(默认)

3.-----
备份数据库
backup database dataname(数据库名) to disk = 'f:/sp.bak'(备份到的路径)

删除数据库
drop database dataname

恢复数据库

restore database dataname(数据库名) from disk = 'f:/sp.bak'(备份到的路径)