Oracle – Oracle SQL(1)

1. 简介

(1) SQL : Structured Query Language,结构化查询语言,专门用于数据存取、数据更新及数据库管理等操作。

(2) Oracle SQL

DDL: Data Define Language

数据定义语言

包括CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME等命令

DML: Data Manipulate Language

数据操纵语言

包括SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAINPLAN、LOCKTABLE等命令

DQL:Data Query Language

数据查询语言

包括基本查询、ORDER BY子句、GROUP BY子句等

TCL: Transaction Control Language

事务控制语言

包括COMMIT、SAVEPOINT、ROLLBACK、SET TRANSACTION命令

DCL: Data Control Language

数据控制语言

包括GRANT、REVOKE等命令

2. SQL基本知识

(1) SQL中的“键”

● 候选码:CANDIDATE KEY,在关系模式R(U)中,K为R的一个属性或者一组属性,若K能唯一标识一个元组,则K为关系模式R的候选码;

● 主键:PRIMARY KEY,表中单个属性或多个属性组合,其值能唯一地标识表中一行记录,主键是候选码集合中的一个元素,只能拥有一个主键;

● 外键:FOREIGN KEY,关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,则称X是R的外部码,也称外键;

3. Oracle SQL

(1)创建表(DDL)

● 语法:

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

(2)创建表约束(DDL)

● 注意:在Oracle中default是一个值,而SQL Server中default是一个约束。大括号表示内容可选。

● 创建主键约束

CREATE TABLEtable_name

(

field_1  field_1_type{CONSTRAINTconstraint_name} PRIMARY KEY,

field_2  field_2_type,

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

ALTER TABLEtable_nameADD CONSTRAINTconstraint_namePRIMARY KEY(field_1);

CREATE TABLEuser_info

(

user_idVARCHAR2(20)PRIMARY KEY,

user_passwdVARCHAR2(20),

state_idNUMBER

);

或者

CREATE TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdVARCHAR2(20),

state_idNUMBER

);

ALTER TABLEuser_infoADDCONSTRAINTpk_userinfoPRIMARY KEY(user_id);

● 创建外键约束

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type{CONSTRAINTconstraint_name} REFERENCESforeign_table_name(field),

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

ALTER TABLEtable_nameADD CONSTRAINTconstraint_nameFOREIGN KEY(foreign_key_field)REFERENCEforeign_table_name(field);

CREATE TABLEstate

(

state_idNUMBER PRIMARY KEY,

state_nameVARCHAR2(20)

);

CREATE TABLEuser_info

(

user_idVARCHAR2(20) PRIMARY KEY,

user_passwdVARCHAR2(20),

state_idNUMBERCONSTRAINTfk_userinfo_stateREFERENCESstate(state_id)

);

或者

CREATE TABLEuser_info

(

user_idVARCHAR2(20) PRIMARY KEY,

user_passwdVARCHAR2(20),

state_idNUMBER

);

ALTER TABLEuser_infoADD CONSTRAINTfk_userinfo_stateFOREIGN KEY(state_id)REFERENCESstate(state_id);

● 创建非空约束

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type{CONSTRAINTconstraint_name}NOT NULL,

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_typeNOT NULL,

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

ALTER TABLEtable_nameMODIFY (field_nameNOT NULL);

CREATE TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdvarchar2(20)CONSTRAINTnotnull_userpasswdNOT NULL,

state_idNUMBER

);

或者

CREATE TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdvarchar2(20),

state_idNUMBER

);

ALTER TABLEuser_infoMODIFY(user_passwdNOT NULL);

● 创建唯一约束

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type{CONSTRAINTconstraint_name}UNIQUE,

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

ALTER TABLEtable_nameADD CONSTRAINTconstraint_nameUNIQUE(field_name);

CREATE TABLEdog

(

dog_idNUMBER,

dog_nameVARCHAR2(20) CONSTRAINTun_dognameUNIQUE

);

或者

CREATE TABLEdog

(

dog_idNUMBER,

dog_nameVARCHAR2(20)

);

ALTER TABLEdogADD CONSTRAINTun_dognameUNIQUE(dog_name);

● 创建检查约束

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type{CONSTRAINTconstraint_name} CHECK(judge_condition),

……

field_n  field_n-type

);

或者

CREATE TABLEtable_name

(

field_1  field_1_type,

field_2  field_2_type,

……

field_n  field_n-type

);

ALTER TABLEtable_nameADD CONSTRAINTconstraint_nameCHECK(judge_condition);

CREATE TABLEpig

(

pig_idNUMBER CONSTRAINTck_pigidCHECK(pig_id>=0),

pig_nameVARCHAR2(20)

);

或者

CREATE TABLEpig

(

pig_idNUMBER,

pig_nameVARCHAR2(20)

);

ALTER TABLEpigADD CONSTRAINTck_pigidCHECK(pig_id>=0);

(3) 删除表(DDL)

DROP TABLEtable_nameCASCADE CONSTRAINTS

说明:如果表t1的外键在表t2中,则删除t2的时候使用DROP TABLE t2

则系统提示:ORA-02449:表中的唯一/主键被外键引用。若使用DROP TABLE t2 CASCADE CONSTRAINTS,则删除t1的外键约束,然后删除t2表;注意此命令不能回滚。

(4) 删除表约束

ALTER TABLEtable_nameDROP CONSTRAINTconstraint_name

(5) 查看表结构

● sqlplus:DESCtable_name

● plsql dev:All objectsèTablesètable_nameè右键查看

(6)修改表

● 表改名:ALTER TABLEsrc_table_nameRENAME TOdst_table_name

● 删除列:ALTER TABLEtable_nameDROP COLUMNcolumn_name;

● 添加列:

ALTER TABLEtable_nameADD

(

field_1  field_1_type field_1_constraint,

field_2  field_2_type field_1_constraint,

……

field_n  field_n-type field_1_constraint

);

● 修改列:类型、大小、默认值、默认空约束

ALTER TABLEtable_nameMODIFY

(

field_1  field_1_type field_1_constraint,

field_2  field_2_type field_1_constraint,

……

field_n  field_n-type field_1_constraint

);

● 修改列:添加约束和删除约束

参见上文。

● 修改列:关闭约束和打开约束

不想删除约束但又不想他现在其作用,这时可以采用DISABLE来完成此工作;我们还可以采用CASCADE关键字来把相互引用的约束一起级联关闭;可以通过ENABLE关键点来开启约束,使得约束有效

ALTER TABLEtable_nameDISABLECONSTRAINTconstraint_nameCASCADE;

ALTER TABLEtable_nameENABLECONSTRAINTconstraint_nameCASCADE;

● 修改列:列名修改

ALTER TABLEtable_nameRENAME COLUMNsrc_column_nameTOdst_column_name;

(7) 给表加注释

● 给表加注释

COMMENT ON TABLEtable_nameIS ‘comment_string’

● 给列加注释

COMMENT ON COLUMNtable_name.column_nameIS‘comment_string’;

(8)TRANCATE表

TRUNCATE TABLEtable_name;

●TRANCATE和DELETE只删除数据不删除表的结构(定义)对快速、无LOG记录的方法,它等同于不含WHERE子句的DELETE语句,至少表面上看来功能上相同,但TRANCATETABLE的速度更快,并且使用更少的SYSTEM RESOURCE和TRANCATIONLOG RESOURCE。

●TRANCATE语句所使用的LOG TABLESPACE较少。DELETE语句每删除一行RECORD,都需要在LOG中为每一个所删除的行进行记录,但是TRANCATE是通过释放用于STORE DATA的数据PAGE来删除数据。

●TRANCATE语句所使用的LOCK较少。DELETE语句始终锁定TABLE中的各行,而TRANCATE始终锁定TABLE本身和PAGE本身,不是TABLE中的各行。

●TRANCATE语句通常不会在所删除的TABLE中留有空页。DELETE语句执行后,TABLE中仍然会保留空页,而且必须至少使用一个排他表锁,LCK_M_X,才能释放堆中的空表,否则执行完DELETE操作后,表或堆中会包含相当多的空页或空表,而且对于INDEX,DELETE操作同样会留下一些空页。而TRANCATE操作后,只是会在DB而不是TABLE中保留一些相关的信息。

●TRANCATE语句不可回滚、触发器中没有TRUNCATE,即这个语句无法触发任何操作

●TRANCATE和DELETE只删除数据不删除表的结构(定义),DROP语句将删除表的结构被依赖的约束(CONSTRAINT),触发器(TRIGGER),索引(INDEX);依赖于该表的存储过程/函数将保留,但是变为INVALID状态

oracle sql-1,Oracle – Oracle SQL(1)相关推荐

  1. java实体属性对应mysql和SQL Server 和Oracle 数据类型对应

    1:Java数据类型与MySql数据类型对照表 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 ...

  2. cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪

    1.SQL_Plus自动跟踪: set autotrace on explain          // 显示执行计划 set autotrace traceonly explain // 仅显示执行 ...

  3. SQL Server 与 ORACLE 的区别

    sql server 与  oracle的区别:    DBMS 数据库管理系统 1.数据类型不同.   sql server 的数据类型:int ,smallint ,char,varchar,nc ...

  4. Oracle 性能相关常用脚本(SQL)

    在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...

  5. oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别

    1)您不能在PL / SQL块内执行直接DDL. BEGIN CREATE TABLE TEST AS ( SELECT * FROM FND_USER ); EXCEPTION WHEN OTHER ...

  6. oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...

    本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...

  7. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.2 内部函数与操作

    2.2 内部函数与操作 实际上,在Oracle内部,执行计划的每一个数据源(Row Source)操作都与一个内部函数(qer<*>)相对应,而操作对象.谓词条件都是这些函数的参数.这些函 ...

  8. oracle空格太多,Oracle Sql字符串多余空格处理方法初记

    (一)问题提出: 不知道大家有没有遇到过这样的情况,同样的sql在pl/sql下面执行正常,但是拷贝到表字段中,点击提交的时候老是会报ORA-01480: STR 绑定值的结尾 Null错误,如图: ...

  9. 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法

    如果在X64系统下我们想利用 MS SQL 的DTS导入导出 Oracle 数据,由 oracle 不支持路径中包含")",会引发 ORA-06413:连接未打开错误 解决的办法很 ...

  10. oracle pl sql注意问题,Oracle PL/SQL编写PL/SQL代码的注意事项

    (1)几个值得注意的关键字(2)变量常量赋值注意: ---------------------------------------------------------------------[@mor ...

最新文章

  1. go语言 rlock() defer runlock()_Go并发编程之美-读写锁
  2. Python Module_openpyxl_处理Excel表格
  3. avcodec_decode_video2 第三个参数 got_picture_ptr 的含义
  4. 求某类型变量的大小(是否使用sizeof)
  5. GPS服务端解析程序编写日记
  6. ajax 获取java数据_如何使用Ajax从服务端获取数据
  7. Android studio导入第三方库的各种方法和eclipse的导入方式对比
  8. 学习nginx 下面只是简单的配置文件
  9. [深度学习TF2][RNN-NPL数据预处理] -Tokenizer函数
  10. java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...
  11. Amadeus Pro for Mac(多轨音频编辑软件) 支持M1芯片
  12. SEO关键词研究工具列表
  13. 使用Python下载电视剧(二):下载ts片段
  14. springboot集成webservice接口
  15. C. Balanced Stone Heaps和P2440 木材加工
  16. 题目 1040: 实数的打印
  17. java你好代码_Java 基础——1 向Java世界说你好
  18. AXD 调试经验,使用及问题
  19. 性价比高的骨传导耳机,国产top1品牌推荐
  20. 关于word插入题注“题注或页码中不含章节号”错误提示

热门文章

  1. discuz中又拍云在ie8,chrome22下不能上传的问题
  2. WebConfig Authorization 节点
  3. wps流程图怎么不能添加文字_windows不能访问共享文件夹,不能添加共享打印机时,怎么解决呢...
  4. 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
  5. SpringBoot打包成Docker镜像
  6. 03-Flutter移动电商实战-底部导航栏制作
  7. 修改oracle SGA,以提高oracle性能
  8. flex上传文件代码
  9. charts引入icon图片_v-charts 踩坑之路
  10. tftp ping 不通。无法访问目标主机