Oracle学习记录二——SQL基础

来源:互联网 发布:mac 无法开机无法充电 编辑:程序博客网 时间:2024/05/22 13:49

  数据库的学习基础都是SQL语句,虽然不同数据库会有自己的函数,自己的语言特色,但是核心的SQL语句都是相似的。SQL语句的总结可能会比较多,可能会分成几个博客来总结。本次将介绍Oracle的数据类型和SQL语句的分类。

Oracle基本数据类型介绍

  不同版本的Oracle支持的数据类型有些变化但大致一样。下面列举出10g版本所有的数据类型:
  

字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes null VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) null LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作 RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等 LONG RAW 可变长度的二进制数据 最大长度2G 同上 BLOB 二进制数据 最大长度4G CLOB 字符数据 最大长度4G NCLOB 根据字符集而定的字符数据 最大长度4G BFILE 存放在数据库外的二进制数据 最大长度4G ROWID 数据表中记录的唯一行号 10 bytes **.*.*格式,*为0或1 NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes NUMBER(P,S) 数字类型 P为有效位数,S为小数位 DECIMAL(P,S) 数字类型 P为有效位数,S为小数位 INTEGER 整数类型 小的整数 FLOAT 浮点数类型 NUMBER(38) 双精度 REAL 实数类型 NUMBER(63) 精度更高

引用自Oracle知识库.chm


  而所有的数据类型分为四大类:字符型、数字型、日期型和其他类型。
  
   1. 字符型
   字符型在Oracle11g中有varchar2,char,nchar,nvarchar2和long五种。
  
   nchar、nvarchar两个现在还没接触到,日后添加。
  
   long类型一般存放图像/视频文件。
  
   char、varchar、varchar2三者一般优先选择varchar2,对比如下:
  
   char:该类型是定长,没达到的长度添加空格。查找的时候会比较麻烦,比如char(10),存一个‘张三’,查找时必须用‘张三%’
  
   varchar:目前与varchar2没区别。其实varchar并不是Oracle提供的数据类型,前面表格里面也没有提到varchar类型,因为varchar是标准Sql提供的数据类型,Oracle只是兼容它(应该所有数据库都会兼容他)。
  
   varchar2:varchar2是变长类型,也是Oracle独有的数据类型,和varchar的区别仅仅是如果未来标准sql修改了varchar类型,Oracle不一定会提供varchar的兼容但一定对varchar2向上、向下有兼容。
  

    2. 数字类型
  数字型常用的有number型和float型(int也只是兼容的类型),这里介绍一下number类型:
  
  number(p,s),p表示该数的有效位数,s表示该数的小数位数。比如:
  

    1234.456  number6,2)则是1234.45   0.001234  number2,4)则是0.0012   123456.7  number5,-1)则是123450   123456.7  number5),超出精度,报错

    3.日期类型
    常用的有date和timestamp两种类型。timestamp精确到微秒。插入数据时,date数据除了直接用sysdate(当前时间),其他的都必须用到to_date()函数,比如:

    INSERT INTO TABLE1(BIRTHDAY) VALUES to_date('2017-1-9','yyyy-mm-dd')

    直接插入需要设置的时间。与之相对应的有to_char(),to_number()等。其中to_char(),trunc()可以对时间进行截取。比如根据出生日期获取年龄:
    

    //转化之后是字符串    TO_CHAR(SYSDATE,'YYYY')-TO_CHAR(SBIRTHDAY,'YYYY')    //转化之后是日期,MM-DD初始化为xxxx-1-1    trunc(sysdate,'YYYY')

    4.其他类型
    
    比如大数据类型blob,clob等,主要用于varchar2()装不下时(varchar2上限4000字符)和一些文件、图像、视频的存取。
    


SQL语言分类

  SQL语言本身可以分为四类:
  DDL:定义数据库存储的信息的数据定义语言
     DDL包括对数据库中对象的创建,修改,删除的操作。这些对象有数据库、数据表、视图、索引等。
     
  DML:对数据库表进行操作的数据操纵语言
      DML主要是对数据库中的数据进行增加、删除、修改的操作。
       
  DQL:对数据库表进行检索的数据查询语言
     DQL是对数据库表中的数据进行查询的。
     
  DCL:对数据库中对象进行权限管理的数据控制语言
     DCL是对数据库中的对象权限进行权限设置和取消等操作,只有系统管理员有权限执行这些操作。


1. 数据定义语言

  数据定义语言的关键字主要包括:CREATE、DROP、ALTER。CREATE创建表空间、用户、表见第一次练习总结。这里说一下ALTER语句和DROP语句。
  ALTER后面可接的关键字有4种(暂时接触到的),ADD、MODIFY、RENAM和EDROP,例句如下

//添加列ALTER TABLE STUDENT ADD COLUMNNAME VARCHAR2(100)//修改列数据类型ALTER TABLE STUDENT MODIFY COLUMNNAME NUMBER(2,2)//重令列名ALTER TABLE STUDENT RENAME COLUMN COLUMNNAME TO STUDENT_REMARK//删除列ALTER TABLE STUDENT DROP COLUMN STUDENT_REMARK

ALTER  ADD:用于向表中添加列
ALTER  MODIFY:用来修改表中已经存在的列的信息。
ALTER  DROP COLUMN:删除表中的列,在删除表中的列时经常要加上CASCADECONSTRAINTS,作用是把与该列有关的约束也一并删掉。

DROP语句用来删除一些不需要的表,例句:

DROP TABLE TABLE1

与之相似的关键字还有TRANCATE,作用是清空表中的所有数据,不会删除表,速度远快于DROP。


2. 数据操纵语言及数据查询语言

  对数据库的操纵无非是对数据的增删查改,其中查询也称为数据查询语言。
  
  添加数据:
  关键字INSERT ,列句如下:

  INSERT INTO TABLE_NAME (COLUMN_NAME1,COLUMN_NAME2,...)VALUES (DATA1,DATA2,...);

  除了上述SQL语句可以添加数据,在PL/SQL界面左侧中间栏找到表后——右键编辑数据/输入SELECT * FROM TABLE_NAME FOR DATE.可以在可视化界面上编辑数据。
  
  修改数据
  关键字UPDATE,例句如下:

  UPDATE TABLE_NAME SET COLUMN_NAME1=DATA1,COLUMN_NAME2=DATA2,...[WHERE CONDITION]  

  可视化界面修改数据如上面一条所示。
  
  删除数据
  关键字DELETE,例句如下:

  DELETE FROM TABLE_NAME [WHERE CONDITION];

  和上面一样,没什么好说的。

  查询语句
  关键字SELECT,一般例句如下:

  SELECT COLUMN_NAME1,COLUMN_NAME2,...FROM TABLE_NAME WHERE [CONDITION];

  SELECT 语句多结合ORACLE里面的各种函数一起查询,做一些复杂的查询的时候SELECT语句可以非常复杂,下几篇用来总结SELECT语句。
  


3. 数据控制语言

  主要是对数据使用者赋予和撤销访问数据库的权限的设置,主要包括授予权限要使用的语句GRANT和收回权限的语句REVOKE。
  目前尚未接触到,后续添加。

0 0
原创粉丝点击