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