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