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状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背景图层和普通图层的区别_008Photoshop四赞图层(图层样式)

图层过滤器图层滤镜,比如你只想看到像素图层,选择像素图层过滤器,这时就只能看到背景图层了(在图层面板),如果再点击像素图层过滤器,其他图层又出现了。选中调整图层过滤器,就只能看到图层结构里的调整图层…

洛谷P3628 [APIO2010]特别行动队(斜率优化)

传送门 先写出转移方程$$dp[i]max\{dp[j]a*(sum[i]-sum[j])^2b*(sum[i]-sum[j])c\}$$ 假设$j$比$k$更优,则有$$dp[j]a*(sum[i]-sum[j])^2b*(sum[i]-sum[j])c>dp[k]a*(sum[i]-sum[k])^2b*(sum[i]-sum[k])c$$ 展开,并消去同类项之后得$$dp[j]-2*a*sum[i…

实例6:python

#斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。 #F0 0 (n0) #F1 1 (n1) #Fn F[n-1] Fn-2 #!/usr/bin/python -- coding: UTF-8 -- #def fib(…

简述oracle的主要数据库对象,Oracle数据库数据对象分析

Oracle数据库数据对象分析Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。表和视图Oracle中表是数据存储的基本结构。…

vue devtools面板没有显示_vue 基础入门(四)

vue 基础入门(四)1.全局配置Vue.config 是一个对象,包含 Vue 的全局配置。可以在启动应用之前修改下列 property:1.1 silent类型:boolean默认值:false用法:Vue.config.silent true❝取消 Vue 所有的日志与警告。❞1.2…

SpaceVim 语言模块 lua

原文连接: https://spacevim.org/cn/layers/lang/lua/ 模块简介启用模块快捷键 交互式编程运行当前脚本模块简介 这一模块为在 SpaceVim 中进行 lua 开发提供了支持,包括代码补全、语法检查、代码格式化、交互式编程以及调试等特性。 启用模块 可通过在配…

python之def

1.def (define的前三个字母)是一个关键字,用来声明函数。 2.def 声明函数的格式为: def 函数名(参数1,参数2,…,参数n): 函数体 例如: def fib(n): print ‘n ’, n if n…

php pdo 00000,php-即使有错误,PDO错误代码也总是00000

我使用PHP 7.1.23测试了以下代码:$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,true);$sth $pdo->prepare(select now() and this is a bad sql where a - b from c);if ($sth false) {echo "error on prepare()\n";print_r($pdo->errorInf…

vue 生命周期_Vue生命周期小白看了都会的

最近一直在学习Vue,而vue生命周期是我们不可能绕开的一个很核心的知识点,今天来简单的梳理一下大概的内容。一、钩子函数在一开始学习的时候,总有钩子函数这个名词冒出来,而且在vue官网文档中也频繁出现,也相信给很多初…

Mac/Ubuntu 上编译、搭建 WebRtc/licode 服务器

1.下代码 git clone https://github.com/ging/licode.git cd licode 2.安装依赖 2.1 配置ubuntu开发环境: 2.1.1 安装C/C开发环境 1. sudo apt-get -y install build-essential //安装主要编译工具 gcc, g, make 2. sudo apt-get -y install autoconf automake1.9 3…

实例7:python

#将一个列表的数据复制到另一个列表中。 #程序分析:使用列表[:]。 #程序源代码: #!/usr/bin/python -- coding: UTF-8 -- #a [1, 2, 3] #b a[:] #print (b) #import copy #a [1, 2, 3] #bcopy.copy(a) #print(b) #[1, 2, 3] #使用 Python3 的参…

Python3 字典 copy()方法

描述 Python 字典 copy() 函数返回一个字典的浅复制。 语法 copy()方法语法: dict.copy() 参数 • NA。 返回值 返回一个字典的浅复制。 实例 以下实例展示了 copy()函数的使用方法: 实例 #!/usr/bin/python3 dict1 {‘Name’: ‘Runoob’, ‘Age’: 7,…

php为什么搜不到字段,php-通过多个字段搜索.有时一个领域,有时不止一个领域

我有搜索表.在这里多个领域.有时我将使用一个字段提交表单,有时将使用两个字段提交表单,有时使用多个字段值.if (isset($_POST[search])) {$projectName $_POST[pName];$clientId $_POST[s_by_clientName];$departmentId $_POST[s_by_department];$statusName $_POST[s_by_…

python语言key_Python语言学习:字典常用的方法

1. 增加:字典[key]value(不存在的key和value)info{stu1101:TengLan,stu1102:LuoZe,stu1103:XiaoZe}info[stu1104]crystalprint(info) #输出结果:{stu1101: TengLan, stu1102: LuoZe, stu1103: XiaoZe, stu1104: crystal}2. 修改:字典[key]val…

python 运算及注释

""" 上面的两行代码,在2.0的python中,若想执行含有汉字的代码,是必不可少的,且两行代码必写在单个py文件最上方,之间不可有任何字节。且该两行代码,可在pycharm,设置中,直接设置…

实例8:python

#输出 9*9 乘法口诀表。 #!/usr/bin/python -- coding: UTF-8 -- #for i in range(1, 10): print for j in range(1, i1): print ("%d*%d%d" % (i, j, i*j),) #!/usr/bin/python3 i0 j0 while i<9: i1 while j<9: j1 print(j,“x”,i,"",i*j,…

php gd gif动画,我可以检测使用PHP和GD的animationGIF?

在imagecreatefromgif()函数的PHP手册页中有一个简短的代码片段&#xff0c;应该是你所需要的&#xff1a;由ZeBadger提供的图片评论&#xff03;59787在search同样问题的解决scheme时&#xff0c;我注意到php.net网站对Davide和Kris所指代码的后续操作&#xff0c;但根据作者的…

ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

浅谈为什么很多蓝牙模块厂家选择nRF52832&#xff1f;现在蓝牙低功耗(BLE)SOC作为新一代蓝牙&#xff0c;以其低功耗的优势&#xff0c;正凸显出强大的市场竞争力&#xff0c;而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片更是受到大家的欢迎。Nordic是一家无晶圆厂半导体公…

实例9:python

#题目&#xff1a;暂停一秒输出。 #程序分析&#xff1a;使用 time 模块的 sleep() 函数 #!/usr/bin/python -- coding: UTF-8 -- import time l[1,2,3,4] for i in range(len(l)): print (l[i]) time.sleep(5) # 暂停一秒输出

php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...

如果对织梦系统做过二次开发或学深入研究过的话&#xff0c;一定会知道在我们做织梦二次开发时&#xff0c;一般会把php文件以及对应的模板文件起的名字&#xff0c;除了扩展名外&#xff0c;其它都一样&#xff0c;这是织梦文件起名的一个特点。例如&#xff0c;index_body.ph…