表空间是在数据库中开辟的一段空间,是数据库的逻辑存储空间
表空间与数据文件表空间
表空间的分类:永久性表空间和临时表空间和undo表空间
查看用户表空间:dba_tablespaces、user_tablespaces数据字典
dba_users、user_users数据字典
desc dba_tablespaces;
select tablespaces_name from dba_tablespaces;
desc user_tablespaces;
select tablespaces_name from user_tablespaces;
创建表空间:永久表空间:create tablespace test1_tablespace
datafile 'testfile.dbf' size 10m;
临时表空间:create temporary tablespace temptest1_tablespace
tempfile 'tempfile.dbf' size 10m;
desc dba_data_files
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TABLESPACE';
ALTER TABLESPACE tablespace_name ONLINE|OFFLINE;
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
修改表空间的状态:设置只读或可读写状态
ALTER TABLESPACE tablespace_name READ ONLY|READ WRITE;
添加数据文件:alter tablespace test1_tablespace add datafile 'test2_file.dbf' size 10m;
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
删除数据文件:alter tablespace test1_tablespace drop datafile 'test2_file.dbf';
删除表空间:drop tablespace test1_tablespace including contents;
=======================================================================================
表:
二维结构
约定:每一列数据必须具有相同的数据类型
列名唯一
每一行数据的唯一性
字符型、数值型、日期型、其他类型
char类型定长,有可能浪费空间;nvarchar2和varchar2都可以表示可变长度的字符,其中nvarchar2用于存储Unicode格式的数据,更适合存储中文数据。
number(p,s)类型,p是有效位数,保留s位小数,float(n)存储二进制数
date类型:日期类型
BLOB类型,CLOB类型
创建表:
create table userinfo
( id number(6,0),
username varchar2(20),
userpwd varchar2(20),
email varchar2(20),
regdate date );
desc userinfo
添加字段:ALTER TABLE table_name ADD column_name datatype;
更改字段的数据类型 :ALTER TABLE table_name MODIFY column_name datatype;
删除字段:ALTER TABLE table_name DROP COLUMN column_name;
修改字段名:ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
修改表名:RENAME table_name TO new_table_name;
删除表中的全部数据:TRUNCATE TABLE table_name;也叫截断表,并不删除表,速度很快
删除表:DROP TABLE table_name;使表不存在
操作表中的数据:
添加数据:INSERT INTO table_name(column1,column2,......)VALUES(value1,value2,......);
复制表数据:在建表时创建:CREATE TABLE table_new as SELECT column1,...|* FROM table_old;
在添加时复制:INSERT INTO table_new(column,....)SELECT column1,....|* FROM table_old;
修改表数据:UPDATE语句:UPDATE table_name SET column1=value1,....WHERE conditions;无条件更新与有条件更新
删除数据:无条件删除:DELETE FROM table_name;
有条件删除:DELETE FROM table_name WHERE 列名=‘?’;
================================================================================================
约束:定义规则,确保完整性
主键约束:列内容不能重复,且不能为空
外键约束:内容必须是所关联主键的值其中的值
空值约束:不能为空
默认约束:当插入时没有赋值,会使用默认值
唯一约束:列的内容都是唯一的,不以重复
检查约束:列的内容必须符合要求。如CHECK (JOB IN(‘Engineer’,’Sales’,’Manager’));
非空约束:
在创建表时设置非空约束:CREATE TABLE table_name(column_name datatype NOT NULL,...);
在修改表时添加非空约束:ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
在修改表时去除非空约束:ALTER TABLE table_name MODIFY column_name datatype NULL;
主键约束:
在创建表时设置主键约束:CREATE TABLE table_name(column_name datatype PRIMARY KEY,....); CREATE TABLE userinfo_p1(id number(6,0),username varchar2(20),userpwd varchar2(20), CONTRAINT pk_id_username primary key(id,username));
在修改表时添加主键约束:ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,.....);
更改约束的名称:ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
删除主键约束:禁用 | 启用约束:ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name;
删除约束:ALTER TABLE table_name drop constraint new_pk_id;
ALTER TABLE table_name DROP PRIMARY KEY[CASCADDE];
外键约束:
在创建表时设置外键约束:CREATE TABLE table1(column_name datatype REFERENCES table2(column_name),.....);
CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name) [ON DELETE CASCADE];
在修改表时添加外键约束:ALTER TABLE table_name ADD CONSTRAINT contraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name)[ON DELETE CASCADE];
删除外键约束: ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name;
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
唯一约束:在创建表时设置唯一约束:列级设置唯一约束:CREATE TABLE table_name(column_name datatype UNIQUE,....);
表级设置唯一约束:CONSTRAINT constraint_name UNIQUE(column_name);
在修改表时添加唯一约束:ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name);
删除唯一约束:禁用:ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name;
删除:ALTER TABLE table_name DROP CONSTRAINT constraint_name;
检查约束:
在创建表时设置检查约束:列级设置检查约束:CREATE TABLE table_name(column_name datatype CHECK(expressions),...);
表级设置检查约束:CONSTRAINT constraint_name CHECK(expressions);
在修改表时添加检查约束:ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);
删除检查约束:禁用:ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name;
删除:ALTER TABLE table_name DROP CONSTRAINT constraint_name;
==============================================================================================================
查询:
基本查询语句:
COLUMN column_name HEADING new_name
COLUMN column_name FORMAT dataformat
COLUMN column_name CLEAR
distinct关键字:去除列中重复的记录
表达式=操作数+运算符
算数运算符(+,-,*,/)
比较运算符(>,>=,<,<=,=,<>)
逻辑运算符(and,or,not)
模糊查询:
通配符的使用:(_,%)
使用like查询: 一个_只能代表一个字符
%可以代表0到多个任意字符
范围查询:BETWEEN.....AND
IN/NOT IN
对查询结果进行排序:ORDER BY....DESC/ASC;
case....when语句:1.CASE column_name WHEN value1 THEN result,.....[ELSE result] END
2.select username,case when username='aaa' then '计算机部门'
when username='bbb' then '市场部门' else ‘其他部门’end as 部门
from users;
select user,case when salary<800 then '工资低'
when salary>5000 then '工资高' end as 工资水平
from users;
===========================================================================================
decode函数的使用:
decode(column_name,value1,result1,....defaultvalue);
select username,decode(username,'aaa','计算机部门','bbb','市场部门','其他') as 部门 from users;
==============================================================================================================
pl/sql是过程语言(Procedural Language)与结构化查询语句(sql)结合而成的编程语言
pl/sql是对sql的扩展
支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构
可用于创建存储过程、触发器和程序包,给sql语言的执行添加程序逻辑
与Oracle服务器和Oracle工具紧密集成,具备可移植性、灵活性和安全性