--Oracle数据导出导入 data export import
c:>exp 用户名/密码@IP/数据库名 file=导出文件名
c:> exp test/123@192.168.0.95/hmtdb file=d:/20071114.dmp
--设置当前会话日期格式
alter session set nls_date_format='DD-MM-YYYY';
--得到系统日期
select sysdate from dual;
--今天出现了ORA-01843的错误.这个错误代表无效的月份一般在日期转化的时候会提示。
--解决方法
--在中文系统里要输入'05-6月-1998'的格式,英文是'05-JUN-1998'
alter session set NLS_DATE_FORMAT='DD-MON-YY';
chapter developer
--用PL/SQL Developer 登录同一数据库时,有的用户能正常登录,
--有的用户不能登录,提示"You are not allowed to use
--PL/SQL Developer on this database";
--用SQL*PLUS,DEVELOPER2000都能正常登录,
--用PL/SQL Developer 登录其他数据库都正常
--打开pl/sql developer 的错误如下:
--you are not allowed to use PL/SQL Developer on this database.
--you do not have ths system.logon privilege in the PL/SQL Developer authorization.
--原因:你执行了File菜单下的authorization...,
--pl/sql developer在你的数据库建立了sys.plsqldev_authorization 表,
--而你又没有赋予你的用户权限。
--用以下解决办法
drop table sys.PLSQLDEV_AUTHORIZATION;
--关于pl/sql developer的登录密码问题
--能否保存密码?否则每次都需要重新输入
--ps. pl/sql developer 的版本是 5.0
选择“Configure”,然后把“Definition”下的“Store with password”打勾就行了。
在快捷方式的目标后添加 userid=uid/pwd@dbname 或 nologon 即可
辛辛苦苦到plsql develop的官方网站down了个使用手册,查了查才发现命令行参数可以解决问题,送给使用plsql develop的懒人兄弟们
--为什么要这样啊?
--难道你们就一个INSTANCE吗?
--我觉得还是登陆的好~~~~~~~~~
--我倒是有个问题,我不能使用sys/****@WW as sysdba 登陆,在PL/SQL里面有什么办法可以
--用SYS登陆?
--谢谢!
登录对话框最后不是有个connect as 吗? 里边选择 sysdba 就可以
chapter8
--事务隔离级别
READ UNCOMMITTED --1)幻像读,不可重复读,脏读都允许
READ COMMITTED --2)允许幻像读和不可重复读,不允许脏读
REPEATABLE READ --3)允许幻像读,不允许不可重复读和脏读
SERIALIZABLE --4)幻像读,不可重复读,脏读都不允许
--oracle支持2,4不支持1,3
--在SERIALIZABLE级别的事务中,
--更新及修改别的事务正更新及修改的数据,会一直等待事务结束
--别的事务更新SERIZLIZABLE级别事务使用中的数据也是如此
--4)的事务中不可以更新2)在4)事务开始后已经更新commit的数据,
--2)的可以更新4)的(因为2)能看到)
--设置事务级别
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
--sys用户可以授权包的EXECUTE权限,比如授权给store用户
CONNECT sys/change_on_install AS sysdba
GRANT EXECUTE ON SYS.DBMS_FLASHBACK TO store
--查询闪回
--开,参数SYSDATE-10/1440表示10分钟之前,24*60=1440
EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE - 10/1440);
--禁用,再次启用闪回操作之前,必须先禁用
execute dbms_flashback.disable();
--根据系统变更号(SCN)进行查询闪回
--获得当前SCN,例如
VARIABLE current_scn NUMBER
EXECUTE :cuuuent_scn:=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
PRINT current_scn
--然后执行一个Insert语句,Insert...
--然后用SCN做查询闪回的,参数,那再执行查询的结果就是Insert之前的状态
EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:current_scn);
chapter9
--查看表空间,用system用户身份登录
SELECT * FROM dba_tablespaces;
--创建用户,后面两行是默认表空间和默认临时表空间
CREATE USER user_name IDENTIFIED BY password
[DEFAULT TABLESPACE def_tabspace]
[TEMPORARY TABLESPACE temp_tabspace];
--例如
create user henry identified by hooray
default tablespace users
temporary tablespace temp;
--授权用户,用户特权=用户权限
--1)链接数据库的权限,假设有两个用户steve,gail
GRANT CREATE SESSION TO steve,gail;
--修改用户密码,jason的密码改成marcus
--修改自己的密码,输入PASSWORD回车
ALTER USER jason IDENTIFIED BY marcus;
--删除用户
--如果用户的模式中包含对象(例如表等),就要在用户名后加关键字CASCADE
DROP USER jason;
DROP USER jason CASCADE;
--常用的系统特权
CREATE SESSION
CREATE SEQUENCE 创建序列
CREATE SYNONYM 创建同名对象
CREATE TABLE
CREATE ANY TABLE
CREATE PROCEDURE
EXECUTE ANY PROCEDURE
CREATE USER
DROP USER
CREATE VIEW
--授予多个系统特权
GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO steve;
--WITH ADMIN OPTION 可也让用户将得到的权限授予别的用户
GRANT EXECUTE ANY PROCEDURE TO steve WITH ADMIN OPTION;
--将权限授予public就是授予全体用户
GRANT EXECUTE ANY PROCEDURE TO PUBLIC;
--user_sys_privs标准可以查看用户权限
SELECT * FROM user_sys_privs;
--撤销用户的系统特权
--撤销steve的特权时,steve如果已经把特权授予了gall,gall仍然拥有特权
REVOKE CREATE TABLE FROM steve;
--常用对象特权
SELECT
INSERT
UPDATE
DELETE
EXECUTE
--对象特权例子
GRANT SELECT, INSERT, PUDATE ON store.products TO steve;
GRANT UPDATE(LAST_NAME, SALARY) ON store.employees TO steve;
GRANT SELECT ON store.customers TO steve WITH GRANT OPTIION;
--查询对象特权,表user_tab_privs_made
--user_tab_privs_recd查询被授予了哪些表的对象特权
--user_col_privs_recd查询被授予了哪些列的对象特权
SELECT * FROM user_tab_privs_made;
--同名对象
CREATE SYNONYM customers FOR store.customers;
--创建公共同名对象,关键是最后一句
CONNECT system/manager
GRANT CREATE PUBLIC SYNONYM TO store;
CONNECT store/store_password
CREATE PUBLIC SYNONYM products FOR store.products;
--撤销对象特权
--撤销时,如果steve已经授予了gall,gall也同时失去特权
REVOKE SELECT ON store.customers FROM steve;
--创建角色,带密码,不带密码
CREATE ROLE product_manager;
CREATE ROLE hr_manager;
CREATE ROLE overall_manager IDENTIFIED BY manager_password;
--为角色授权
GRANT SELECT, INSERT ON products TO product_manager;
--将角色授予角色
GRANT product_manager TO overall_manager;
--将角色授予用户
GRANT overall_manager TO steve;
--检查授予用户的角色
--用哪个用户登录就可以看到自己被授予的角色
SELECT * FROM user_role_privs;
--检查授予角色的系统特权
SELECT * FROM role_sys_privs;
--检查授予角色的对象特权
SELECT * FROM role_tab_privs
[WHERE role='HR_MANAGER']
--使overall_manager不是默认角色
CONNECT system/manager
ALTER USER steve DEFAULT ROLE ALL EXCEPT overall_manager;
--用steve登录,启用overall_manager角色
CONNECT steve/button
SET ROLE overall_manager IDENTIFIED BY manager_password;
--清空角色的设置
SET ROLE NONE;
--设置为出overall_manager以外的任何角色
SET ROLE ALL EXCEPT overall_manager;
--撤销角色
CONNECT store/store_password
REVOKE overall_manager FROM steve;
--从角色中撤销特权
REVOKE ALL ON products FROM product_manager;
--删除角色
DROP ROLE overall_manager;
chapter10
--create table 创建表的简化语法
CREATE [GLOBAL TEMPORARY] TABLE table_name (
column_name type [CONSTRAINT constraint_def DEFAULT default_exp]
[,column_name type...]
)
[ON COMMIT {DELETE | PRESERVE} ROWS]
[TABLESPACE tab_space];
--例一
CREATE TABLE order_status2(
id INTEGER CONSTRAINT order_status2_pk PRIMARY KEY,
STATUS varchar2(10),
last_modified DATE DEFAULT SYSDATE
);
--例二
CREATE GLOBAL TEMPORARY TABLE order_status_temp (
id INTEGER,
status VARCHAR2(10),
last_modified DATE DEFAULT SYSDATE
)
ON COMMIT PRESERVE ROWS;
--获得有关表的结构信息
DESCRIBE table_name;
--获得表的更详细的信息user_tables,例
SELECT table_name, tablespace_name, temporary
FROM user_tables
WHERE table_name IN ('ORDER_STATUS2', 'ORDER_STATUS_TEMP');
--获得表的列的信息
SELECT *
FROM user_tab_columns
WHERE table_name='PRODUCTS';
--修改表
--添加,修改,删除列
--添加,删除约束
--启用,禁用约束
--添加列
--例一
ALTER TABLE order_status2
ADD modified_by INTEGER;
--例二
ALTER TABLE order_status2
ADD initially_created DATE DEFAULT SYSDATE NOT NULL;
--修改列
--修改列的长度,条件是列的类型长度可以修改,如VARCHAR2
--只有在表中没有任何行或所有列都为控制是才可以减少列的长度
--此例原来长度为10,该为15
ALTER TABLE order_status2
MODIFY status VARCHAR2(15);
--修改数字列的精度
--同上只有,才能减少
ALTER TABLE order_status2
MODIFY id NUMBER(5);
--修改列的数据类型
--没有值可以任意修改,有值了就必须是兼容类型
ALTER TABLE order_status2
MODIFY status CHAR(15);
--修改列的默认值
--只对以后新插入的值适用
ALTER TABLE order_status2
MODIFY last_modified DEFAULT SYSDATE-1;
--删除列
ALTER TABLE order_status2
DROP COLUMN initially_created;
--约束 约束类型 意义
CHECK C 指定一列或一组列必须满足的约束
NOT NULL C 指定一列不允许存储空值
PRIMARY KEY P 指定表的主键。
FOREIGN KEY R 指定表的外键。外键可以自引用
UNIQUE U 指定一列或一组列只能存储唯一的值
CHECK OPTION V 指定对视图执行的DML操作必须满足子查询的条件
READ ONLY O 指定视图是只读的
--添加CHECK约束
--例一
ALTER TABLE order_status2
ADD CONSTRAINT order_status2_status_ck
CHECK (status IN ('PLACED', 'PENDING', 'SHIPPED'));
--例二
ALTER TABLE ORDER_STATUS2
ADD CONSTRAINT order_status2_id_ck
CHECK (id > 0);
--添加NOT NULL约束,使用MODIFY而不是ADD CONSTRAINT
--例一
ALTER TABLE order_status2
MODIFY status CONSTRAINT order_status2_status_nn NOT NULL;
--例二
ALTER TABLE order_status2
MODIFY last_modified NOT NULL;
--添加FOREIGN KEY约束
--先删除列,再添加一个引用employees.employee_id列的FOREIGN KEY
ALTER TABLE order_status2
DROP COLUMN modified_by;
ALTER TABLE order_status2
ADD CONSTRAINT order_status2_modified_by_fk
modified_by REFERENCES employees(employee_id);
--使用一个带有FOREIGN KEY约束的ON DELETE CASCADE子句,可以指定在父表中
--删除一行记录时,子表的匹配行也都将被删除
ALTER TABLE order_status2
DROP COLUMN modified_by
ALTER TABLE order_status2
ADD CONSTRAINT order_status2_modified_by_fk
modified_by REFERENCES employees(employee_id) ON DELETE CASCADE;
--使用一个带有FOREIGN KEY约束的ON DELETE SET NULL子句,
--可以指定在父表中删除一行记录时,子表中匹配行的外键被设置为空值
ALTER TABLE order_status2
DROP COLUMN modified_by
ALTER TABLE order_status2
ADD CONSTRAINT order_status2_modified_by_fk
modified_by REFERENCES employees(employee_id) ON DELETE SET NULL;
--添加UNIQUE约束
ALTER TABLE order_status2
ADD CONSTRAINT order_status2_status_up UNIQUE (status);
--删除约束
ALTER TABLE order_status2
DROP CONSTRAINT order_status2_status_uq;
--禁用约束(daixu)
DISABLE CONSTRAINT
--启用约束
ENABLE CONSTRAINT
--延迟约束
DEFERRABLE
--获得有关约束的信息,在
--查看表的约束条件,在dba_constraints表中,用户是user_constraints
--表名要全部大写
--例一
SELECT table_name, constraint_name, constraint_type
FROM user_constraints
WHERE table_name='PRODUCTS';
--查询user_cons_columns可以获得有关列的约束的信息
COLUMN column_name FORMAT a15
SELECT constraint_name, colunm_name
FROM user_cons_columns
WHERE table_name='ORDER_STATUS2'
--20070612
--others001
--Oracle中创建自增长列和一些PL/SQL语句修改
--创建表格
create table student_score
(
id varchar2(12) primary key,
name varchar2(12),
score number
)
--创建序列
create sequence score_sqe
--这是一个触发器
create or replace trigger trig_score
--必需使用才有before才有行级触发器
before insert
on student_score
for each row
begin
--lpad这是一个字符函数,第一个参数是字符串,第二个长度,第三个是
--所代替的字符,从左边开始代替,rpad是从右边开始
select lpad(score_sqe.nextval,5,'0') into :new.id from dual;
end;
--这是修改oracle中的查询语句
insert into student_score(name,score) values('yhh',98);
select * from emp where ename='mith';
--修改把字符替换
c/'mith'/'MITH'/
--追加
input group by score;
--查询一列中不重复的值
select distinct(deptno) from emp;
--设置字符串长度
SQL> alter session set nls_length_semantics = CHAR ;
SQL> alter system set nls_length_semantics = CHAR ;
Session altered.
SQL> show parameter nls_length_semantics
--判断是否为空函数 null
nvl(e1,e2) e2类型要与e1一致
例子:
select nvl(max(lineitemno),0) from tblafspartmasteritem;
--错误 ORA-01745
用了ORACLE 的关键字,或者语句中少了逗号
--错误 ORA-00936 missing expression
1.用select作值的没用括号包起来
2.插入语句的话,去掉values试试
3.列column数量跟values不对应,看是否少了逗号。
--select 语句 列名中有关键字的,用[] 括起来
--欄位名為關鍵字的請用中括號框起來再試看看。
SELECT ID,[POSITION],[DATE] FROM HTADDR.POSTED
--优化简介
1.使用表连接而不是多个查询
2.执行连接时使用完全限定的列引用
3.使用CASE表达式而不是多个查询
4.添加表索引
5.使用WHERE而不是HAVING
6.使用UNION ALL而不是UNION
7.使用EXISTS而不是IN
8.使用EXISTS而不是DISTINCT
9.是用绑定变量
分享到:
相关推荐
本教程“SQL基础教程-Mick-示例程序&习题答案”由Mick编写,旨在为初学者提供一个实用的学习资源,帮助他们快速掌握SQL的核心概念和操作。 1. SQL基础知识: - 数据类型:SQL支持多种数据类型,如整数(INT)、...
《SQL Server 2012 T-SQL基础教程——源码与示例数据库》 本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程...
本教程"SQL基础 (ppt)"是针对初学者设计的,旨在帮助你从零开始掌握SQL的基本概念和常用操作。 首先,我们从01.SQL命令基础.ppt开始。这部分主要介绍了SQL语言的基础构成,包括如何创建数据库、数据表以及对数据的...
本教程基于“SQL基础教程(第2版)”的高清扫描版,将带你深入理解和掌握SQL的基本概念和核心技能。 首先,我们要理解SQL的主要功能。SQL可以用来创建数据库、定义数据结构、插入和更新数据、查询数据以及管理...
本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高...
《SQL基础教程(第二版)_思维导图》是由日本作者MICK编写的一本关于SQL学习的经典著作,虽然这里无法提供完整的书籍内容,但通过提供的思维导图,我们可以深入探讨SQL的基础知识及其在数据库管理中的重要性。...
通过学习这个“SQL基础教程”,你将能够熟练地掌握SQL的基本操作,包括查询、插入、更新和删除数据,创建和管理数据库结构,以及使用视图和存储过程。在实践中不断练习,你将能够更有效地管理和利用数据库资源。
SQL基础是每个数据库管理员、数据分析师和开发者的必备技能。本文将深入讲解SQL的基础知识,包括数据库的基本操作,如创建、查询、更新和删除数据。 首先,我们从创建数据库开始。在SQL中,可以使用`CREATE ...
数据库SQL基础知识是IT领域中至关重要的一环,尤其对于初学者来说,掌握好SQL语言是进入数据管理和分析世界的敲门砖。SQL(Structured Query Language),结构化查询语言,是用于管理和处理关系型数据库的标准语言。...
《SQL基础知识第2版》是一本为新手同学特地准备的入门文档,由公众号【SQL数据库开发】原创出品。 内容涵盖了SQL基础语法的所有内容,不仅有SQL各个语法的解释,而且还附有大量的实例讲解和批注,通俗易懂。此外还...
本教程“SQL基础第二版”旨在帮助新手快速掌握SQL的核心概念和常用命令,为数据库管理和分析奠定坚实的基础。 首先,我们要了解SQL的基本结构。SQL包括四大类型语句:数据查询语言(DQL)、数据操纵语言(DML)、...
这个"SQL基础教程PPT"显然是一份详细的教育资源,旨在帮助初学者理解并掌握SQL的基础知识。以下将对教程可能涵盖的内容进行详细讲解。 1. **SQL简介**:首先,教程可能会介绍SQL的起源、发展以及其在现代信息技术中...
### SQL基础教程知识点详解 #### 一、SQL简介 **SQL**(Structured Query Language),即结构化查询语言,是访问和处理数据库的标准计算机语言。它不仅被广泛应用于各种数据库管理系统中,如MS Access、DB2、...
**SQL基础教程** 本教程是针对SQL初学者的全面指南,涵盖了多个主流数据库系统的使用,包括Oracle Database 12cR1、SQL Server 2014、DB2 10.5、PostgreSQL 9.5.3以及MySQL 5.7。SQL,全称Structured Query ...
这个压缩包文件"经典SQL语句大全+SQL基础教程.rar"包含了关于SQL的重要学习资源,包括"SQL语句教程.doc"和"经典SQL语句大全.doc"两份文档,旨在帮助初学者掌握SQL的基础知识和常见操作。 1. **SQL基础**: - ...
SQL基础学习代码,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database ...
Oracle Database 11g:SQL 基础I 学生指南第1 册 学完本课后,应能完成下列工作: • 阐述本课程的目标 • 列出Oracle Database 11g 的功能 • 从理论和实际实施两方面讨论关系数据库 • 描述RDBMS 和对象关系数据库...
**PL/SQL基础** PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库中的一个重要组成部分,它结合了SQL的查询能力与结构化编程语言的控制结构,用于开发在Oracle环境中运行的数据库应用...