sql server开发工具

查询分析器的使用

SQL语言包含四个部分:

1、数据定义语言(DDL) : 例如 create, drop, alter等语句

2、数据操作语言(DML) : 例如 insert,delete, update等语句

3、数据查询语言(DQL) :例如 select

4、数据控制语言(DCL):例如grant, revoke, commit, rollback

----------------------------------------------------------------------

 

 

 1 --建表
 2 create table hero
 3 (heroId int, 
 4 heroName varchar(50),
 5 heroNickname varchar(50),
 6 sex char(2),
 7 sal int
 8 )
 9 
10 -- 
11 insert into hero values(1, '宋江', '及时雨', '', 100000)
12 insert into hero values(2, '卢俊义', '转地鼠', '', 10410)
13 insert into hero values(3, '吴用', '智多星', '', 50)
14 insert into hero values(4, '公孙胜', '入云龙', '', 20)
15 --查询
16 select * from hero
17 select * from hero where sal < 100
18 
19 --把工资低于100提高10% (update)
20 -- update 表名 set 字段名1 = ?,字段名2 = ? where 条件
21 update hero set sal = sal * 1.1 where sal < 100
22 -- 请删除性别为女的
23 delete from hero where sex = ''
24 ---表名规范案例
25 ---1表名以字母和_开头 
26 ---2不能大于128
27 ---3不能使用保留字
28 
29 -----unicode编码:用两个字节表示一个字符(可以使英文字母s,可以使汉字)-->对汉字支持比较ok
30 -----非unicode编码: 用一个字节表示一个字母,用两个字节表示一个汉字
31 
32 ----char和varchar
33 ---如果一个字段的长度是确定的,则使用char, 比如存放学号 6

 

字符类型:

 

一般带有汉字的段用nvarchar,全英或者符号的用varchar,因为nvarchar为unicode字符集,该类型的字段无论是单个字母还是单个汉字都占两个字节,而varchar 字母占一个字节,汉字占两个。nvarchar处理汉字或其他unicode字符集的速度要比varchar字段快.

 

数字型

1.bit 范围0或1 

2.int 

3.bigint

4.float存放小数,不推荐使用

5.numeric 小数,存放小数最好使用 numeric(20, 2) 总位数是20位,小数位数2位

 

日期类型:

datetime(表示日期) datestamp(时间戳)

 

-----------------------------

--建表
create table hero
(heroId int,
heroName varchar(50),
heroNickname varchar(50),
sex char(2),
sal int
)

--
insert into hero values(1, '宋江', '及时雨', '男', 100000)
insert into hero values(2, '卢俊义', '转地鼠', '男', 10410)
insert into hero values(3, '吴用', '智多星', '男', 50)
insert into hero values(4, '公孙胜', '入云龙', '男', 20)
--查询
select * from hero
select * from hero where sal < 100

--把工资低于100提高10% (update)
-- update 表名 set 字段名1 = ?,字段名2 = ? where 条件
update hero set sal = sal * 1.1 where sal < 100
-- 请删除性别为女的
delete from hero where sex = '男'
---表名规范案例
---1表名以字母和_开头
---2不能大于128
---3不能使用保留字

-----unicode编码:用两个字节表示一个字符(可以使英文字母s,可以使汉字)-->对汉字支持比较ok
-----非unicode编码: 用一个字节表示一个字母,用两个字节表示一个汉字

----char和varchar
---如果一个字段的长度是确定的,则使用char, 比如存放学号 6

create table spname
(bir datetime)
--sql server为我们提供了一个专门的时间函数
--getdate()
insert into spname values(getdate())
select * from spname
--主键不能为空
create table clerk
(clerId int primary key,
cleName nvarchar(50),
age int
)

insert into clerk values(1, '贾宝玉', 19)
insert into clerk values(2, '贾政', 18)
--插入部分字段,需要在表名后面指定字段列表
insert into clerk (clerId, cleName) values (3, '林黛玉')
--把贾政的年龄设为38
update clerk set age = 38 where cleName = '贾政'
--把2号人物,名字改为 薛蟠,年龄改为40
update clerk set cleName = '薛蟠', age = 40 where clerId = 2
--主键可以修改,不能重复
update clerk set clerId = 4 where cleName = '薛蟠'
--把age为null的名字修改为 薛宝钗
update clerk set cleName = '薛宝钗' where age is null

insert into clerk values(5, '贾母', 70)
insert into clerk values(6, '焦大', 75)

--删除 年龄 > 70并且<=75 或者age是null
delete from clerk where (age > 70 and age <= 75) or age is null

--查询
--1 查询所有列 select * from 表名 where 条件
--2 查询指定列 select 字段1, 字段2 from 表名where 条件
--3 如何取消重复行 (distinct)

select distinct 字段1 from 表名 where 条件
--4 使用算数表达式
----计算每个雇员的年工资(包括基本工资+奖金)
----isnull(comm,0) 如果comm是null返回0,否则返回该数, 年工资作为列别名
select ename, sal * 13 + isnull(comm, 0) * 13 年工资 from emp
--5 如何查询入职时间是1982年1月1日之后的
select * from emp where hiredate > '1982-1-1'
--6 工资在2000到2500之间
select * from emp where sal > 2000 and sal < 2500
select * from emp where sal between 2000 and 2500
--7 如何使用like(模糊查询) %表示0到多个字符 _表示1个字符
----查询首字母为s的姓名和工资
select ename, sal from emp where ename = 's%'
----查询第三个字母是o的姓名和工资
select ename, sal from emp where ename = '__o%'

 

如何按照工资从低到高顺序排序

order by 默认升序

order by sal desc

 

--计算每个雇员的年工资(包括基本工资+奖金)并按照年工资从低到高排序

--可使用别名排

select ename, sal * 13 + isnull(comm, 0) * 13 年工资 from emp order by 年工资

--如何查询empno为123,456,800的雇员的信息
--使用 in 关键字效率更高
select * from emp where empno in (123, 456, 800)
--显示最低工资和该雇员的名字
select ename, sal from emp where sal = (select min(sal) from emp)
--显示平均工资和总工资
select avg(sal) 平均工资, sum(sal) 总工资 from emp
--计算有多少员工
select count(*) from emp
--请显示高于平均工资的员工信息
select ename, sal from emp where sal > (select avg(sal) from emp)
--如何显示每个部门的平均工资和最高工资
select avg(sal), max(sal), deptno from emp group by deptno
--显示每个部门每种岗位的平均工资和最低工资
select avg(sal), min(sal),deptno, job from emp group by deptno, job order by deptno
--显示平均工资低于2000的部门号和它的平均工资
--having往往和group by结合使用,可以对分组查询结果进行筛选, 并按照从低到高排序
select avg(sal), deptno from emp group by deptno having avg(sal) < 2000
order by avg(sal) asc

 

--如何查询empno为123,456,800的雇员的信息
--使用 in 关键字效率更高
select * from emp where empno in (123, 456, 800)
--显示最低工资和该雇员的名字
select ename, sal from emp where sal = (select min(sal) from emp)
--显示平均工资和总工资
select avg(sal) 平均工资, sum(sal) 总工资 from emp
--计算有多少员工
select count(*) from emp
--请显示高于平均工资的员工信息
select ename, sal from emp where sal > (select avg(sal) from emp)
--如何显示每个部门的平均工资和最高工资
select avg(sal), max(sal), deptno from emp group by deptno
--显示每个部门每种岗位的平均工资和最低工资
select avg(sal), min(sal),deptno, job from emp group by deptno, job order by deptno
--显示平均工资低于2000的部门号和它的平均工资
--having往往和group by结合使用,可以对分组查询结果进行筛选, 并按照从低到高排序
select avg(sal), deptno from emp group by deptno having avg(sal) < 2000
order by avg(sal) asc

--多表查询
---显示雇员名,雇员工资及所在部门的名字,部门号
---如果两种表都有相同名字的字段,则需要带表名
select ename, sal, loc, e.deptno
from emp e, dept d
where e.deptno = d.deptno
---如何显示部门号为10的部门名,员工名和工资
select d.dname, e.ename, e.sal from emp e, dept d
where d.deptno = 10 and e.deptno = d.deptno
--自连接(同一张表的连接查询)
---?显示公司每个员工的名字和上级名字
----分析把emp看做两个表,分别是worker 和 boss
select worker.ename 雇员, boss.ename 老板 from emp worker, emp boss
where worker.mgr = boss.empno
--子查询
---如何显示与smith同一部门的员工
select * from emp where deptno =
(select deptno from emp where empname = 'smith')
---如何显示高于部门平均工资的员工名字,薪水,还有其他部门的平均工资
--1首先知道各部门的平均工资
select avg(sal), depno from emp group by depno
--2把上述查询结果,当一个临时表对待
select emp.ename, emp.sal, temp.myavg, emp.deptno from emp,
(select avg(sal), depno from emp group by depno) temp
where emp.depno = temp.depno and emp.sal > temp.myavg

 

--备份
backup database 你要备份的数据库 to disk = '路径名'
backup database test to disk='e:/aaa.bak'
use master
--恢复数据库
drop database test
restore database 数据库名 from disk = '路径名'
restore database test from disk = 'e:/aaa.bak'

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

1、给表增加一列属性: alter table 表名 add 列名 类型 default(' ')

2、给表修改一列属性: alter table 表名 alter column 列名 类型

3、给表修改一列名: exec sp_rename '表名.列名', ‘新列名’

2、给表删除一列属性: 

posted @ 2017-02-02 12:11  zhaop  阅读(610)  评论(0编辑  收藏  举报