oracle sql-1,Oracle – Oracle SQL(1)
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)相关推荐
- java实体属性对应mysql和SQL Server 和Oracle 数据类型对应
1:Java数据类型与MySql数据类型对照表 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 ...
- cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪
1.SQL_Plus自动跟踪: set autotrace on explain // 显示执行计划 set autotrace traceonly explain // 仅显示执行 ...
- SQL Server 与 ORACLE 的区别
sql server 与 oracle的区别: DBMS 数据库管理系统 1.数据类型不同. sql server 的数据类型:int ,smallint ,char,varchar,nc ...
- Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...
- 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 ...
- oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...
本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...
- 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.2 内部函数与操作
2.2 内部函数与操作 实际上,在Oracle内部,执行计划的每一个数据源(Row Source)操作都与一个内部函数(qer<*>)相对应,而操作对象.谓词条件都是这些函数的参数.这些函 ...
- oracle空格太多,Oracle Sql字符串多余空格处理方法初记
(一)问题提出: 不知道大家有没有遇到过这样的情况,同样的sql在pl/sql下面执行正常,但是拷贝到表字段中,点击提交的时候老是会报ORA-01480: STR 绑定值的结尾 Null错误,如图: ...
- 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法
如果在X64系统下我们想利用 MS SQL 的DTS导入导出 Oracle 数据,由 oracle 不支持路径中包含")",会引发 ORA-06413:连接未打开错误 解决的办法很 ...
- oracle pl sql注意问题,Oracle PL/SQL编写PL/SQL代码的注意事项
(1)几个值得注意的关键字(2)变量常量赋值注意: ---------------------------------------------------------------------[@mor ...
最新文章
- go语言 rlock() defer runlock()_Go并发编程之美-读写锁
- Python Module_openpyxl_处理Excel表格
- avcodec_decode_video2 第三个参数 got_picture_ptr 的含义
- 求某类型变量的大小(是否使用sizeof)
- GPS服务端解析程序编写日记
- ajax 获取java数据_如何使用Ajax从服务端获取数据
- Android studio导入第三方库的各种方法和eclipse的导入方式对比
- 学习nginx 下面只是简单的配置文件
- [深度学习TF2][RNN-NPL数据预处理] -Tokenizer函数
- java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...
- Amadeus Pro for Mac(多轨音频编辑软件) 支持M1芯片
- SEO关键词研究工具列表
- 使用Python下载电视剧(二):下载ts片段
- springboot集成webservice接口
- C. Balanced Stone Heaps和P2440 木材加工
- 题目 1040: 实数的打印
- java你好代码_Java 基础——1 向Java世界说你好
- AXD 调试经验,使用及问题
- 性价比高的骨传导耳机,国产top1品牌推荐
- 关于word插入题注“题注或页码中不含章节号”错误提示
热门文章
- discuz中又拍云在ie8,chrome22下不能上传的问题
- WebConfig Authorization 节点
- wps流程图怎么不能添加文字_windows不能访问共享文件夹,不能添加共享打印机时,怎么解决呢...
- 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
- SpringBoot打包成Docker镜像
- 03-Flutter移动电商实战-底部导航栏制作
- 修改oracle SGA,以提高oracle性能
- flex上传文件代码
- charts引入icon图片_v-charts 踩坑之路
- tftp ping 不通。无法访问目标主机