学习笔记_oracle——基础操作

来源:互联网 发布:虎牙直播软件 编辑:程序博客网 时间:2024/06/05 02:59

数据库
 Create Datebade命令
  1、打开配置和移植工具-database Coffigyration Assistant
  2、选择创建数据库--依照工具提示操作

 数据库存储结构
  物理的存储结构:显示的存储单元
   数据文件:表,索引数据
   日志文件:记录对数据库修改的信息
   控制文件:记录物理结构的二进制文件
   
  逻辑的存储结构:数据概念上的组织
   是数据库存储数据的逻辑单元
    SYSTEM  数据库内部表和数据字典
    SYSAUX  常用样例用户对象
    撤销表空间 用于存储撤销信息的空间
    USER  用户表空间
    Temp  临时数据的表空间
   划分,一般采取一个用户一个表空间,或者一个项目一个表空间
  表空间与数据文件的关系
   一个数据库包括多个逻辑存储单元即是表空间,每个表空间包含多个多个数据文件

SQL语言
 PL/SQL 过程化查询语言
 T-SQL

 分类
  数据定义语言(DDL) 定义和管理数据库中的各种对象
   CREATE创建对象 ALTER修改对象 DEOP删除对象
  数据操作语言(DML) 操作数据库对象所包含的得数据
   INSERT UPDATE DELETE
  数据库控制语言(DCL)
   

SQL
 创建表空间
  create teablespace shop_dev_daata(空间名)
  datafile 'shop_dev_data.DBF','shop.DBF'(储存文件名,分割)
  size 100M(大小) autoextend on(是on否off自动扩展);

 创建用户
  create user<用户名> identiffied by <密码>
  default tablespace <表空间名>
  temporary tablespace <临时表空间名>
  quota <空间大小> on <空间名称>  

 用户授权
  方式,直接授权和通过角色授权*推荐
  权限: 系统权限 使用系统功能
     create session 连接到数据库 
     create table 创建表
     create view 创建视图
     create sequence 创建序列
   对象权限 对对象操作的权限
  角色 权限的集合
   预定角色 CONNECT  有连接到数据库的权限
     RESOURCE 有创建表、触发器、过程等的权限
     DBA  所有系统权限
  授权
   GRANT 权限 TO 角色;
   
 字段类型
  文本类型
   char 定长字符数据,最大2000字节。补空格
   varchar 变长字符数据,最大4000字节
   long 大字符数据(被clob代替)
  数值类型
   number  整形或浮点型
   binary_iterger PL/SQL中,慢于inrefer
   binary_double 双精度64位浮点数
   number子类型 float,real,double
  日期类型
   date  7个字节固定长度,分别存储世纪,年。。。秒
   timetamp 储存年月日小时分,包含时区
   SYSDATE函数用于返回当前时间
  大对象数据类型
   clob  大量文本
   blob二进制对象,比如图片


 表操作
  创建表
   CREATE TABLE student(
    表名 字段名 (长度),
    表名 字段名 (长度),
    表名 字段名 (长度)...
   )
 
 数据完整性
  完整性约束
   实体完整性约束  保证每行数据表示一个实体
     实现 主键约束,唯一约束
     主键
     alter table 表名 add constraint 约束名
     primary key (字段名)
     唯一约束
     alter table 表名 add constraint 约束名
     unique key (字段名)
   域完整性约束  验证输入有效性
     实现 限制数据类型,检查约束,输入格式,默认值,非空约束等
     检查约束
     alter table 表名 add constraint 约束名
     check (age > 0)
   引用完整性约束
     实现 外键
     外键
     alter table 子表名 add constraint 约束名
     foreign key (字表外键) peferences 主表 (主表主键)
     
   自定义完整性约束
     存储过程,触发器
 
 数据操作
  插入
   单行 insert into 表名 [字段列表] values [值列表]
   多行 insert into 表名 (select字句)
   [注] '' 表示单引号

  修改
   单行 update 表名 set 字段 = 属性,字段 = 属性... where 条件
   
  查询
   select 字段名/* from 表名 where 条件
   模糊查询 like 'str' 符合str的 其中_一个字段,%多个字符
     between and  a 到b之间 between 100 and 400,
     in ('a','b') 在a,b之中 
   别名
    表名列名后加别名 table as a
   
   排序 
    order by 字段名 [ASC|DESC]升序/降序
   去重
    distinct 去重
  删除
   delete from 表名 where 条件
   [假删除]用一个字段标志删除还不是即删除
 
 函数
  字符函数
   concat函数 concat(a , b);  返回 ab
     类似 a || b
   nvl函数  concat(a , b); a为null时返回b,反之返回a
  数字函数
   teunc  teunc(col , n ) col为截取的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
   round  teunc(col , n ) col为四舍五入的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
  日期函数
   sysdate  返回系统时间
   extract  获取部分日期 extract(year from sysdate) 返回年
  转换函数
   to_char() 转换为字符串 对日期to_char(date) to_char(date , '时间格式')
   to_date() 转化为date to_date(char)  to_date(char , '时间格式')
  聚合函数
   分组 group by 字段名
   函数 sum(字段名) 对当前字段求和,有分组时求各组求和
    count(字段名) 求字段总行数,有分组时求各组求行数
    max(字段名) 求字段最大值,有分组时求各组求最大值

高级SQL
 子查询
  对于单一返回值的子查询 
   操作符  =,>,>=,<,<=,!=
  对于多行返回的走查询
   操作符  in,not in,any, all, exists
  条件的值写作查询的结果
  
 伪列 
  ROWNUM,对符合条件的记录的序列号
  关于rownum使用的经验
   在select执行时,先执行where,后执行order by
   所以在使用时,先对where的结果集排序,把结果当做虚拟表再用rownum做条件处理
   rownum不能带表名使用
  rownum的固化
   即把rownum取别名,同时,把含有固化的rownum的返回集做虚拟表子查询
 表连接的分类
 内连接  仅包含那些满足连接条件的记录行
  等值连接 使用=运算符比较连接的值
  非等值连接 使用初等号外的列植连接查询
    (>,<,!=,like,in,between)
 外连接  
  左外连接 只限制右表的行,不限制左表。即左边记录即使不满足连接条件也显示,以null填充
  右外连接 只限制左表的行,不限制右表。即右边记录即使不满足连接条件也显示,以null填充
  全外连接 两个表均不限制
 自连接
  
 
 连表查询
  内连接 等值连接
   select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名=value
   非等值连接
   select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名>value
  外连接 左外查询/右外
   select 表名.字段名 from 左表 LEFT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
   select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名(+))] and 查询条件
   右外查询/右外
   select 表名.字段名 from 左表 RIGHT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
   select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名(+) = 表名.字段名)] and 查询条件

集合查询
 交集 INTERSECT
 并集 UNION\UNION ALL
 补集 MINUS   

 


 

0 0