Oracle基础知识

Oracle基础知识

(支持SQL 92标准,基于C/S系统结构)

特点: 1.多用户,大事物量的食物处理 2.数据安全性和完整性 3.分布式数据处理 4.可移植性 ————————————————— 用户权限 sys: oracle超级用户 ssytem : orace的默认管理员 —————————————————- 基本概念: 1.数据库: 磁盘上存储数据的集合,物理上表现为数据文件,日志文件,控制文件,逻辑上以表空间的行式存在。 2.全局数据库名:用于区分一个数据库的标识,由数据库名称和域名构成,使数据库的命名在整个网络环境中唯一。 3.数据库实例:每个启动的数据库都对应的一个数据库实例,由此访问其中的数据。 (通过内存共享运行状态的一组服务器< 数据库为磁盘上的文件>) 4.表空间:每个oracle数据库都是由若干个表空间构成的。 一个发表空间可以由多个数据文件构成,但一个数据文件只能属于一个表空间。【属于数据库的逻辑结构】 每个数据库都有一个默认的SYSTEM的表空间 5.数据文件:扩展名是.dbf ,用于存储数据库中的数据。数据库表和数据文件不存在一对一的关系。 6.控制文件: 扩展名是.ctl, 是个二进制文件。存储数据文件和日志文件的名称,位置,是数据库启动及运行时所必须的文件。 一个数据库至少要有一个以上的控制文件,Oracle11改默认包含3个控制文件,各个控制文件的内容相同。 7.日志文件 : 扩展名是.log , 记录数据更改的所有信息。提供了一种回复机制。是成组使用的。多个日志文件组之间循环使用。 ———————————————————- 模式:数据库对象的集合(表,索引,也成模式对象) 。每个数据库用户有一个模式。 ———————————————————- 3个常用的数据库服务: 1.OracleServiceSID服务 Oracle数据库服务 默认是启动的 2.OracleOraDb11g_home1TNSListener服务 监听器服务 只有在数据库需要远程访问的时候才需要 3.OracleDBConsoleSID服务 数据库控制台服务 采用浏览器方式打开,用于Oracle企业管理器的程序— 注: 使用自带的SQL*PLUS进行访问时,只需启动第一个服务,并且不能使用@,否则会被视为本地连接。

Sys,System用户都是Oracle的系统用户,而Scott用户是Oracle的测试账户 ——————————————————-

连接数据库: 使用SQL PLUS方式:system/
orcl@orclDB 其中:system:数据库已有的用户名 orcl: 此用户名对应的密码 @分割用户名密码和网络服务名 【本地连接则不需要】 orclDB: 网络服务名,本地服务名, 使用PL/SQL Developer 输入用户名,密码,数据库,连接Normal 普通用户,sysOper 数据库操作员,sysDBA 数据库管理员

——————————————————————————————————- ——————————————————————————————————-

数据类型

1.字符数据类型 >CHAR 长度是1-2000字节 用于定长的字符串 未指明大小时默认占用1字节 >VARCHAR2 1 -4000字节 变长 可以节省磁盘空间 >NCHAR 用法同char,开发需要国际化是使用 区别: NCHAR用于存储Unicode字符集类型,即双字节字符数据

2.数值数据类型 >NUMBER 可以存储正。负,零,定点数,和精度为38位的浮点数 NUMBER(p,s) 【p: 为度,数字的有效位数,s: 为范围,表示小数点右边的数字位数(-84,+127)之间】 规则: 首先精确到小数点右边s位,并四舍五入,如果精确后的有效位数<= p,在正确,否则报错

3.日期时间数据类型(用于存储日期值和时间值) >DATE 采用7字节固定长度, 每个字节分别存储世纪,年,月,日,时,分,秒 范围:公元前4712年1月1日到公元9999年12月31日 SYSDATE函数功能返回的是当前的日期和时间 >TIMESTAMP 用于存储日期的年,月,日以及时间的时,分,秒,秒值精确到小数点后6位,同时包含时区信息 SYSTIMESTAMP 函数的功能返回的是当前日期,时间和时区 注: 如果查询出来的日期格式有问题,可能是字符集出了问题,也可能是未设置系统环境变量, 1.可以采用 ALTER session SET nls_date_formaat = ‘YYYY-MM-DD HH24:MI:SS’ ; 只对当前窗口有效,如果不想每次都设置,就修改系统的环境变量,nls_date_format

4 LOB数据类型 也称为大数据类型, 可以存储多大4G的非结构化信息,允许对数据进行高效,随机,分段的访问 可以是内部的,也可以是外部的,取决于它相对于数据库的位置 修改方式可以使用 SQL数据库操纵语言来完成 ,也可通过PL/SQL提供的DBMS_LOB来完成

>CLOB 字符LOB,能够存储单字节字符数据和多字节字符数据,主要用于存储非结构化的XML文档 >BLOB 二进制BLOB , 可以存储较大的二进制对象如图像,视频剪辑和声音等。 >BFILE 二进制文件 , 能够将二进制文件存储到数据库外部的操作系统文件中,BFILE列存储一个BFILE定位器,支持文件最大为4G >NCLOB 用于存储大大的NCHAR字符数据,同时支持固定宽度字符和可变宽度的字符(Unicode字符数据) ,大小不大于4G

注: Long类型和LOB类型都可以存储大数据

5 Oracle中伪列 伪列就像Oracle中的一个表列,但并未存储在表中,伪列可从表中查询,但不能插入,更新或删除它们的值 >ROWID 数据库中每一行都有一个行地址,返回该行地址,可用其来定位表中的一行 通常情况下可以唯一的标识数据库中的一行 用途: 1. 以最快的方式访问表中的一行 2. 能显示表中的行驶如何存储的 3. 可以作为表中行的唯一标识

>ROWNUM 对于一个查询返回的每一行,ROWNUM伪列返回一个数值代表行的次序。 通过使用ROWNUM伪列,可以限制查询返回的行数

——————————————————————————————————- ——————————————————————————————————-


SQL语言简介 —高级的结构化查询语言

> 数据定义语言 DDL (CREATE, ALTER , TRUNCATE 截断, DROP) > 数据操纵语言 DML (INSERT, SELECT , DELETE , UPDATE) 注意: 1.建表时,表名的最大长度为30字符 2.oracle中也有VARCHAR类型,但建议使用VARCHAR2 ,该数据类型是oracle标准数据类型 3.TRUNCATE 只删除表 中的记录而不删除表结构 ,使用该命令将删除表中所有行且不记录日志。 与DELETE命令相比较节省资源,执行速度快 Oracle SQLServer 列数 254 1024 行大小 无限制 8060字节,加16字节指向每个text或image列 最大行数 无限制 无限制 表命名规则 [schema.]tablename [[[server.]database.]owner.]tanlename schema: 对象的所有者,即模式的名称 4. DISTINCT 筛除结果集中内容全部相同的行,仅保留一行 5.列别名中指定包含有特殊字符的列标题,要使用双引号括起来 6.利用现有的表创建新表,可以把现有表中的记录复制到新表中,也可复制选定的列或只复制结构而不复制内容 create table test as select 8 * from student where 1= 2(1不等于2条件不成立,所以只留表而没有数据) 7. 查看表中的行数时,执行语句: select count(*) from stu — 效率低 select count(1) from stu — 效率高 8. 取出stuname,stuage不重复的记录 select stuname,stuage from stu group by stuname,stuage having (count(stuname||stuage) <2);

9. 删除stuname,stuage重复的行(保留一行) delete from stu where rowid not in ( select max(rowid) from stu group by stuname,stuage having (count(stuname||stuage)>1) union select max(rowid) from stu group by stuname,stuage having (count(stuname||stuage) =1)

9. 查看当前用户所有数据量大于100万的表 select table_name from user_all_tables a where a.num_rows > 1000000 其中user_all_tables 为系统提供的数据视图,可通过该视图获得当前用户表的描述 > 事物控制语言 TCL (COMMIT , SAVEPOINT保存点 ,ROLLBACK) oracle中的TCL有以下部分组成: 1) COMMIT : 提交事务,即把事务对数据库的修改进行永久的保存 2 ) ROLLBACK :回滚事务,取消对数据库中所做的任何修改 3 ) SAVEPOINT :在事物中创建存储点 4) ROLLBACKTO : 将事务回滚到存储点 ——————————————————————– 1。 开启事务: 事务在上一次事务结束之后,数据“第一次”被修改是自动开启 2。 结束事务: a. 数据被提交(发出从commit命令,执行DDL,DCL后自动提交,与oracle分离) b.数据被撤销 (发出rollback命令,服务进程异常结束,DBA停止会话) 3. 执行了n个sql语句,如果要提交,只能提交所有的sql语句,不能局部提交。 4. 如果要回滚,可以利用事务保存点来做局部回滚 > 数据控制语言 DCL (GRANT , REVOKE回收) 数据控制语言为用户提供权限控制命令。数据库表的所有者对这些对象拥有控制权。

—————————————————————————————————— ——————————————————————————————————


SQL操作符 1.算术操作符 用于查询,算数表达式有NUMBER数据类型的列名,数值常量和连接它们的算数操作符组成【+ – * /】 2.比较操作符 用于比较两个表达式的值,【= != <= >= BETWEEN…AND IN(与列表中的列值相匹配) LIKE(匹配字符模式) ISNULL】 3.逻辑操作符 用于组合多个比较运算的结果以生成一个或真或假的结果 【AND OR NOT】 4.集合操作符 将连个查询的结果组合成一个结果集 >UNION (联合) 并集,返回两个查询选定的所有不重复的行。 也可以对联合查询的结果进行排序,使用ORDER BY >UNIONALL (联合所有) 合并两个查询选定的所有的行,包括重复的行。 >INTERSECT (交集) 只返回连个查询都有的行。 >MINUS (减集) 只返回第一个查询选定而未被第二个查询选中的行,在第一个查询的结果中排除 查询结果中出现的行。 使用集合操作符连接起来的select语句需符合规则: 1.由其连接的各个查询具有相同列书,且对应列的数据类型必须兼容 2.这种查询不用包含有LONG类型的列,列标题来自第一个select语句 5.连接操作符 || 用于将两个或多个字符串合并成一个字符串,或者将字符串与一个数值合并在一起

—————————————————————————————————— ——————————————————————————————————
SQL函数 大致分为 >单行函数 : 字符函数,日期函数,数字函数,转换函数及其他函数 >聚合函数(分组函数) 基于数据库表的多行进行运算 >分析函数:对一个查询结果中的每个分组进行运算,但每个分组对应的结果可以有多个

转换函数: 进行数据类型的转换 TO_CHAR(d |n [, fmt]) d 日期,n 数字,fmt对应格式 常被用作格式化显示日期,将日期以fmt指定的格式转换为VARCHAR2类型的值,未指定fmt 则按默认类型转换。 格式化数值 eg: SELECT TO_CHAR(SYSDATE,’YYYY”年”fmMM”月”fmDD”日” HH24:MI:SS’ ) FROM dual “fm”格式掩码,避免空格填充和数字零填充,不使用”fm”,月份会自动补0 TO_DATE (CHAR ,[,fmt]) 将CHAR 或VACHAR数据类型转换成为日期数据类型 用于将字符串类型的日期数据转换为日期类型的数据 TO_NUMBER 将包含数字的字符串转换为NUMBER数据类型,从而可以对该数据执行算术运算,一般不用这样做,Orace可对数字字符串进行隐式转换。

注: Oracle中没有SQL Server中的CONVERT函数,只有TO_CHAR 和TO_DATE

其他函数(除去字符函数,日期函数,数字函数,转换函数外) >NVL(exp1,exp2) 如果exp1=NULL,返回exp2的值,否则为exp1 >NVL(exp1,exp2,exp3) 如果 exp1=NULL ,返回exp3的值,否则返回exp2 >DECODE(value , if1, then1,fi2,then2 , …,else) 如果value值为if1,返回then1,。。。否则返回else 注:任何数和NULL值进行+运算时,结果为NULL

分析函数 :类似于聚合函数 语法: 函数名([参数]) OVER ([ 分区子句 PARTITION BY] [排序子句 ORDER BY]) 排序子句对每个分区进行排序 RANK ,DENSE_RANK , ROW_NUMBER 函数用于为每天条记录产生一个从1到n开始的自然数,n值可能小于等于记录的总数,3个函数的唯一区别在于遇到相同数据时的排名策略 ROW_NUMBER 返回1个唯一值,遇到相同数据时,排名按照记录及中的记录顺序依次递增 DENSE_RANK 返回1个唯一值,遇到相同数据时,所有相同数据的排名是相同的 RANK 返回1个唯一值,遇到相同数据时,所有相同数据的排名相同,同时会在最后一条相同记录和下一条不同记录之间空出排名

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

相关推荐