Oracle数据库学习笔记
创建表的同时插入数据:
create table zhang3 as select * from zhang1;
create table zhang3(id,name) as select * from zhang1;
将查询数据插入到某个表中:
insert into zhang3 select * from zhang1;
insert into zhang3(id,name) select * from zhang1;
有关完整性约束,表名,列名的两个视图:
user_constraints, user_cons_columns
创建用户并为用户授权(在命令行中进行操作):
sqlplus / as sysdba
create user zfs identified by zfs;
grant dba to zfs;
oracle数据库进行定制安装,安装成功之后没有数据库,这时需要手动创建数据库(使用 database configuration assistant)。
创建数据库的过程中需要指定密码(是指定 SYS, SYSTEM, DBSNMP, SYSMAN 这几个用户的密码)。实际使用时发现随便输入密码就可以登录SYSDBA这个用户,可能这是一个特殊的用户,是用系统的身份登录的。但是 使用任意密码也可以登录 SYS 这个用户。
创建完数据库之后还未完成,现在还没有LISTENER,使用 Net configuration assistant 创建好 LISTENER。
现在还需要有 tnsnames.ora 这个文件来描述我们刚刚创建的数据库。若创建数据库之前已经创建了 LISTENER, tnsnames.ora 文件应该会自动生成。
由于数据库先于 LISTENER 创建,现在需要手动配置 tnsnames.ora。仍然使用 Net configuration assistant,选择 本地Net服务名配置,输入创建的数据库的名称,配置完成之后 tnsnames.ora 会自动生成。
关于oracle数据库对用户的管理:
不同数据库的用户应该是无法通用的,例如在一个数据库里创建了用户,该用户不能登录另一个数据库。
数据库的用户是保存在该数据库中的一个名为 user$ 的表中。该表对dba这个角色的用户是不可见的,
tnsnames.ora 描述的信息:
该文件中的每个条目应该描述的是连接一个数据库所需的信息(ip地址,端口号,所要连接的数据库的服务名,该名称由LISTENER在服务端映射到对应的数据库),连接数据库所需的用户名和密码并没有放到 tnsnames.ora 这个文件中,而是要在登录时进行输入。
所以每一次的登录会话对应的是一个数据库,若想切换到另一个数据库,则要使用 tnsnames.ora 中的另外的条目。
由于在informatica powercenter中要用到oracle的odbc驱动,所以安装oracle数据库的过程中,若以定制的方式安装,则应该选择 Oracle ODBC Driver。
查询数据库中的表:
select * from tab;
select * from user_tables;
select * from all_tables;
select * from dba_tables;
sys和system的区别:
sys是最大权限的用户,是数据库集群里面的最高管理员。 system是单个oracle实例的最高管理员.
Compares a value to each value in a list or returned by a query. Must be preceded by =,!=,>,<,<=,>=. Can be followed by any expression or subquery that returns on or more values.例子中的any可以是some
eg. SELECT * FROM employees
WHERE salary = ANY
(SELECT salary
FROM employees
WHERE department_id = 30)
ORDER BY employee_id;
关于oracle的正则表达式:
在正则表达式中,可以使用类似与 \s 这样的操作符来匹配空白字符,但是 oracle的正则表达式中不支持 \n \r \t 这类的c语言风格的转义字符,若想在正则表达式中匹配这类字符,可以直接从键盘进行输入。
Oracle Database interprets the empty string as null.
plsql的输出语句示例:
DBMS_OUTPUT.PUT_LINE('surname=' || surname);
The %TYPE attribute is particularly useful when declaring variables to hold database
values. The syntax for declaring a variable of the same type as a column is:
variable_name table_name.column_name%TYPE;
Assigning Values to Variables with the SELECT INTO Statement
A simple form of the SELECT INTO statement is:
SELECT select_item [, select_item ]...
INTO variable_name [, variable_name ]...
FROM table_name;
Oracle 中的between and 是闭区间的。