日期:2014-05-16  浏览次数:20528 次

sql server2000的一部分操作的笔记(里面有些和oracle数据库的比较)
--这样的情况下用char
--存放学号都是六位,查询起来很快。。。如果是varchar则要一个一个的比
--如果一个字段的长度是确定的则使用char


create table hgname
(
test float(3)
)

insert into hgname values(2)

select * from hgname

--如果比bigint还要大,
drop table hgname

数据类型
  float :
    float(5) 表示保留小数点后5位

  numeric:
    numeric(20,2)--表示一共可以是20位,保留小数点后两位

  --   如果超出会自动截去,推荐使用numeric
 

--日期类型:
  datetime :
create table hgname
(
     data datetime
)
---sql server  为我们专门提供了一个时间函数
--getdate()//得到当前的系统时间

insert into hgname values(getdate())
select * from hgname

--timestamp (时间戳)

--可以存放图片 image类型 ,但是用的很少,一般用路径保存图片,在软件公司往往使用图片服务器和图床技术
--  在图片有安全要求时可以考虑放入数据库 而且图片不要太大

--存放视频 binary类型 但是我们往往 ,将视频文件保存在文件服务器上,数据库只保存路径

--在命令行中敲ping www.taobao.com.cn得到淘宝网的IP地址
--ping -t www.taobao.com.cn


--建表(公司管理系统)
--  职员表
-- 主键(primary key)不能重复且不能为空
create table clerk
(
cleId int primary key,
cleName nvarchar(50),
age int
)

insert into clerk values(1,'贾宝玉',18)
insert into clerk values(2,'贾政',20)


--插入部分字段
insert into clerk (cleId ,cleName) values(3,'林黛玉')

select * from clerk

--改一个字段
update clerk set age = 38 where cleName = '贾政'


--把2豪人物的名字改为薛 蟠 age 改为40
update clerk set cleName ='薛蟠' ,age = 40 where cleId =2


--主键能修改吗? 2改为4

update clerk set cleId = 4 where cleName ='薛蟠'

--可以改,但是不能改为重复的主键


--修改含有NUll的字段
--把年龄为null的人的名字改为‘薛宝钗’

update clerk set cleName= '薛宝钗' where age = null--不行

select * from clerk
--应该为
update clerk set cleName= '薛宝钗' where age is not

--删除全部数据
delete from 表名
--删除指定数据
delete from 表名 where 字段名= '值'  and 字段名 ='值'

insert into clerk values(5,'贾母',70)

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



--查询

--建两张表emp表和dept表
--因为oracle有,就不键了
create table dept
(
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) --因为的deptno根据需要要做成外键
)

--外键,请注意:
--!。外键只能指向主键
--2.外键和被指向的主键的类型要一致

select * from emp;

select * from dept;

select sal ,job,deptno from emp where ename ='SMITH';
--sql server是不区分大小写的

--取消重复行   distinct
select distinct sal from emp where ename = 'SMITH';
--统计有多少个部门编号
select distinct deptno from emp;

--使用算数表达式
--显示每个雇员的年工资
select ename ,sal*12+nvl(comm ,0) 年工资 from emp;vv
--sql server 2000中判断null的用 isnull(comm,0)
--显示工资高于3000的员工
select * from emp where sal >3000;
select * from emp where hiredate >'1982-1-1';

---模糊查询

select ename,sal from emp where ename like 'S%';
--% 代表0到多个字符
select ename,sal from emp where ename like '__A';
---_代表一个字符

---where 中使用in  批量查询
select * from emp where empno in(123,345,800);

-- is null操作符
--显示没有上级的人
select * from emp where mgr is null;


select * from emp where (sal>500 or job ='MANAGER') and ename like 'J%';

--安工资从低到高显示
select * from emp order by sal asc ;
--order by 默认是升序
--order by desc 表示降序

--按照入职的先后顺序排
s