Oracle 学习笔记2

来源:互联网 发布:淘宝开店装修流程 编辑:程序博客网 时间:2024/05/22 15:42
       四    oracle 表的管理
1 表名列名的命名规则:
a:必须以字母开头;
b:长度不能超过30个字符:
c:不能使用oracle的保留字:
d:只能使用如下字符A-Z,a-z,0-9,$,#等。
2 数据类型
 a:  字符型  char
  char  定长 最大2000字符
SQL>create table users(userName char(2000));
 b:  varchar2(20) 变长  最大4000字符
注意:char 和 varchar2的不同,char浪费空间,速度快,varchar2节省空间,速度慢。
 c: clob(character  large object)字符型大对象,最大4G
2 数字型
number 范围 -(10的-38次方)~ (10的38次方),既可以表示整数,也可以表示小数,number(5,2)表示一个小数有五个有效数字,其中后两位是小数。
3 日期类
date 年月日时分秒
timestamp 这是oracle9i对date数据类型的扩展(精确度高)
4 图片
blob 二进制数据 存图片/声音最大4G
eg: 建立一个简单的学生表
SQL>create table student (hh number(4),xm varchar2(20),sex char(2),brithday date,sal number(7,3));
对建立的学生表进行重新修改
a:给这个表添加一个班级编号:
SQL>alter table student add (classId number(2));
b:修改xm字段的大小  xm varchar2(20)改成 xm varchar2(30)
SQL>alter table student modify (xm varchar2(30));
c:修改xm的类型:
SQL>alter table student modify (xm char(30));
d:删除一个字段
SQL>alter table student drop column sal;
e:对表名student进行重新修改:
SQL>rename student to stu;
f:向表中插入信息:
SQL>insert into student values ('a001','张三',‘男’,‘01-5月-05’,10);
oracle默认的时期格式‘DD-MON-YY’
如果想修改日期,可以通过这个语句实现:
SQL>alter session set nls_date_format='yyyy_mm_dd' ;

                   五   oracle表的基本查询
SQL>clear;<清屏>
emp 和dept是最常见的两张表,如何查询emp和dept表;
SQL>select * from emp;
SQL>select * from dept;
我们可以通过desc 这个命令查看这两张表的结构;
SQL>desc dept;
SQL>desc emp;
如何查询一个表的指定列,以emp表为例
SQL>select ename,sal,job,deptno from emp;
如何设置显示查询emp的时间:
SQL>set timing on;
如何查询一个表总共有多少条记录:
SQL>select count(*)from users;
如何实现把一张表不停地复制:
SQL>insert into users(userid,username, userpss) select * from users;
注意(select *)这个不要轻易使用,尽管可以节省时间,但是不要总是查询。
如何删除一个表中重复的信息:
SQL>select distinct deptno,job from emp ;
在这儿distinct是关键词;
如何查询一个人在这个表中的具体信息:(SMITH为例)
SQL>select deptno,job from emp where ename='SMITH';
注意:在这儿姓名的大小写是有区别的。
如何计算emp中每一个人得年薪:
SQL>select sal*12 from emp;
在计算工资+奖金时,如何用nvl函数处理null值:
SQL>select sal*13+nvl(comm,0)*13 "年工资",ename,comm from emp;
如何查询工资>3000的人的名字:
SQL>select ename,sal from emp where sal>3000;
如何查询雇佣在1982-1-1日后的人的名字:
SQL>select ename,hiredate from emp where hiredate>'1-1月-1982';
如何查询显示工资在2000-2500之间的人员:
SQL>select ename,sal from emp where sal>=2000 and sal <=2500;
注意,如果在一个语句中有多个条件中间用‘and’连接;

                       六  oracle表的基本查询(2)
在查询语句中like的应用:
   %:表示任意0到多个字符
   _:表示任意单个字符
如何查询首字母为S的人名:
SQL>select ename,sal from emp where ename like 'S%';
如何查询第三个字符为O的人名:
SQL>select ename ,sal from emp where ename like '__O%';
在查询有多个并列条件时,该如何用in:
SQL>select * from emp where empno in (123,234,456);
如何查询那个员工的上级雇员为空;
SQL>select * from emp where mgr in null;
逻辑操作符号的使用:
查询多个条件,首字母为‘J’,工作岗位为‘MANAGER’并且工资>500的员工:
SQL>select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
order by 语句的应用:
如何让员工的工资从低到高的排序显示:
SQL>select * from emp order  by sal ;
相反,工资从高到底如何排序:
SQL>select * from emp sal order by sal desc
如果按部门号升序,工资降序如何显示:
SQL>select * from emp order by deptno ,sal desc;