博主信息
Sky
博文
291
粉丝
0
评论
0
访问量
6760
积分:0
P豆:617

ORACLE 基础概念及代码

2021年10月21日 18:58:09阅读数:11博客 / Sky

表空间

基础概念
1、一个数据库由多个表空间构成,一个表空间由多个数据文件构成。
2、表空间分为:永久表空间、临时表空间、UNDO表空间(存放被修改之前的数据)
永久表空间:存放数据库永久的数据(表,视图等);
临时表空间:存放数据库操作中中间执行的过程,执行结束后释放掉;
undo表空间:存储数据被修改前的数据。

启用用户的语句

alter user username account unlock;

密码默认为tiger
查看当前用户

Show user

oracle查看表空间 dba_tablespaces(系统用户) user_tablespaces (普通用户)

dba_tablespaces和user_tablespaces默认表空间共六个sys: sys表、存储过程、视图等数据对象,存放系统信息 -- 系统表空间sysaux: example辅助表空间undotbs1: 数据库撤销信息undo类型的表空间temp: SQL语句处理的表、索引信息 --临时存储users: 数据库用户使用的数据库对象--永久存储example: 安装oracle数据库实例权限大的,可以查询权限小的

设置system默认表空间

ALERT USER username DEFAULT丨TEMPORARY TABLESPACE tablespace_name;默认每个用户下面只有一个临时表空间普通用户无权限修改默认表空间,需要授权

创建默认表空和临时表空间
create [temporary] tablespace tablespace_name tempfile | datafile 'xx.dbf' size xx
不指定路径,默认安装到oracle安装目录下
查看表空间具体路径
desc dba_data_file查看数据字典字段
select file_name from dba_data_file where tablespace_name='表空间名字要大写';查看永久表空间数据文件
select file_name from dba_temp_file where tablespace_name='表空间名字要大写';查看临时表空间数据文件

修改表空间状态,联机或脱机
alter tablespace tablespace_name onlink|offlink;
select status from dba_tablespace where tablespace_name='表空间名字要大小';查看表空间状态
设置只读或可读写状态,默认的是可读写
alter tablespace tablespace_name read only|read write;(与设置脱机联机状态语法一致)

数据文件,在表空间中增加数据文件
alter tablespace tablespace_name add datafile 'xx.dbf' size xx;
查看表空间的数据文件
select file_name from dba_data_file where tablespace_name='表空间名字要大小';
删除数据文件
alter tablespace tablespace_name drop datafile '表空间名字';不能删除表空间的第一个数据文件,要删除的话,必须删除整个表空间。

删除表空间:
drop tablespace 表空间名 [including contents];
注意:如果只是删除表空间,而不删除其中的数据文件,可以省略including contents 字句;

代码

<!--查看用户字典-> desc dba_tablespaces;(系统表空间) select tablespace_name from dba_tablespaces;

desc user_tablespaces;(用户表空间) select tablespace_name from user_tablespaces;

<!--查看用户信息--> desc dba_users;

<!--查询用户名为system默认表空间 和 临时表空间--> select default_tablespace,temporary_tablespace from dba_users where username='system';

<!—设置用户名的默认表空间 和 临时表空间--> ALERT USER username(当前用户) DEFAULT丨TEMPORARY TABLESPACE tablespace_name(表名);

<!—创建默认表空间 和 临时表空间--> create [temporary] tablespace tablespace_name tempfile | datafile 'xx.dbf' size xx

<!--查看表空间具体路径--> <!—1.查看数据字典字段--> desc dba_data_files;
<!—2.查看永久表空间数据文件--> select file_name from dba_data_file where tablespace_name='表空间,名字要大写';
<!—2.查看临时表空间数据文件--> select file_name from dba_temp_file where tablespace_name='表空间,名字要大写';

<!--修改表空间状态,联机或脱机--> alter tablespace tablespace_name onlink|offlink;
<!--设置只读或可读写状态,默认的是可读写--> alter tablespace tablespace_name read only|read write;
<!--查看表空间状态--> select status from dba_tablespace where tablespace_name='表空间名字要大小';

<!--数据文件,增加数据文件--> alter tablespace tablespace_name add datafile 'xx.dbf' size xx;

<!--查看表空间的数据文件--> select file_name from dba_data_file where tablespace_name='表空间名字要大小';

<!--删除数据文件--> alter tablespace tablespace_name drop datafile '表空间名字';

<!--删除表空间: --> drop tablespace 表空间名 [including contents];

管理表

基础概念
表是数据库中的基本存储单位,是二维结构(行和列组成);每个表都有约定:1、每一列的字段唯一;2、每一列的数据类型唯一;3、每一行的数据唯一,否则会造成数据的冗余。

数据类型:字符型、数值型、日期型、其它类型
字符型:char(n)最大2000、nchar(n)最大1000 【若n=10 实际为3 占用是10,后面补贴7】 <br>
varchar2(n)最大4000、nvarchar2(n)最大2000 【比上面两个节省空间,若n=10 实际为3 占用就是3】
数值型:number(p,s) p有效数字,s小数点后面的位数 number(5,2):有效数字5位,保留2位小数,如123.45
日期型:date(常用) timestamp(更精确)
其他类型:blob(以二进制) clob(以字符串)

1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,
大部分情况下建议使用卖二手手机平台varchar2类型,可以保证更好的兼容性。

创建表的基本语法:
create table table_name(column_name datatype ,...);
查看表的基本结构:
desc table_name;

代码
<!--创建表的基本语法:--> create table table_name (column_name datatype ,...);

<!--查看表的基本结构::--> desc table_name;

<!--向表中添加字段:--> alter table table_name add column_name datetype;

<!--修改字段类型:--> alter table table_name modify column_name datatype;

<!--删除字段:--> alter table table_name drop cloumn column_name;

<!-修改字段名:--> alter table table_name rename column column_name to new_name;

<!-修改表名:--> rename table_name to new_table_name;

<!--删除表中全部数据(不是删除表) --> TRUNCATE TABLE table_name

<!-- 删除表(表中数据同时删除)--> DROP TABLE table_name

操作表中的数据

基础概念
delete from table_name;删除全部数据
truncate table table_name;截断truncate表效率更高.

代码
<!-- 添加数据-->

• INSERT INTO table_name(column1,column2,...) VALUES(value1,value2,...);

<!--向表中添加默认值-->

创建表的时候
• create table table_name ( id number(6,0); regdate date DEFAULT sysdate ); • insert into userinfo2(id) values(1);
注意:即使是默认值,也不能空着 没有足够的值
修改表的时候
•alter table table_name modify column default 'xxxx';

<!--复制表数据:-->

1)在建表时复制:
create table table_new as select column,...|* from table_old;
2)在添加时复制:
insert into table_new [(column1,...)] select column1,...|* from table_old;

<!--修改表中的数据: -->

Update table_name Set column1=value1,column2=value2,... [where conditions] (不加where条件默认为全部数据)

<!—删除表数据—>

DELETE FROM table_name [WHERE conditions];

约束

基础概念

约束概述:

• 约束的作用:1.• 定义规则2.• 确保完整性
约束有: 1.• 非空约束2• 主键约束3• 外键约束4• 唯一约束5• 检查约束

主键约束:
作用:确保表中的每一行数据的唯一性。
设置了主键约束的字段,这个字段必须是非空且值是唯一的;
一个表中只能设置一个主键约束;
一个主键约束可以有多个字段组成(联合主键或复合主键)

外键约束:
注意:1.主表的字段必须是主键
2.主从表中相应的字段必须是同一个数据类型
3.从表中外键字段的值必须来自主表中的相应字段的值,或者null

唯一约束:
1、作用:保证设置唯一约束的字段值的唯一性
2、唯一约束与主键约束的区别:
(1)主键约束的字段为非空的,而唯一约束只允许有一个值为null
(2)一张表只能有一个主键约束,而唯一约束可以有多个

检查约束:
1、作用:让表中的值更具有实际意义。
注:检查约束在一张表中也是可以有多个的。

总结:
1、非空约束,主键约束,外键约束、唯一约束、检查约束;
2、只有主键约束在一张表中只能设置一个,且一个主键约束可以由多个字段组成;
3、外键约束是唯一一个连接两张表关系的约束;
4、在创建表时设置约束:只有非空约束是只有列级设置且非空约束是没有名字的,其他约束即可以列级设置也可以表级设置。
5、修改表时添加约束:只有非空约束是用修改字段的方式添加约束的,其他的雷同。
6、更改约束的名称:非空约束是没有名字的,所以其他的约束都可以通过以下语法修改:ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;可以通过数据字典(user_constraints)来查看。
7、禁用约束:非空约束不需要禁用,其他约束的禁用语法是:ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;可以通过数据字典(user_constraints)来查看。
8、删除约束:非空约束的删除还是通过修改字段的方式来删除,即在字段类型后加个NULL即可,其他的都可以通过语法:ALTER TABLE table_name DROP CONSTRAINT constraint_name;来删除;主键约束还可以通过语法:ALTER TABLE table_name DROP CONSTRAINT PRIMARY KEY;来删除;可以通过数据字典(user_constraints)来查看。。

代码

<!--非空约束-->

1、在创建表时设置非空约束
CREATE TABLE table_name( column_name datatype NOT NULL,... );
2、在修改表时添加非空约束
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
注:添加非空约束的字段不能有null数据存在。
3、在修改表时去除非空约束
ALTER TABLE table_name MODIFY column_name datatype NULL;

<!--主键约束-->
1、在创建表时设置主键约束(列级)
CREATE TABLE table_name(column_name datatype PRIMARY KEY,...);
2、在创建表时设置主键约束(表级)
CREATE TABLE table_name(column_name datatype,..., CONSTRAINT pk_name PRIMARY KEY(column_name1,...));
3、用数据字典查看约束:
user_constraints; select constraint_name from user_constraints where table_name='表名';
可以查看某个表中的主键约束信息。
4、在修改表时添加主键约束
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column_name1,...);
注:如果表中有内容时,准备添加主键的字段里的数据必须唯一。
【常见错误】添加主键约束之前会检查当前表是否违反需要添加的主键约束,如果违反:ORA-02437: 无法验证 (SYSTEM.PK_ID_NAME) - 违反主键
5、更改约束的名称
ALTER TABLE table_name RENAME CONSTRAINT old_pk_name TO new_pk_name;
6、禁用主键约束
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT pk_name;
7、删除主键约束
ALTER TABLE table_name DROP CONSTRAINT pk_name; ALTER TABLE table_name DROP PRIMARY KEY [CASCADE];
[CASCADE]为可选项,在级联操作中使用。

<!—外键约束-->
1、在创建表时设置外键约束(列级)
CREATE TABLE table1(column_name datatype REFERENCES table2(column_name),...);
--其中table2为主表,table1为从表
2、在创建表时设置外键约束2(表级)
CREATE TABLE table_name( column_name datatype,..., CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name2(column_name)[ON DELETE CASCADE]);
注: table_name2为主表名; [ON DELETE CASCADE]表示级联删除的意思;约束的名字也是唯一的。
3.修改表时添加外键约束:
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name) [ON DELETE CASCADE];
4、用数据字典查看约束:
user_constraints; select constraint_name from user_constraints where table_name='表名';
5、禁用外键约束
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT fk_name;
6、删除外键约束
ALTER TABLE table_name DROP CONSTRAINT fk_name;

<!—唯一约束-->
1、在创建表时设置唯一约束(列级)
CREATE TABLE table_name(column_name datatype UNIQUE,...);
2、在创建表时设置唯一约束(表级)
CREATE TABLE table_name( column_name datatype,..., CONSTRAINT u_name UNIQUE(column_name));
注:唯一约束的名称(u_name)必须唯一;
如果想设置多个唯一约束字段,需要将子句(CONSTRAINT u_name UNIQUE(column_name))重复书写即可。
3、在修改表时添加唯一约束
ALTER TABLE table_name ADD CONSTRAINT u_name UNIQUE(column_name);
4、禁用唯一约束
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT u_name;
5、删除唯一约束
ALTER TABLE table_name DROP CONSTRAINT u_name;

<!—检查约束-->
1.在创建表时设置检查约束(列级)
CREATE TABLE table_name(column_name datatype CHECK(expressions),...);
注:expressions为条件表达式
2、在创建表时设置检查约束(表级)
CREATE TABLE table_name( column_name datatype,..., CONSTRAINT c_name CHECK(expressions));
3、在修改表时添加检查约束
ALTER TABLE table_name ADD CONSTRAINT ck_name CHECK(expressions);
4、禁用检查约束
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT ck_name;
5、删除检查约束
ALTER TABLE table_name DROP CONSTRAINT ck_name;

查询语句

基础概念

在sqlplus中设置格式:*
作用:配合select语句使用,设置查询结果显示的格式,不会修改数据库表字段。

运算符和表达式:
1、表达式 = 操作数 + 运算符
2、oracle中的操作数可以是常量、变量和字段
3、oracle中的运算符:算数运算符(+ - * /)、比较运算符(> < = >= <= <>)、逻辑运算符(not and or)

模糊查询
1、通配符('','%'):一个‘’代表一个字符,一个‘%’代表多个任意字符。
2、关键字like

代码

1.基本查询语句:
SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions];
使用 distinct 不显示重复数据
2、设置字段显示样式:
COLUMN column_name HEADING new_name;
注:COLUMN 可以简写成COL
3、设置字段的格式化样式:
COLUMN column_name FORMAT dataformat;
注:如果是字符类型的值,只能设置它显示的长度。其中a后面跟数字表示字符串显示长度,例:a10 表示显示10位的长度的字符串;数字则用‘9’代表一位,例:999.9 表示整数位为三位,小数位为一位。如果设置的长度超出数据最大长度,则用‘#’显示。还可以在数字前面加‘$’,例:$999.9 则查询后显示的结果会在结果前加上'$'符。
4、清除设置格式:
COLUMN column_name CLEAR;
5.给字段设置别名:
SELECT column_name AS new_name,... FROM table_name;
6.查询结果排序
SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] ORDER BY column_name1 DESC|ASC,...
其中,DESC是降序排序,ASC是升序排序,默认情况下是升序排序
7.case...when语句的使用
CASE column_name WHEN value1 THEN result1, ... [ELSE resultn] END; CASE WHEN column_name=value1 THEN result1, ...[ELSE resultn] END;
注:value1、result1需要加单引号,表示字符串,当多个when...then...使用时,中间用空格隔开即可,不能用逗号隔开。
8.decode函数的使用
DECODE(column_name,value1,result1,...,defaultvalue);
( decode与case ...when .. then (else) end 类似,但decode的条件指定为==的意思)
解释:Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)From talbename;

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • golang需要的是:首先初学Go语言要弄懂语法和;然后掌握文件操作、网络编程、锁、协程、对象序列化和反序列化,以各种数据格式的封装等;最后接触数据库等,就可以模块化开发。
    :1、数学:需要数学上的计算逻辑思维;2、英文:很多是由英文构成;3、电脑:编程一般都是在电脑上进行编写。学编程和年龄没有明确的关系,但年轻人学习能力更强些。
    图灵机计算模型对现计算机的贡献主要是:建立了图灵机的理论模型,奠定了“可计算性”理论的;提出了图灵测试,阐述了机器智能的
    浏览器事件循环,面试中大部分都会问的,本文讲讲这个知识点。 事件循环机制 事件循环是负责执行、收集和处理事件以执行队列中的子任务的一套机制。
    java教程栏目主要介绍了JVM创建对象访问定位过程详解,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    区别:1、Python用于开发科学应用程序,JS用于Web开发面向用户的功能和服务器开发。2、Python依靠缩进来定义块;JS使用“{}”。