Oracle DB 使用DDL语句创建和管理表
? 对主要的数据库对象进行分类
? 查看表结构
? 列举列可以使用的数据类型
? 创建简单的表
? 说明创建表时如何创建约束条件
? 描述方案对象如何工作
? 数据库对象
–命名规则
? CREATE TABLE语句:
–访问另一个用户的表
– DEFAULT选项
? 数据类型
? 约束条件概览:NOT NULL、UNIQUE、PRIMARY KEY、
FOREIGN KEY、CHECK约束条件
? 使用子查询创建表
? ALTER TABLE
–只读表
? DROP TABLE语句
数据库对象
Oracle DB 可以包含多种数据结构。在数据库设计中应对每种结构加以概述,以便可在数据库开发的构建阶段创建数据库结构。
? 表:用于存储数据
? 视图:一个或多个表中数据的子集
? 序列:用于生成数字值
? 索引:提高某些查询的性能
? 同义词:给出对象的替代名称
Oracle 表结构
? 在任何时候都可以创建表,即使用户正在使用数据库时也是如此。
? 无需指定表的大小。表的大小最终由全部分配给数据库的空间量确定。但是,需要估计一个表将要使用的空间大小,这一点非常重要。
? 可以联机修改表结构。
?命名规则
表名和列名必须满足以下条件:
? 以字母开头
? 长度为1-30 个字符
? 只包含A-Z、a-z、0-9、_、$ 和#
? 不与同一用户拥有的其它对象重名
? 不是Oracle Server 的保留字
应根据命名任意Oracle DB 对象的标准规则来命名数据库表和列:
? 表名和列名必须以字母开头,长度必须为1-30 个字符。
? 名称中只能包含字符A-Z、a-z、0-9、_(下划线)、$ 和#(这两个字符是合法字符,但建议不要使用它们)。
? 不能与同一Oracle Server 用户拥有的其它对象重名。
? 不能是Oracle Server 的保留字。
- 还可以使用加引号的标识符来表示对象名称。加引号的标识符以双引号(“”) 开始和结束。如果使用加双引号的标识符为方案命名,那么,只要引用该对象,就必
须使用双引号。加引号的标识符可以是保留字,不过建议不要这样做。
命名准则
对于表和其它数据库对象,应使用描述性名称。
注:名称不区分大小写,例如,EMPLOYEES与eMPloyees或eMpLOYEES被认为是同一名称。但是,加引号的标识符区分大小写。
?CREA TE TABLE语句
? 必须具有以下项才能使用此语句:
– CREATE TABLE权限
–一个存储区
CREATE TABLE [schema.]table
(column datatype[DEFAULT expr][, ...]);
? 可以指定:
–表名称
–列名、列数据类型和列大小
通过执行SQL CREATE TABLE语句可以创建用于存储数据的表。此语句是一条DDL 语句,DDL 语句是SQL 语句的子集,用于创建、修改或删除Oracle DB 结构。这些语句会对数据库产生直接的影响,它们还会在数据字典中记录信息。
要创建一个表,用户必须具有CREATE TABLE权限和一个用于在其中创建对象的存储区。数据库管理员(DBA) 可以使用数据控制语言(DCL) 语句为用户授权。
在该语法中:
schema 与所有者的姓名相同
table 是表名称
DEFAULT expr 指定当INSERT语句中省略了值时所使用的默认值语句
column 是列名称
datatype 是列的数据类型和长度
引用另一个用户的表
? 在用户方案中没有属于其他用户的表。
? 应使用所有者姓名作为那些表的前缀。
方案是由数据或方案对象构成的一组逻辑结构。方案由数据库用户拥有,而且与该用户具有相同的名称。每个用户都拥有一个方案。
方案对象可使用SQL 来创建和操作;方案对象包括表、视图、同义词、序列、存储过程、索引、集群和数据库链接。
如果某个表不属于该用户,则必须将所有者的姓名作为该表的前缀。例如,假设存在名为USERA和USERB的两个方案,每个方案都有一个EMPLOYEES表,如果USERA要访问属于USERB的EMPLOYEES表,USERA就必须将USERB方案名作为该表名的前缀:SELECT * FROM userb.employees;
如果USERB要访问属于USERA的EMPLOYEES表,USERB就必须将USERA的方案名作为该表名的前缀:
SELECT * FROM usera.employees;
DEFAULT选项
? 指定插入过程中列的默认值。
... hire_date DATE DEFAULT SYSDATE, ...
? 文字值、表达式或SQL 函数都是合法值。
? 其它列的名称或假列是非法值。
? 默认数据类型必须与列的数据类型相匹配。
CREATE TABLE hire_dates (id NUMBER(8), hire_date DATE DEFAULT SYSDATE);
在定义表时,可以使用DEFAULT选项指定列的默认值。当插入的行中没有某列的相应值时,使用此选项可以防止将空值输入到列中。默认值可以是文字值、表达式或SQL 函数(例如SYSDATE或USER),但是该值不能是其它列或假列的名称(例如NEXTVAL或CURRVAL)。默认表达式必须与列的数据类型相匹配。
请看如下示例:
INSERT INTO hire_dates values(45, NULL);
以上语句将插入空值而非默认值。
INSERT INTO hire_dates(id) values(35);
以上语句将在HIRE_DATE列中插入SYSDATE。
?创建表
? 创建表:
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
? 确认表创建:
DESCRIBE dept
示例中创建的DEPT表包含以下四列:DEPTNO、DNAME、LOC和CREATE_DATE。CREATE_DATE列具有默认值。如果没有为INSERT语句提供值,则会自动插入系统日期。要确认该表是否已创建,请运行DESCRIBE命令。
因为创建表的命令是一条DDL 语句,所以在执行该语句后会自动提交。
注:可以通过查询数据字典来查看你拥有的表列表。例如:
select table_name from user_tables
使用数据字典视图,还可以查找有关其它数据库对象(例如视图、索引等)的信息。
?数据类型
在指定表的列时,需要提供列的数据类型。下面是几种可用的数据类型:
准则
? 在使用子查询创建表时不复制LONG列。
? 不能在GROUP BY或ORDER BY子句中包括LONG列。? 每个表只能使用一个LONG列。
? 不能对LONG列定义约束条件。
? 可以要求使用CLOB列,而不是LONG列。
日期时间数据类型
注:可以在Oracle9i和更高版本中使用这些日期时间数据类型。
?包括约束条件
https://www.360docs.net/doc/394715183.html,/rlhua/article/details/12804291
?包括约束条件
? 约束条件用于在表级别强制执行各种规则。
? 约束条件用于防止在存在相关性时删除表。
? 下列约束条件类型有效:
– NOT NULL :指定该列不能包含空值
– UNIQUE :定一个列或列组合的值对于表中的所有行必须是唯一的
– PRIMARY KEY :唯一地标识表中的每一行
– FOREIGN KEY :在该列和所引用表的列之间建立联系后强制实施引用完整性,这样其中一个表的值与另一个表中的值相匹配
– CHECK :指定必须为真的条件
Oracle Server 使用约束条件来防止将无效的数据输入到表中。
可以使用约束条件完成以下任务:
? 在表中插入、更新或删除某一行时,对表中的数据强制执行各种规则。必须满足约束条件,操作才会成功。
? 防止当某个表与其它表存在相关性时删除该表。
? 为Oracle 工具(例如Oracle Developer)提供规则。
?约束条件准则
? 可以为约束条件命名,也可以由Oracle Server 使用SYS_Cn格式生成一个名称。
? 可采用以下任何一种方式创建约束条件:
–创建表的同时创建约束条件
–创建表以后
? 可以在列或表级别定义约束条件。
? 可以在数据字典中查看约束条件。
所有约束条件都存储在数据字典中。如果为约束条件指定了一个有意义的名称,则引用时较为容易。约束条件名称必须遵循标准对象命名规则,但是该名称不能与同一用户的另一对象名称相同。如果你没有对约束条件命名,Oracle Server 就会按照SYS_Cn格式生成一个名称,其中n是一个整数,这样约束条件名称是唯一的。
既可以在创建表的同时定义约束条件,也可以在创建表之后定义约束条件。
你可以在列级别或表级别定义约束条件。从功能上来说,表级别约束条件与列级别约束条件的作用是相同的。
?定义约束条件
? 语法:
CREATE TABLE [schema.]table
(column datatype[DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
? 列级别约束条件语法:
column[CONSTRAINT constraint_name] constraint_type,
? 表级别约束条件语法:
column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),
示例给出了在创建表时定义约束条件的语法。你可以在列级别或表级别创建约束条件。
定义列时会包括在列级别定义的约束条件。在表定义结束时定义表级别约束条件,必须在一组括号中引用应用了约束条件的列或列组合。这二者主要在语法上有所不同;此外从功能上来说,列级别约束条件和表级别约束条件的作用是相同的。
必须在列级别定义NOT NULL约束条件。
必须在表级别定义适用于多个列的约束条件。
在该语法中:
schema :与所有者的姓名相同
table :是表名称
DEFAULT expr :指定当INSERT语句中省略了值时所使用的默认值
column:是列名称
datatype :是列的数据类型和长度
column_constraint:是作为列定义一部分的完整性约束条件
table_constraint :是作为表定义一部分的完整性约束条件
? 列级别约束条件示例:
CREATE TABLE employees(
employee_id NUMBER(6) CONSTRAINT emp_emp_id_pk PRIMARY KEY,
first_name VARCHAR2(20),
...);
? 表级别约束条件示例:
CREATE TABLE employees(
employee_id NUMBER(6),
first_name VARCHAR2(20),
...
job_id VARCHAR2(10) NOT NULL,
CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID));
通常会在创建表的同时创建约束条件。可以在创建表之后将约束条件添加到表,也可以临时禁用约束条件。
示例中都对EMPLOYEES表的EMPLOYEE_ID列创建了主键约束条件。
1.第一个示例使用列级别语法定义约束条件。
2.第二个示例使用表级别语法定义约束条件。
NOT NULL约束条件
NOT NULL约束条件可以确保某列不包含空值。默认情况下,没有NOT NULL约束条件的列可以包含空值。
必须在列级别定义NOT NULL约束条件。
在EMPLOYEES表中,EMPLOYEE_ID列继承了NOT NULL约束条件,因为该列已定义为主键。否则,在LAST_NAME、EMAIL、HIRE_DATE和JOB_ID列上强制实施NOT NULL 约束条件。
UNIQUE约束条件
UNIQUE关键字完整性约束条件要求一列或一组列(键)中的每个值必须是唯一的,即在指定的列或一组列中,表的任意两行无重复值。UNIQUE关键字约束条件的定义中包括的列(或一组列)被称为唯一关键字。如果UNIQUE约束条件由多个列组成,则该组列被称为组合唯一关键字。
UNIQUE约束条件允许输入空值,除非你还为同一列定义了NOT NULL约束条件。实际上,因为空值被认为不等于任何值,所以任意数量的行都可以在没有NOT NULL约束条件的列中包括空值。一个列(或组合UNIQUE关键字的所有列)中的空值总是满足UNIQUE约束条件。
注:由于多个列上UNIQUE约束条件的搜索机制所致,在部分空值组合UNIQUE关键字约束条件的非空列中不能有相同的值。
可以在表级别或列级别定义:
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
CONSTRAINT emp_email_uk UNIQUE(email));
可以在列级别或表级别定义UNIQUE约束条件。如果要创建一个组合唯一关键字,则可在表级别定义该约束条件。如果不能使用单个属性来唯一地标识某一行,则需定义组合关键字。在这种情况下,可以创建由两个或两个以上列组成的唯一关键字,其组合值总是唯一的,可用于标识行。
示例中将UNIQUE约束条件应用于EMPLOYEES表的EMAIL列。该约束条件的名称为EMP_EMAIL_UK。
注:Oracle Server 通过对一个或多个唯一关键字列隐式创建一个唯一索引来强制实现UNIQUE约束条件。
?PRIMARY KEY约束条件
PRIMARY KEY约束条件用于创建创建表的主键。只能为每一个表创建一个主键。PRIMARY KEY约束条件是唯一标识表中每一行的一个列或一组列。此约束条件可以强制一个列或列组合是唯一的,还可以确保作为主键一部分的列不包含空值。
注:因为唯一性是主键约束条件定义的一部分,所以Oracle Server 通过对一个或多个主键列隐式创建一个唯一索引来强制实现唯一性。
?FOREIGN KEY约束条件
FOREIGN KEY(或引用完整性)约束条件指定一个列或列组合作为外键,并建立与同一表或不同表中主键或唯一关键字的关系。
示例中,DEPARTMENT_ID已被定义为EMPLOYEES表(相关表或子表)中的外键,它引用DEPARTMENTS表(被引用表或父表)的DEPARTMENT_ID列。
准则
? 外键值必须与父表中的现有值相匹配,或为NULL。
? 外键取决于数据值,外键是纯逻辑指针,而不是物理指针。
可以在表级别或列级别定义:
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
CONSTRAINT emp_email_uk UNIQUE(email));
可以在列级别或表级别定义FOREIGN KEY约束条件。必须使用表级别定义来创建组合外键。
示例中使用表级别语法,对EMPLOYEES表的DEPARTMENT_ID列定义一个FOREIGN KEY约束条件。该约束条件的名称为EMP_DEPT_FK。
如果约束条件只是针对单个列,则也可以在列级别定义外键。语法上的不同之处在于没有出现关键字FOREIGN KEY。例如:
CREATE TABLE employees
(...
department_id NUMBER(4) CONSTRAINT emp_deptid_fk
REFERENCES departments(department_id),
...
)
?FOREIGN KEY约束条件:关键字
外键是在子表中定义的,而包含被引用列的表是父表。外键是使用以下关键字的组合定义的:? FOREIGN KEY用于在表约束条件级别定义子表中的列。
? REFERENCES用于标识父表中的表和列。
? ON DELETE CASCADE指出在删除父表中的行时,还删除子表中的相关行。
? ON DELETE SET NULL指出在删除父表中的行时,将外键值设为空值。
默认行为被称为限制规则,该规则可禁止更新或禁止删除被引用的数据。
在没有ON DELETE CASCADE或ON DELETE SET NULL选项时,如果在子表中引用父表中的一行,则不能删除该行。
?CHECK约束条件
? 定义每行都必须满足的一个条件
? 以下表达式是不允许的:
–引用CURRVAL、NEXTVAL、LEVEL和ROWNUM假列的表达式
–调用SYSDATE、UID、USER和USERENV函数的表达式
–引用其它行中的其它值的查询
..., salary NUMBER(2)
CONSTRAINT emp_salary_min CHECK (salary> 0),...
CHECK约束条件用于定义每行都必须满足的一个条件。该条件可以使用与查询条件相同的结构,但是以下项除外:
? 引用CURRVAL、NEXTVAL、LEVEL和ROWNUM假列的表达式
? 调用SYSDATE、UID、USER和USERENV函数的表达式
? 引用其它行中的其它值的查询
一个列可以有多个CHECK约束条件,这些约束条件将在其定义中引用该列。可以按需要,对一个列定义任意数量的CHECK约束条件。
可以在列级别或表级别定义CHECK约束条件。
CREATE TABLE employees
(...
salary NUMBER(8,2) CONSTRAINT emp_salary_min CHECK (salary > 0),
...
示例中显示用于创建HR方案中EMPLOYEES表的语句
CREATE TABLE employees
( employee_id NUMBER(6)
CONSTRAINT emp_employee_id PRIMARY KEY
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn NOT NULL
, email VARCHAR2(25)
CONSTRAINT emp_email_nn NOT NULL
CONSTRAINT emp_email_uk UNIQUE
, phone_number VARCHAR2(20)
, hire_date DATE
CONSTRAINT emp_hire_date_nn NOT NULL
, job_id VARCHAR2(10)
CONSTRAINT emp_job_nn NOT NULL
, salary NUMBER(8,2)
CONSTRAINT emp_salary_ck CHECK (salary>0)
, commission_pct NUMBER(2,2)
, manager_id NUMBER(6)
CONSTRAINT emp_manager_fk REFERENCES
employees (employee_id)
, department_id NUMBER(4)
CONSTRAINT emp_dept_fk REFERENCES
departments (department_id));
通过以下查询表中哪列有哪些约束,上面创建表的语句对应下面的约束。
hr@TEST0924> l
1 select
a.owner,a.TABLE_NAME,
b.COLUMN_NAME,a.CONSTRAINT_NAME,a.CONSTRAINT_TYPE,a.SEARC H_CONDITION
2 from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
3* where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME and A.table_name='EMPLOYEES'
hr@TEST0924> /
OWNER TABLE_NAME COLUMN_NAM
CONSTRAINT_NAME C SEARCH_CONDITION
---------- ------------------------------ ---------- ------------------------------ - --------------------
HR EMPLOYEES SALARY EMP_SALARY_MIN
C salary > 0
HR EMPLOYEES EMAIL EMP_EMAIL_UK
U
HR EMPLOYEES EMPLOYEE_ID EMP_EMP_ID_PK P
HR EMPLOYEES DEPARTMENT_ID
EMP_DEPT_FK R
HR EMPLOYEES JOB_ID EMP_JOB_FK
R
HR EMPLOYEES MANAGER_ID EMP_MANAGER_FK
R
HR EMPLOYEES LAST_NAME EMP_LAST_NAME_NN C "LAST_NAME" IS NOT NULL
HR EMPLOYEES EMAIL EMP_EMAIL_NN
C "EMAIL" IS NOT NULL
HR EMPLOYEES HIRE_DATE EMP_HIRE_DATE_NN C "HIRE_DATE" IS NOT NULL
HR EMPLOYEES JOB_ID EMP_JOB_NN
C "JOB_ID" IS NOT NULL
10 rows selected.
违反约束条件
当对列设置了约束条件后,如果试图违反约束条件规则,则会返回一条错误。例如,如果尝试更新一条记录,但该记录中的值受完整性约束条件所约束,则会返回一条错误。示例中,因为父表DEPARTMENTS中不存在部门55,所以你会收到违例ORA-02291“parent key not found(未找到父关键字)”。
hr@TEST0924> update employees set department_id=55 where department_id=110; update employees set department_id=55 where department_id=110
*
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found
如果某行中包含用作其它表中的外键的主键,则不能删除该行。
hr@TEST0924> delete from departments where department_id=60;
delete from departments where department_id=60
*
ERROR at line 1:
ORA-02292: integrity constraint (HR.EMP_DEPT_FK) violated - child record found
如果试图删除一条记录,但该记录中的值受完整性约束条件所约束,则会返回一条错误。示例中试图从DEPARTMENTS表中删除部门60,但此操作导致一个错误,因为该部门编号已用作EMPLOYEES表中的外键。如果试图删除具有子记录的父记录,则会收到违例ORA-02292“child record found(存在子记录)”。
由于部门210 中没有任何雇员,因此下面的语句有效:
hr@TEST0924> delete from departments where department_id=210;
1 row deleted.
?使用子查询创建表
? 通过组合CREATE TABLE语句和AS subquery选项
可以创建表并插入行。
CREATE TABLE table
[(column, column...)]
AS subquery;
? 使指定列的数量与子查询列的数量相匹配。
? 定义具有列名和默认值的列。
创建表的另一种方法是应用AS subquery子句,该方法既可以创建表,又可以将子查询返回的行插入表中。
在该语法中:
table 是表名称
column 是列的名称、默认值和完整性约束条件
subquery 是一条SELECT语句,用于定义要插入到新表中的一组行
准则
? 使用指定的列名创建一个表,然后将SELECT语句检索到的那些行插入到该表中。? 列定义只能包含列名和默认值。
? 如果已经给出列的规格,则列数必须等于子查询SELECT列表中的列数。
? 如果没有给出列的规格,则表的列名与子查询中的列名相同。
?列数据类型定义和NOT NULL约束条件会传递到新表中,请注意,只会继承显式NOT NULL约束条件。PRIMARY KEY列不会将NOT NULL特性传递给新列。任何其它约束条件规则也不会传递到新表中。但是,你可以在列定义中添加约束条件。
?使用子查询创建表
CREATE TABLE dept80
AS
SELECT employee_id, last_name,salary*12 ANNSAL,hire_date FROM
employees WHERE department_id = 80;
DESCRIBE dept80
示例中创建了一个名为DEPT80的表,该表包含在部门80 中工作的所有雇员的详细资料。请注意,DEPT80表中的数据来自EMPLOYEES表。
可以使用DESCRIBE命令验证数据库表的存在,并检查列定义。
但是,在选择表达式时请务必提供列别名。表达式SALARY*12被赋予了别名ANNSAL。如果没有别名,系统就会生成以下错误:
hr@TEST0924> CREATE TABLE dept80
2 as
3 SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80;SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80
*
ERROR at line 3:
ORA-00998: must name this expression with a column alias
ALTER TABLE语句
使用ALTER TABLE语句可:
? 添加新列
? 修改现有列定义
? 定义新列的默认值
? 删除列
? 重命名列
? 将表的状态更改为“只读”
在创建表之后,可能会因以下原因而需要更改表结构:
? 省略了某列。
? 列定义或列名需要更改。
? 需要删除列。
? 要将表设置为“只读”模式。
可以使用ALTER TABLE语句完成此任务。
?只读表
可以使用ALTER TABLE语法执行下列操作:
? 将表置于只读模式,从而阻止在维护表过程中进行DDL 或DML 更改
? 将表重新置于读/写模式
ALTER TABLE employees READ ONLY;
-- 执行表维护,然后再将表改回读/写模式
ALTER TABLE employees READ WRITE;
在Oracle Database 11g中,可以通过指定READ ONLY将表设置为“只读”模式。当表处于READ-ONLY模式时,用户不能发出可对表造成影响的任何DML 语句或任何SELECT ... FOR UPDATE语句。可以发出DDL 语句,但前提条件是不对表中的任何数据进行修改。当表处于READ ONLY模式时,可以对与表关联的索引执行操作。
指定READ/WRITE,可令处于“只读”模式的表返回“读/写”模式。
注:可以删除处于READ ONLY模式的表。DROP命令只能在数据字典中执行,因此无需访问表内容。在表空间返回“读/写”状态之前,系统不会回收表使用的空间,此时可对块段头进行必要的更改。
?删除表
? 将表移至回收站
? 如果指定了PURGE子句,则可将表及其所有数据全部删除
? 使从属对象失效并删除表的对象权限
DROP TABLE dept80;
使用DROP TABLE语句可以将表移至回收站或从数据库中全部删除该表及其所有数据。如果不指定PURGE子句,DROP TABLE语句就不会将使用的空间重新释放到表空间中供其它对象使用,而且该空间会继续视为用户的空间限额。删除表会使从属对象失效并删除表的对象权限。
删除表后,在数据库中会失去表的所有数据以及与表关联的所有索引。
语法
DROP TABLE table [PURGE]
在该语法中,table是表的名称。
准则
? 删除表中的所有数据。
? 保留视图和同义词,但不再有效。
? 提交所有待定的事务处理。
? 只有表的创建者或具有DROP ANY TABLE权限的用户才能删除表。注:使用FLASHBACK TABLE语句可从回收站中还原已删除的表。
ORACLE常用SQL语句大全
ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename
6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接
oracle常用权限语句
oracle 用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>create user username identified by password SQL> grant dba to username; SQL> conn username/password SQL> select * from user_sys_privs; 我们将从创建 Oracle 用户权限表开始谈起,然后讲解登陆等一般性动作,使大家对 Oracle 用户权限表有个深入的了解。 一、创建 sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 二、登陆sqlplus / as sysdba;// 登陆sys帐户sqlplus sys as sysdba;// 同上 sqlplus scott/tiger;//登陆普通用户scott sqlplus sys as sysdba;//同上 sqlplus scott/tiger;//登陆普通用户scott 三、管理用户 create user zhangsan;//在管理员帐户下,创建用户zhangsan alter user scott identified by tiger;//修改密码
四,授予权限 1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限 /*管理员授权*/ grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限 grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限 grant create table to zhangsan;//授予创建表的权限 grante drop table to zhangsan;//授予删除表的权限 grant insert table to zhangsan;//插入表的权限 grant update table to zhangsan;//修改表的权限 grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public) 2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权 /*oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的*/ grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限 grant drop on tablename to zhangsan;//授予删除表的权限 grant insert on tablename to zhangsan;//授予插入的权限 grant update on tablename to zhangsan;//授予修改表的权限 grant insert(id) on tablename to zhangsan; grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限 五、撤销权限 基本语法同grant,关键字为revoke 六、查看权限 select * from user_sys_privs;//查看当前用户所有权限 select * from user_tab_privs;//查看所用用户对表的权限 七、操作表的用户的表 /*需要在表名前加上用户名,如下*/ select * from zhangsan.tablename 八、权限传递 即用户A将权限授予B,B可以将操作的权限再授予C,命令如下: grant alert table on tablename to zhangsan with admin option;//关键字 with admin option grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似 九、角色 角色即权限的集合,可以把一个角色授予给用户 create role myrole;//创建角色
Oracle-基本建表语句
--创建用户 create user han identified by han default tablespace users Temporary TABLESPACE Temp; grant connect,resource,dba to han; //授予用户han开发人员的权利 --------------------对表的操作-------------------------- 创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型是否为空 ); -增加主键 alter table 表名 add constraint 主键名 primary key (字段名1); -增加外键: alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2); 在建立表格时就指定主键和外键 create table T_STU ( STU_ID char(5) not null, STU_NAME varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键和外键一起建立: create table T_SCORE ( EXAM_SCORE number(5,2),
EXAM_DATE date, AUTOID number(10) not null, STU_ID char(5), SUB_ID char(3), constraint PK_T_SCORE primary key (AUTOID), constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID) ) --创建表 create table classes( id number(9) not null primary key, classname varchar2(40) not null ) --查询表 select * from classes; --删除表 drop table students; --修改表的名称 rename alist_table_copy to alist_table; --显示表结构 describe test --不对没查到 -----------------------对字段的操作 ----------------------------------- --增加列 alter table test add address varchar2(40); --删除列 alter table test drop column address; --修改列的名称 alter table test modify address addresses varchar(40; --修改列的属性 alter table test modi
Oracle查询语句基本命令一
oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/394715183.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum
Oracle常用的45个查询语句
日期/时间 相关查询 1、获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month " 2 FROM DUAL; 2、获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current mont h" 2 FROM DUAL; 3、获取当前年份的第一天 每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL; 4、获取当前年份的最后一天 类似于上面的查询语句。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL 5、 获取当前月份的天数 这个语句非常有用,可以计算出当前月份的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) num ber_of_days 2 FROM DUAL; 6、获取当前月份剩下的天数 下面的语句用来计算当前月份剩下的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT SYSDATE, 2 LAST_DAY (SYSDATE) "Last",
oracle查询语句大全
oracle查询语句大全oracle 基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PA TH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/394715183.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的所有表select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum
Oracle数据库常用的Sql语句
Oracle数据库常用的Sql语句 今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案. select table_name from all_tables;//所有的表明 select table_name from user_all_tables;//用户的所有的表 一下是转贴的sql语句的帖子. select * from user_objects; //查询所有的表 select * from dba_tables; //查询所有的表 select * from all_tables; //查询所有的表 select * from user_users //查出一个用户 select * from all_users //查询所有用户 select * from dba_users //查询所有用户 select name,dbid from v$database; //查询数据库名和它的ID select * from https://www.360docs.net/doc/394715183.html,er_tab_columns; //查询表名,并显示列名 describe 表名//查询表结构 2: 查询数据库参数 show parameter db; 3:查询数据库的实例名 select instance_name from v$instance; 4: 数据库域名 数据库安装结束后,如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用select value from v$parameter where name='db_domain' show parameter domain 5:数据库服务名 如果数据库有域名,则数据库服务名就是全局数据库名,如果该数据库没有定义域名,则数据库服务名与数据库名相同 show parameter service_name 6:显示当前用户 show user 7:直接登陆 sqlplus "/as sysdba" 8:当前ORACLE系统时间 select sysdate from dual; 9:查询数据库字典v$nls_parameter产看字符集相关参数 select * from v$nls_parameters; //************* oracle基本操作语句(适合初学者) oracle操作语句:
ORACLE基本SQL语句
ORACLE基本定义、操作语句 一、表 1.创建表 CREATE TABLE TAB_NAME ( COL_01 V ARCHAR2(10) NOT NULL, COL_02 NUMBER(8,2), COL_03 DATE ); 2.添加主键约束 ALTER TABLE TAB_NAME ADD CONSTRAINT PK_COL_01 PRIMARY KEY(COL_01); 3.添加唯一性约束 ALTER TABLE TAB_NAME ADD CONSTRAINT UK_COL_02 UNIQUE(COL_02); 4.添加外键约束 ALTER TABLE TAB_NAME ADD CONSTRAINT FK_COL0_03 FOREIGN KEY(COL_03) REFERENCES TAB_2(COL_03); 5.添加check约束 ALTER TABLE TAB_NAME ADD CONSTRAINT CHK_COL_03 CHECK(COL_01 <> ‘ABC’); 6.创建索引 ――创建唯一索引 CREATE UNIQUE INDEX IDX_NAME ON TAB_NAME(COL_01); ――创建非唯一索引 CREATE INDEX IDX_NAME ON TAB_NAME(COL_01); 7.给表添加一个新列 ALTER TABLE TAB_NAME ADD COL_04 V ARCHAR2(10); 8.修改列的数据类型 ALTER TABLE TAB_NAME MODIFY COL_04 NUMBER(8); 9.删除一列 ALTER TABLE TAB_NAME DROP COLUMN COL_04; 10.更改表的名称 ALTER TABLE TAB_NAME RENAME TO TAB_NEW_NAME; 11.更改表的列名 ALTER TABLE TAB_NAME RENAME COLUMN COL_04 TO COL_05; 12.给表和列添加注释说明 --add comments to the table COMMENT ON TABLE TAB_NAME IS‘示例表’; --add comments to the column COMMENT ON COLUMN TAB_NAME.COL_01 IS‘列名’; 13.删除表 DROP TABLE TAB_NAME; 14.MERGE merge into tj_test1 tt1
oracle基本操作语句(适合初学者)
1. select * from table_name where rownum>begin and rownum< end 2.sql = "select * from table" con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum <= "+intPage*intPageSize+") B WHERE r > "+(intPage-1) *intPageSize); 今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案. select table_name from all_tables;//所有的表明 select table_name from user_all_tables;//用户的所有的表 一下是转贴的sql语句的帖子. select * from user_objects; //查询所有的表 select * from dba_tables; //查询所有的表 select * from all_tables; //查询所有的表 select * from user_users //查出一个用户 select * from all_users //查询所有用户 select * from dba_users //查询所有用户 select name,dbid from v$database; //查询数据库名和它的ID select * from https://www.360docs.net/doc/394715183.html,er_tab_columns; //查询表名,并显示列名 describe 表名//查询表结构 select * from https://www.360docs.net/doc/394715183.html,er_tab_columns where table_name=表名//查询指定表名的字段 2: 查询数据库参数 show parameter db;
ORACLE的基本语法集锦
ORACLE的基本语法集锦 -- 表 create table test (names varchar2(12), dates date, num int, dou double); -- 视图 create or replace view vi_test as select * from test; -- 同义词 create or replace synonym aa for dbusrcard001.aa; -- 存储过程 create or replace produce dd(v_id in employee.empoy_id%type) as begin end dd; -- 函数 create or replace function ee(v_id in employee%rowtype) return varchar(15) is var_test varchar2(15); begin return var_test; exception when others then end -- 三种触发器的定义 create or replace trigger ff alter delete on test for each row declare begin delete from test; if sql%rowcount < 0 or sql%rowcount is null then rais_replaction_err(-20004,"错误")
end create or replace trigger gg alter insert on test for each row declare begin if :https://www.360docs.net/doc/394715183.html,s = :https://www.360docs.net/doc/394715183.html,s then raise_replaction_err(-2003,"编码重复"); end if end create or replace trigger hh for update on test for each row declare begin if updating then if :https://www.360docs.net/doc/394715183.html,s <> :https://www.360docs.net/doc/394715183.html,s then reaise_replaction_err(-2002,"关键字不能修改") end if end if end -- 定义游标 declare cursor aa is select names,num from test; begin for bb in aa loop if https://www.360docs.net/doc/394715183.html,s = "ORACLE" then end if end loop; end -- 速度优化,前一语句不后一语句的速度快几十倍select names,dates
oracle9i常用操作
ORACLE9I日常操作 获取数据库日期 select sysdate from dual; 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su -root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
Oracle DBA常用SQL语句系列
DBA常用SQL语句系列 一、数据库构架体系 1、表空间的监控是一个重要的任务,我们必须时刻关心表空间的设 置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信 息 SELECT TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS,PCT_INCREASE,MIN_EXTLEN,STATUS, CONTENTS,LOGGING, EXTENT_MANAGEMENT, -- Columns not available in v8.0.x ALLOCATION_TYPE, -- Remove these columns if running PLUGGED_IN, -- against a v8.0.x database SEGMENT_SPACE_MANAGEMENT --use only in v9.2.x or later FROM DBA_TABLESPACES ORDER BY TABLESPACE_NAME; 2、对于某些数据文件没有设置为自动扩展的表空间来说,如果表空间 满了,就将意味着数据库可能会因为没有空间而停止下来。监控表空 间,最主要的就是监控剩余空间的大小或者是使用率。以下是监控表空 间使用率与剩余空间大小的语句 SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)", ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) "USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)" FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE
Oracle数据库语句大全
Oracle数据库语句大全 一.入门部分 1.创建表空间 create tablespace schooltbs datafile ‘D:\oracle\datasource\schooltbs.dbf’ size 10M autoextend on; 2.删除表空间 drop tablespace schooltbs[including contents and datafiles]; 3.查询表空间基本信息 select *||tablespace_name from DBA_TABLESPACES; 4.创建用户 create user lihua identified by lihua default tablespace schooltbs temporary tablespace temp; 5.更改用户 alter user lihua identified by 123 default tablespace users; 6.锁定用户 alter user lihua account lock|unlock; 7.删除用户 drop user lihua cascade;--删除用户模式 8.oracle数据库中的角色 connect,dba,select_catalog_role,delete_catalog_role,execute_catalo g_role,exp_full_database,imp_full_database,resource 9.授予连接服务器的角色 grant connect to lihua; 10.授予使用表空间的角色 grant resource to lihua with grant option;--该用户也有授权的权限 11.授予操作表的权限 grant select,insert on user_tbl to scott;--当前用户 grant delete,update on https://www.360docs.net/doc/394715183.html,er_tbl to scott;--系统管理员 二.SQL查询和SQL函数 1.SQl支持的命令: 数据定义语言(DDL):create,alter,drop 数据操纵语言(DML):insert,delete,update,select 数据控制语言(DCL):grant,revoke 事务控制语言(TCL):commit,savepoint,rollback 2.Oracle数据类型 字符,数值,日期,RAW,LOB 字符型 char:1-2000字节的定长字符
Oracle数据库的常用语句
Oracle数据导入/导出命令 文章分类:数据库 1、单独备份一个或多个用户: D:>exp scott/tiger file=导出文件 D:>exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件 2、单独备份一个或多个表: D:>exp 用户/密码 tables=表 D:>exp 用户/密码 tables=(表1,…,表2) D:>exp system/manager tables=(用户.表) D:>exp system/manager tables=(用户1.表1,用户2.表2) 3、导入指定表 D:>exp scott/tiger file=a.dmp D:>imp test/test fromuser=scott tables=emp file=a.dmp D:>imp test/test tables=dept file=a.dmp (说明:如果导出用户没有DBA权限,则导入用户可以不用指定fromuser、touser 参数如果导出用户拥有DBA权限,则导入用户也必须拥有DBA权限) 4、给表、列加注释 SQL>comment on table 表 is '表注释'; 注释已创建。 SQL>comment on column 表.列 is '列注释'; 注释已创建。 SQL> select * from user_tab_comments where comments is not null; SQL> select * from user_col_comments where comments is not null; 5、查看当前用户下有什么对象(表、视图、同义词、快照) SQL> select * from tab; 查看表结构 SQL> describe 表名 简写以上命令 SQL> desc 表名 6、 DDL、数据定义语言:create、alter、drop、truncate(创建、修改结构、删除、截断)(其他:rename) DML、数据操纵语言:insert、delete、select、update(增、删、查、改)DCL、数据控制语言:grant、revoke(授权、回收)、set role 事务控制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction)
oracle数据库常用语句
数据类型:字符类型:char(标准通用拉丁字符),nchar(汉字等其他字符),varchar2(长度可变字符),nvarchar2,long; 数字类型:number(通用),integer,float 日期和时间:date,timestamps(分秒,时区) 行:rowid(逻辑地址),urowid(逻辑地址,内存地址); 二进制:raw(size)(原始二进制数据),long raw,blob(二进制大型对象;最大4G字节),clob(字符大型对象),nclob,bfile; 2.oracle WEB管理页面:localhost:5560/isqlplus; localhost:5500/em https://www.360docs.net/doc/394715183.html,设置远程测试:tnsping datebasename;远程连接:sqlplus name/password@datebasename; 4.创建表空间:create tablespace test datafile 'test.dbf' size 10m autoextend on next 2m maxsize unlimited logging permanent extent management local autoallocate blocksize 8k segment space management manuaL;//段空间
5.创建用户并连接: create user "TEST" identified by "TEST" default tablespace TEST temporary tablespace TEMP quota unlimited on TEST quota unlimited on TEMP grant "connect" to test//分配基本权限。 conn test/test; 6.重设用户密码:scott/tiger为默认用户,alter user scott identified by tiger; 解锁:alter user scott account unlock; 7.sql脚本的执行:@路径/filename.sql; 8.创建表:create table t1(c1 type 约束,c2 type 约束(not null,unique,check,primary key)) 9.查询:select distinct c1 from t1 where 条件group by c1 having by 子条件order by c1; 10.连接字符串:select c1 (as可省) 列1 ||c2 from t1;
Oracle常用命令大全
Oracle常用命令大全(很有用,做笔记) 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式
说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机, 重新定位数据文件、重做日志文件。 执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。 4、startup,等于以下三个命令 startup nomount alter database mount alter database open 5、startup restrict 约束方式启动 这种方式能够启动数据库,但只允许具有一定特权的用户访问 非特权用户访问时,会出现以下提示: ERROR: ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭