玖叶教程网

前端编程开发入门

docker 安装 oracle11g (附oracle学习笔记01)

1、docker 安装oracle11g步骤:

1:引入oracle源
	docker pull oracleinanutshell/oracle-xe-11g

2:开始创建容器
	docker run -h "oraclehost" --name "oracle" -d -p 9090:8080 -p 1521:1521 oracleinanutshell/oracle-xe-11g

3: docker ps

4:在终端中进入此容器
	docker exec -it 94910105eb6f /bin/bash
	
5:使用普通身份登入
	sqlplus system/oracle
	
6:创建用户并分配权限
	6.1 查看用户
		select username,password from dba_users;
	6.2 创建用户:用户名为 oracle;密码为:oracle
		create user oracle identified by oracle;
	6.3 查看是否有此用户 oracle
		select * from all_users;
	6.4 给用户赋予connect 和 resource 角色(connect: 保证数据库可以链接;resource:该用户可以使用数据库的资源;create session:会话的权利)
		grant connect,resource,create session to oracle;
	6.5 创建表格添加,更改用户表空间配额
		grant unlimited tablespace to oracle;
	6.6 删除用户
		drop user oracle;

7:开启docker oracle服务
	docker start oracle
	

2、oracle学习笔记01

192.168.52.135


三大部分
	1.用户与表空间
	2.表与约束
	3.查询语句

全局数据库名:orcl
密码:root

图形化管理工具 sql-plus
两个用户都可以使用:sys/system

sys as sysdba 使用管理员的身份登录数据库

sql-plus 
	写sql语句必须要分号结尾  但是命令不需要加;方便的话,统一使用分号。
	清屏:
		若在dos的窗口下sql/plus就要用:host cls 或是clear screen
	show linesize : 查看当前设置的sqlplus输出的最大行宽
	set linesize : 设置sqlplus输出的最大行宽

用户与表空间
	用户
		登录 sql-plus
			系统用户:
				四个系统用户:
					sys,system 
						权限 sys > system
						sys登录必须使用 管理员 或者 系统操作人员权限 登录
					sysman
						操作系统管理器的人员,也是管理员级别的用户
					scott password: tiger (default)
						oracle 创始人的一员

			使用系统用户登录:
				使用system用户登录
					[username/password][@server][as sysdba][sysoper]
					---  system/root @orcl as sysdba
					---  system/root #本地直接
					---  connect/conn sys/root  #error ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
					---  connect/conn sys/root as sysdba
					orcl就是自己设置的服务名

		查看登录用户
			--- show user; 查看当前用户
			dba_users 数据字典 和普通的表类似
			--- desc dba_users;  #查看数据字典属性信息

		启用scott用户
			默认被锁定了
			需要解锁 使用该用户
			alter user username account unlock;
			修改登录后 需更新密码: root


	表空间
		表空间概述
			理解表空间
				数据库与表空间
					表空间实际上是数据库的逻辑存储空间,表空间可以理解为在数据库当中开辟一个空间用来存放数据库对象。
					一个数据库可以有多个表空间构成。
					oracle很多优化都是与表空间实现的。
				表空间与数据文件
					表空间有一个或多个数据文件构成,大小可以由用户自己定义。
					我们建的表,数据库当中对象都是存储在表空间的数据文件当中。

			表空间的分类
				永久表空间
					数据库当中永久存储的数据,例如:数据库表,视图,存储过程等
				临时表空间
					存储数据库操作过程当中中间执行的过程,执行完毕自动会被释放掉
				UNDO表空间
					保存事务所修改的旧值,被修改之前的数据,实现回滚操作


		查看用户的表空间
			利用4个数据字典 
				dba_tablespaces 系统管理员查看的
				user_tablespaces 普通用户查看的
				dba_users 系统管理员查看的 查看用户默认和临时表空间
				user_users 普通用户查看的  查看用户默认和临时表空间

			--- desc dba_tablespaces 
			--- select TABLESPACE_NAME from dba_tablespaces; #6个系统默认的
					SYSTEM  存放sys用户的表,视图,存储过程等数据库对象,系统表空间
					SYSAUX  作为Example表空间的辅助表空间
					UNDOTBS1 存储一些撤销信息的表空间  belong to UNDO表空间
					TEMP 存储sql语句处理的表和索引信息的临时表空间
					USERS 存储用户创建的数据库对象的永久表空间,和SYSTEM类似
					EXAMPLE 用于安装oracle11g事例的表空间

			--- select TABLESPACE_NAME from user_tablespaces; #6个系统默认的  
					SYSTEM  存放sys用户的表,视图,存储过程等数据库对象,系统表空间
					SYSAUX  作为Example表空间的辅助表空间
					UNDOTBS1 存储一些撤销信息的表空间  belong to UNDO表空间
					TEMP 存储sql语句处理的表和索引信息的临时表空间
					USERS 存储用户创建的数据库对象的永久表空间,和SYSTEM类似
					EXAMPLE 用于安装oracle11g事例的表空间

			--- select DEFAULT_TABLESPACE from dba_users;     
			--- select TEMPORARY_TABLESPACE from dba_users;   

			#查询system用户的默认表空间
			#查询system用户的临时表空间 临时表空间(默认是TEMP,可以自己创建)
			--- select default_tablespace,temporary_tablespace from dba_users where username = 'SYSTEM'; (SYSTEM,TEMP)

			--- select default_tablespace,temporary_tablespace from dba_users where username = 'SCOTT'; (USERS,TEMP)
		
		设置用户的默认或临时表空间
			alter user username 
			default|temporary TABLESPACE tablespace_name;
			

			--- alter user system default tablespace users; #将用户system的默认表空间修改为users

		创建,修改,删除表空间
			创建
				create [temporary] tablespace tablespace_name 
				tempfile|datafile 'xx.dbf' size xx    # datafile 就是表空间数据文件的名字  [tablespace,tempfile]匹配

				--- create tablespace test1_ts datafile 'test1file.dbf' size 10m;
				--- create temporary tablespace temptest1_ts tempfile 'tempfile.dbf' size 10m;

				--- desc dba_data_files 查看永久表空间的文件信息

				--- select file_name from dba_data_files where tablespace_name='TEST1_TS';
						C:\APP\ZHENGSHENG.CHEN\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST1FILE.DBF

			    --- desc dba_temp_files 查看临时表空间的文件信息

				--- select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TS';
						C:\APP\ZHENGSHENG.CHEN\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEMPFILE.DBF

			修改(永久的)
				修改表空间的状态
					设置联机或脱机的状态
						alter tablespace tablespace_name online|offline;
						创建完表空间默认是联机状态

						---  alter tablespace test1_ts offline
						---  select status from dba_tablespaces where tablespace_name = 'TEST1_TS';
						---  alter tablespace test1_ts online

					设置只读或可读写状态(必须是联机状态)
						alter tablespace tablespace_name read only|read write
						默认表空间是 read write状态 

						--- alter tablespace test1_ts read only;
						--- select status from dba_tablespaces where tablespace_name = 'TEST1_TS'; #read only
						--- alter tablespace test1_ts read write;
						--- select status from dba_tablespaces where tablespace_name = 'TEST1_TS'; #online

				修改数据文件
					增加数据文件
						alter tablespace tablespace_name
						add datafile 'xx.dbf' size xx;

						--- alter tablespace test1_ts add datafile 'test2_file.dbf' size 10m;
						--- select file_name from dba_data_files where tablespace_name='TEST1_TS';
							C:\APP\ZHENGSHENG.CHEN\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST1FILE.DBF
							C:\APP\ZHENGSHENG.CHEN\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST2_FILE.DBF

					删除数据文件
						alter tablespace tablespace_name
						drop datafile 'filename.dbf';
					    不能删除表空间中第一个数据文件,如果要删除的话,我们需要把整个表空间删掉
					    ---  alter tablespace test1_ts drop datafile 'test2_file.dbf';

			删除表空间
				drop tablespace tablespace_name [including contents](括号加上同时删除数据文件)
				---  drop tablespace test1_ts including contents;

表与约束
	表存储在表空间当中
		存储数据的基本存储单位
		二维结构
		行和列

	数据类型
		日期型
			DATE(经常使用)
				范围:公元前4712/1/1--公元9999/12/31
				可以精确到秒
			TIMESTAMP

		字符型
			固定长度
				char(n) max(n) = 2000
				nchar(n) 按照unicode max(n) == 1000 存储汉字比较多
			可变长度
				varchar2(n) max(n) = 4000
				nvarchar2(n) 按照unicode max(n) == 2000 存储汉字比较多

		数值型
			number(p,s) p:有效数字 s:小数点后的位数 经常使用
				number(5,2) 有效数字五位,小数两位
			float(n) 存储二进制数,二进制数的位数[1,126],转换为十进制数需要乘以0.30103才可以得到

		其他类型(大对象)
			blob 最大存储4G的数据 二进制形式存放
			clob 最大存储4G的数据 字符串形式存放

	管理表
		创建表
			同一个用户下表名唯一
			create table table_name(
				column_name datatype,
				...
			)

			demo:
				创建用户信息表(所需字段 字段的类型)
				编号 用户名 密码 邮箱 注册时间
				create table userinfo(
					id number(6,0),
					username varchar2(20),
					userpwd varchar2(20),
					email varchar2(30),
					regdate date
				)
				--- desc userinfo;
		修改表(结构)
			添加字段
				alter table table_name
				add column_name datatype;
				--- alter table userinfo add remarks varchar2(500);

			更改字段数据类型
				alter table table_name 
				modify column_name datatype;
				--- alter table userinfo modify remarks varchar2(400);  #更改字段长度
				--- alter table userinfo modify userpwd number(6,0);    #更改数据类型

			删除字段
				alter table table_name
				drop column column_name;
				--- alter table userinfo drop column remarks;

			修改字段名
				alter table table_name
				rename column old_column to new_column
				--- alter table userinfo rename column email to new_email;

			修改表名
				rename table_name to new_table_name
				--- rename userinfo to user_info

		删除表
			truncate table table_name  #截断表,删除表中所有数据,速度比delete快
			drop table table_name 删除表结构

	操作表的数据
		添加数据
			insert 语句
				insert into table_name(column1,column2,...)
				values (value1,value2,...)
			操作实例
				向表中所有字段添加值
					--- insert into userinfo values(1,'初中生','123','[email protected]',sysdate);
				向表中指定字段添加值
					--- insert into userinfo(id,username,userpwd) values(2,'yyy','123');
				向表中添加默认值
					create table user_info(
				      id number(6,0),
				      regdate date default sysdate
				    );
				    --- insert into user_info(id) values(1)

				    --- alter table userinfo modify email default '无';
				    --- insert into userinfo(id) values(3);
				    --- insert into userinfo(id,email) values(4,'aaa')
			复制表数据
				在建表的时候复制
					create table table_new 
					as
					select column1,...|* from table_old;

					--- create table usercopy as select id,username,userpwd from userinfo;
				在添加时复制
					insert into table_new 
					[(column1,...)]
					select column1,...|* from table_old;
					--- insert into usercopy select id,username,userpwd from userinfo;
					--- insert into usercopy(id,username) select id,username from userinfo;
		修改数据
			update 语句
			update table_name set column1=value1,... [where conditions]
		删除数据
			delete * from table_name [where conditions]

	约束
		约束作用
			定义规则
			确保完整性

		非空约束
			创建表时设置非空约束
				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;

		主键约束
			非空 唯一
			一张表只能设计一个主键约束
			主键约束可以由多个字段构成(联合主键或复合主键)

			1.在创建表时设置主键约束
				单一主键
					create table table_name(
						column_name datatype primary key,
						...
					);
				联合主键
					create table userforce_pk(
					  id number(6,0),
					  username varchar2(20),
					  userpwd varchar2(20),
					  constraint pk_id_username primary key(id,username)
					);

				查找约束 字典:desc user_constraints
				--- 

			2.在修改表时添加主键约束
				alter table table_name
				add constraint constraint_name 
				primary key(column_name1,..);

				--- alter table userinfo add constraint pk_id primary key(id);
			3.更改约束的名称
				alter table table_name
				rename constraint old_name to new_name
				
				--- alter table userinfo rename constraint pk_id to id_pk;
			4.删除主键约束
				alter table table_name
				disable|enable|drop constraint constraint_name;
				drop primary key[CASCADE] #针对外键约束


				--- alter table userinfo disable constraint id_pk;
				--- 查看约束状态
				--- select constraint_name,status from user_constraints where table_name = 'USERINFO';

		外键约束
			在创建表时设置外键约束
				create table table1
				(
					column_name datatype REFERENCES table2(column_name),
					...
				);
				# table1:从表  table2:主表
				# 设置外键约束时,主表的字段必须是主键
				# 主从表中相应的字段必须是同一个数据类型
				# 从表中外键字段的值必须来自主表中的相应字段的值,或者为null值

				--- create table C(id number(2,0) references A(id));
				
				constraint constraint_name FOREIGN KEY(column_name) references table_name(column_name)[on delete cascade]
				[on delete cascade] 级联删除 主表当中一条数据被删除之后,从表当中使用了这条数据的字段所在的行也会被删除

				--- create table C(
						id number(2,0),
						constraint fk_id foreign key(id) references A(id)
					);
			在修改表时添加外键约束
				add constraint constraint_name FOREIGN KEY(column_name) references table_name(column_name)[on delete cascade]
				--- alter table E add constraint fk_id_e foreign key(id) references A(id);

			删除外键约束
				alter table table_name
				disable|enable|drop constraint constraint_name;
				--- alter table E disable constraint fk_id_e;
				--- alter table E drop constraint fk_id_e;

		唯一约束
			保证字段值的唯一性
			唯一约束 vs 主键约束
				1.主键字段值必须是非空的
				2.唯一约束允许有一个空值
				3.主键在每张表只有一个,唯一约束可以有多个

			在创建表时设置唯一约束
				列级 vs 表级
				create table table_name (
					column_name datatype unique,
					...
				)
				create table userinfo_A(
  					id varchar2(10) primary key,
  					username varchar2(20) unique,
 					userpwd varchar2(20)
  				);

  				表级:
  					constraint constraint_name unique(column_name)

			在修改表时添加唯一约束
				add constraint constraint_name unique(column_name)

			删除唯一约束
				alter table table_name
				disable|enable|drop constraint constraint_name;

		检查约束
			create table table_name 
			(
				column_name datatype CHECK(expressions),
				...
			)
			--- create table T_A (id number(2,0) check(id>10));
			创建表时设置检查约束
				constraint constraint_name check(expressions)

			在修改表的时候添加检查约束
				alter table table_name
				add constraint constraint_name check(expressions);

			删除检查约束
				alter table table_name
				disable|enable|drop constraint constraint_name;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言