您的位置:首页 > 数据库 > Oracle

oracle基础知识

2017-10-25 10:58 204 查看
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.      跟在列名后面,使用空格分开。适用范围在该语句执行顺序之后的语句,只
4000
能在该条命令里使用,不可保存

去重: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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: