欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle数据库基础知识讲解

程序员文章站 2022-04-23 17:21:11
Sql:结构查询语句,被称为”第四代计算机语言“。根据功能共分以下数据库对象 Table:表,是数据库存储的基本单元。用户的所有数据都存储在表中 Vie...

Sql:结构查询语句,被称为”第四代计算机语言“。根据功能共分以下数据库对象

Table:表,是数据库存储的基本单元。用户的所有数据都存储在表中

View:视图,是将一个或多个表通过逻辑关系连接起来,按照需求对存储在表中的数据进行查询并显示

Sequence:序列,是数据库中生成表中唯一数字值的数据库对象。序列生成器会自动生成顺序递增的序列号,可以帮助生成唯一的主键值。可以在插入对象时作为参数传入

注:currval的第一次使用必须在nextval之后

Index:索引,是数据库中用于加速访问的一种数据库对象(具体怎么用不清楚)

Synonym:同义词,是对象的别名。在操作数据时,使用同义词可以简化对对象的查询,如果需要对一个表在同一级中多次访问,则必须通过同义词进行区分

Program unit:程序单元,包括procedure、package、function,是数据库中的一些子程序

Sql语言: Sql的语言可根据其操作的对象分为四大类

一、select语句。数据查询语言,用于检索数据库的语言,是Sql语言中最为复杂和灵活的语言

二、DML(Data ManipulationLanguage):数据操作语言,用于操作数据库中的数据。包括insert、delete、update三条语句

三、DDL(Data DefinitionLanguage):数据定义语言,用于操作数据库对象。包括create、drop、alter三条指令

注:DDL指令会自动提交事务,使用delete删除的表无法使用flashback恢复

四、DCL(Data Control Language)数据控制语言,用于操作权限,包括grant、invoke两条指令

注:DCL指令会自动提交事务

Sql命令执行顺序

From子句---à where子句---à select子句---àgroup by 子句-----à select子句---àorder by子句----àselect子句

注:Group by子句中不能使用别名

Select语句:数据查询语言

语法:select [distinct] *,column[alias],… from table;

特点:是Sql语言中最复杂、最灵活的语言

编写sql命令

1.一条sql语句可以是一行或多行,分号作为一条语句的结束

2.单词不可分割和缩写

3.大小写不敏感

4.select子句中可以指定多列,列名之间使用逗号隔开,查询结果的显示顺序与列名的排列顺序相同

列格式设置:

语法:column {column} [option]

columncol_name format|justify|clear|heading …

format可设置数据的显示格式,an可控制显示宽度为n,9或0可控制数字显示精度和格式

justify后面可跟left、right、center,设置数据显示是的对齐方式

clear可清除格式

heading后跟别名,给列起别名

起别名:起别名有两种方式

1. 使用columncol_name heading 别名。使用范围为清除格式或退出用户前,不可保存

2. 跟在列名后面,使用空格分开。适用范围在该语句执行顺序之后的语句,只能在该条命令里使用,不可保存

去重:distinct

在select子句增加distinct关键字可去除重复结果,保证结果或结果对唯一

字符串拼接:

字符串拼接有两种方式

1. 使用||进行拼接

2. 使用concat(字符串1,字符串2)函数进行拼接

两种拼接方式的效果一致

排序

语法:order by column1[,column2,…]asc|desc;

在oracle中不写排序方式,则默认为升序排序

限制条件

Between … and … 闭区间

通配符

% 代表0到多个任意字符

_ 代表1个任意字符

Like

匹配字符串为like后面的字符串

转义字符

转义字符可为任意字符,但在使用后必须使用escape进行声明

亚表 dual

单行单列的特殊表

作用:将单行单列的数据进行输出

单行函数

字符函数

Lower 大写转小写

Upper 小写转大写

initcap 将每一个单词首字母大写,其他小写

Concat 作用和||一样

Substr 字符串截取函数

Length 求字符串长度

空值函数

Nvl、Nvl2

数学函数

Round、trunc、mod

日期函数

Sysdate 系统当前时间

add_months 返回给定日期+n个月后的那个日期

next_day 返回即将来临的星期几的日期

months_between两个日期相差多少个月

Round(date,’option’)

trunc(date,’option’)

Option:day、month、year。可将时间转换为对应的格式

多表查询

1. 等值连接,使用=、like

2. 不等值连接,使用!=、 <>、 ^=、>、<、between … and …

3. 外连接

a) 左外连接,在右边使用(+)

b) 右外连接,在左边使用(+)

c) 全连接,使用full[outer] join table on

注:(+)加在较少的一方

4. 自然连接,连接表的副本

5. 并集,使用union连接两个查询出来的表,得出两个表的全部数据,重复行只显示一次,unionall则会显示重复行

6. 差集,使用minus连接两个查询出来的表,然后用第一个结果减去第二个结果

7. 交集,使用intersect连接,得出两个表的相同数据

8. 伪劣,使用rownum,是oracle中特有的,用于记录表中的数据行

分组函数

avg:求平均值

count:计算记录总数

Max:求最大值

Min:求最小值

sum:求和

STDDEV:标准差

VARIANCE:方差

注:分组函数使用的数据,必须先进行分组。在select子句中的非组函数参数的列必须使用group by进行分组,反之,则不用

运行时可变参数

定义一个变量,让用户输入值

accept name PROMPT '提示信息:'

在语句中定义是,使用&标注

清除这个变量

undefine name;

ER图中的符号

#:唯一

*:非空

O:随意

虚线:may be

实线:must be

| :将另一端的主键作为该端的一个外键

实体间的关系

1 -------- 1:外键可维护在任意一端

1 -------- n:外键需要维护在多的一端,原因:避免大量的冗余数据

M --------n:将两个表的主键对应维护在桥表中

键的分类

主键:可唯一标识一行数据的属性,作为主键的列的值必须非空并且唯一

外键:该键是外表的主键。当引用了外表的主键时,外表为主表,该表为从表。在做修改时,需要注意级联的问题

联合主键:两个或两个以上的列组合在一起,作为该表的主键。当表中的某一列不能唯一标识该表时,需要引用联合主键进行唯一标识

联合外键:引用的外键是主表的联合主键或联合唯一

三范式:

范式一:表中的列值是单值

范式二:表必须有主键

范式三:表中列与列之间没有依赖关系

表的命名规则

1) 以字母开头;

2) 长度限制为30个字符;

3) 内容组成为:A-Z, a-z, 0-9, _, $和#;

4) 不能为Oracle的保留字;

5) 对象名不能重名;

语法:create table table_name(

列的完整定义,

……

列的完整定义,

[表级约束1,

表级约束…..]

);

约束

主键:primary key,一个表只能有一个主键

外键:

列级约束:在列的定义后面跟references table(column)

表级约束:foreign key(column)references table(column)

非空:not null.注:not null不能作为表级约束

唯一:unique

检查:check(条件)

 

DDL语言

Create drop alter

Create:可以创建数据库对象

建表:create tabletable_name(列的完整定义,表级约束);

建视图:create [orreplace] [force] view view_name

As

Select子句

[with read only][with check option];

建序列:create sequenceseq_name

maxvaluev|nomaxvalue

minvaluev|nominvalue

start with v

incrememt byv

cycle|nocycle

cachev|nocache;

创建用户

Create user user_nameidentified by password

授权

Grant power [on object] touser;

收权

Invoke power [on object] touser

drop:

删除用户

Drop user user_name [cascade]

删除数据库对象

Drop object_type object_name[cascade];

Alter:

修改数据库对象

Alter object_type object_nameadd|modify|drop option;

修改约束

Alter table table_name add constraintconstraint_name constraint;