oracle数据库基础知识讲解

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;

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐