oracle表的管理
表名和列的命名规则
必须以字母开头
长度不能超过30个字符
不能使用oracle的保留字
只能使用如下字符 A-Z,a-z,0-9,$,#等
---------------------------------------------------------------------------
oracle数据类型
字符型
char 定长 最大2000字符。
例子:char(10)‘小韩’ 前四个字符放‘小韩’,后添6个空格补全(中文一个字占2个字符)。
--char查询起来速度快
varchar2(20) 变长 最大4000字符。
例子:carchar2(10)‘小韩’ oracle分配四个字符这样可以节省空间。
clob(character large object) 字符型大对象 最大4G
数字类型
unmber 范围 -10的-38次方~10的38次方
number(5,2)
表示一个小数有5位有效数,2为小数。
范围-999.99~999.99
number(5)
表示一个五位整数
范围 -99999~99999
日期类型
date 包含年月日和时分秒
timestamp 这是oracle9i对date数据类型的扩展
图片
blob 二进制数据 课余i存放图片/声音 4G
(通常我们只会把图片和声音放在指定的文件夹内。数据库只存放路径。如果保密要求很严格。就存放在数据库内)
-----------------------------------------------------------------------------------------------------------------------------------------------------
建表
命令建表:
例:
---学生表
sql>create table student( --表名
xh number(4), --学号
xm varchar2(20), --姓名
sex char(2), --性别
birthday date , --出生日期
sal number (7,2) --奖学金
);
---班级表
sql>create table classes(
classId number(2),
cname varchar2(40)
);
小提示:
1、drop table 表名 ; 删除表
2、表空间就是存放表的空间
3、也可以图形操作建表,添加列中,有个“默认”,意思是在没有没有输入值的时候,默认给他一个值。也可以设置主键。
4、图形界面建立索引,用于提高查询速率。点击应用完成建表
修改表
添加一个字段
sql> alter table student add (classid number(2));
修改字段长度
sql> alter table student modify (xm vachar(30));
修改字段的类型/或是名字(不能有数据)(建议在空表的情况下修改,如果里面有数据会很容易出错)
sql> alter table student modify (xm char(30));
删除一个字段(在工作中最好不要使用,会扰乱程序的读取)
sql> alter table student drop column sal;
修改表的名字
sql>rename student to stu;
删除表
sql>drop table student;
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
添加数据
所有字段都插入
sql>insert into student values('A01','男','01-5月-05',10);
sql>alter session set nls_date_format = 'yyyy-mm-dd'
sql>insert into student values ('A002),'mike','男','1905005-06',10);
插入部分字段
sql>insert into student(xh,xm,sex) values('A003','JOHN','女');
插入空值
sql>insert into student (xh,xm,sex,birthday) values ('004','MARTIN','男“,null);
sql>select * from student where birthday is null;
sql>select * from student where birthday <span style="font-family: Arial, Helvetica, sans-serif;">is not null;</span>
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
修改数据
改一个字段
sql>>update student set sex='女' where xh='A001'; 把学号为A001的学生性别该为女
例:
把男性的工资降低为原来的一半
sql>update student set sal=sal/2 where sex='男';
修改多个字段
sql>update student set sex='男',birthday='1980-04-01' where xh ='A001'; 把学号为A001号的学生性别改为男,生日改为1980-04-01
修改含有null值的数据
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
删除数据
sql>delete from student;
删除所有记录,表结构还在,写日志可以恢复的,数度慢。
sql><span style="color:#ff0000;">savepoint</span> a;
删除之前设置回滚点及(保存点)
sql><span style="color:#ff0000;">rollback to</span> a;
删除数据之后,恢复删除的数据。
注:设置保存点的作用在于可以防止不可恢复性错误的出现。
---------------------------------------------------------------------------------
sql><span style="color:#ff0000;">drop table</span> student;
删除表的结构和数据
sql><span style="color:#ff0000;">delete from </span>student <span style="color:#ff0000;">where</span> xh='A001';
删除一条记录
sql><span style="color:#ff0000;">strucate table</span> student;
删除表中的所有记录,表的结构还在,不写日志,无法找回删除的记录,速度快
--------------------------------------------------------------------------------------------------
oracle 表基本查询
介绍
在我们讲解的过程中我们利用scott用户存在的几张表(emp,dept)为大家掩饰如何使用select语句,select语句在软件编程中非常的有哦那个,需要好好掌握。
小提示:清屏 clear
-----------
emp表字段的含义
---------
EMPNO 雇员号
ENAME 雇员名称
JOB 雇员职位
MGR 上级的编号
HIREDATE 入职时间
SAL 薪水
COMM 奖金
DEPTNO 部门
----------------------------------------------
dept 表 部门表
DEPTNO 部门编号
DNAME 部门名称
LOC 部门所在地
-----------------------------------------------------
小提示:
sql>insert into users (userid ,username,userpss) select * from user; 自我复制
sql><span style="color:#ff0000;">set timing en</span>; 这句的意思是将在下面显示语句的操作时间。
-----------------------------------------------------
查看表结构
sql>desc dept;
查询所有列
sql>select * from dept; (不推荐使用)
查询指定列
sql>select ename from emp;
如何取消重复行
sql>select distinct deptno ,job from emp;
-----------
select语句大小写不区分,但是''中的内容是区分的。
----------
查询SMITH的薪水、工作、所在部门?
----------
使用算数表达式
显示每个雇员的年工资
1.使用列的别名
select ename “姓名”,sal*12 as “年收入”from emp;
2.如何处理null值
使用nul函数来处理
3.如何连接字符串(||)
select ename || 'is a ' || job from emp;