zoukankan      html  css  js  c++  java
  • Oracle数据库中sql基础

    一、关系数据库的一些概念
      
      1、主键的值一般不可以改变
      
      2、外键:指向另一个表或本表的主键或唯一键的字段。外键的值一定要和某一主键相同,或者为空。
      
      3、数据库对像:表,视图,序列,索引,同义词,程序(进程,函数,sql和pl/sql数据)4、sql command 类别
      
      data retrieval数据检索:select
      data manipulationlanguage (DML)数据操作语言:insert,update,delete
      data definition language (DDL)数据定义语言:create,alter,drop,rename,truncate
      transaction control事务控制:commit,rollback,savepoint
      data control language(DCL)数据控制语言:grant,revoke
      DCL 和DDL命令的执行会导致一次隐式提交,之前未提交的操作(包括DML 命令)都会提交写入日志文件,并在适当地时候写入数据文件。
      
      二、SQL的语法
      
      1) 连接号:||
      
      2) 把两个字符连接起来
      eg:select game_card_type_id||name from game_card_type;
      
      3) select distinct dept_id,title from emp: 对多个字段的唯一
      
      4) order by desc(降序)
      order by asc(升序)
      
      5) where column is (not) null
      
      6) like ‘_a%’  _表示一个字符。%表示多少字符
      like ‘%x\_y%’ escape ‘\’:显示包括x_y的字符
      
      7) where table1.column(+)=table2.column
      place the operator on the side of the join where there is no value to join to.
      
      8) 联接类型:
      equijoin:等式查询
      non_equijoin:不等式查询
      self:自己和自己建立关联
      out join:where a.column=b.column(+)
      可以用的操作符是:’=’,’and’,不可以用’or’,’in’
      
      9) COUNT 函数所用的列包含空值时,空值行被忽略。
      
      10) where 后的in any all 的区别
      in :等于子查询的任何一个数
      any :与子查询的每一个值相比
      只要比其中一个大(小)就可以了
      all:与子查询的所有值相比要比所有的的都大(小)
      !=ALL作用跟NOT IN 一样
      
      三、SQL*PLUS的环境(可以在glogin.sql中定义初始参数)
      
      1) START 命令用以执行一个已储存的文件,等同于@
      
      2) SAVE命令用以创建一个文件
      
      3) EDIT命令用以调用编辑器编辑已存文件的内容
      
      4) CHANGE 是SQL*Plus的编辑命令,用于在当前一行把旧文段转换为新文段
      
      5) DEL 命令用以删除文本中一行或多行文字
      
      6) SPOOL命令用以把查询结果储存在一个已有文件中,注意与SAVE区别
      
      7) GET命令用以一个文件的内容写进一个SQL块中
      
      8) SPOOL OUT命令用以把文件的结果发送到系统打印机。
      
      9) set pause off/on:设置页面的滚动。按enter看下一页。
      
      10) PAGESIZE:指定每页显示的行的数值,
      
      11) LONG:设置LONG类型数据显示的最大宽度
      
      12) FEEDBACK:设置查询返回记录的最大值
      
      13) DESCRIBE :用于显示表和视图的结构,同义词,或指定函数和过程的详述。
      
      14) Timing:可以看到语句执行的时间
      
      15) Autotrace:可以看到sql的执行计划,sysdba执行/home/oracle/product/9.2.0/sqlplus/admin/plustrce.sql脚本,而且必须把plustrace角色赋给执行用户。执行用户必须运行/home/oracle/product/9.2.0/rdbms/admin/utlxplan.sql
      
      16) 在各种数据类型中,只有NUMBER数据类型的默认显示是靠右对齐的,而CHAR, DATE和VARCHAR2是靠左对齐的
      
      17) QUIT 是SQL*PLUS命令,用以结束一个SQL*PLUS的对话。
      
      18) ttitle:
      ttitle ‘selina’ 设select 的结果的抬头为selina
      tti :显示ttitle的状态
      tti off/on
      btitle ‘end’ 设结果的尾部
      
      19) Column:
      
      a) column name heading ‘名字’format a15
      
      b) column id justify left format 999999
      
      c) column start_date format a9 null ‘not hired’//当字段为空的时候则显示成not hired
      
      d) column :显示所有的column设置
      
      e) column columnname:显示某一个字段的设置
      
      f) clear column :清除所有column设置
      
      g) column columnname clear:清除某一字段的设置
      
      h) 以上的column可用col代替.clear可以用cle代替
      
      13)定义变量
      
      用&:由用户输入变量值,此变量可以存在于where后,做为整个查询语句的变量。也可以在order by 后。做为字段的变量。也可以放在select 后,做为字段或表达式的变量。
      
      用&&:如果多个地方引用此变量。。只用输入一次
      
      SQL> SELECT empno, ename, job, &&column_name
      FROM emp
      ORDER BY &column_name;
      
      accept:由用户输入变量值
      accept 变量名 datatype prompt ‘告诉用户需要输入的信息:’ hide
      引用的时候:&变名
      define(undefined):一开始就定义变量值
      
      四、函数:
      
      1、字符函数
      
      lower:把字符转成小写
      upper:把字符转成大写
      initcap:把单词的第一个字母变成大写
      concat:连接字符 concat(‘good’,’morning’)=goodmoring
      SUBSTR (column\expression, m[,n]) 用于对字符串进行截取操作,从第m个位置开始,把其后的连续n个字符的部分截取下来,如果m位负值,则从末尾开始计算。
      eg:substr(‘string’,1,3) =str
      substr(‘string’-3,3)=ing
      INSTR('String', 'r')=3
      LPAD(sal,10,'*') =*******sal
      length: 用于返回表达式中的字符数,注意返回的是NUMBER。
      NVL(expression1, expression2)
      NVL 函数用以把一个空值转换为一个实值,如:
      NVL(100/quantity, 0) ,要是quantity为空值,该函数返回一个0。
      如果两个字段类型不同必须进行转换。
      Min():返回最小值。。如果是字符。。A<a
      
      2、数学函数
      
      round:四舍五入
      round(2.566,2)=2.27
      round(45,-1)=50
      trunc: 截断
      trunc(2.566,2)=2.56
      trunc(45,-1)=40
      mod:
      mod(m,n):m-n*flood(m/n)   file://flood是取整数
      
      3、日期函数:
      
      a) months_between(date1,date2):算date1和date2之间的月的数量,可以是小数可以是负数
      months_between(’01-sep-95’,’11-jan-94’)=1.9774194
      
      b) add_months(date,n):为date加上N个月,N只可以是整数
      
      c) next_date(date,’char’):查找date的下一个星期N
      next_date(’01-sep-95’,’FRIDAY’)=08-SEP-95
      
      d) last_day(date):查找date月的最后一天。
      
      e) rount(date):把日期四舍五入
      
      f) rount(25-MAY-95’,’MONTH’)=01-JUN-95
      
      g) rount(25-MAY-95’,’YEAR’)=01-JAN-95
      
      h) trunc(date):把日期截断
      
      i) trunc (25-MAY-95’,’MONTH’)=01-MAY-95
      
      j) trunc (25-MAY-95’,’YEAR’)=01-JAN-95
      
      k) 日期中RR与YY的区别,RR格式对日期作类似于舍入的操作,YY格式对日期作类似于截取的操作
      RR  YY
      1995 27-oct-95 1995 1995
      1995 27-oct-17 2017 1917
      2001 27-oct-17 2017 2017
      2001 27-oct-95 1995 2095
      用法:select to_char(sysdate, 'YY') from dual;
      select to_char(to_date('95-11-27', 'RR-MM-DD'), 'YYYY-MM-DD') from dual;
      select to_char(to_date('95-11-27', 'YY-MM-DD'), 'YYYY-MM-DD') from dual;
      
      4、转换函数
      TO_CHAR:
      TO_CHAR(date,’fmt’):fm前缀用来去除首尾的空字符或0
      TO_CHAR(total,’fm$999999’)
      
      如果想转成$0.25,那就要写成fm$9999990.99
      
      可以把日期转换成字符
      TO_CHAR(log_time,’MM/YY’)
      TO_CHAR(lot_time,’fmdd’’of;’’mm yyyy’)
      
      具体格式如下
      HH24:MI:SS AM-----------15:24:32 pm
      DD’’of’’MONTH-----------12 of MAY
      Ddspth------------------------fourteenth
      Ddsp--------------------------fourteen
      ddth---------------------------4th
      YYYY-----------------------1978
      MM-----------------------------12
      MONTH-------------------------MAY
      
      5、group 函数avg,count,max,min,stddev,sum,variance
      
      五、数据字典
      
      用户表:由用户创建,包含用户的内容
      
      数据字典:由系统建立,包含数据库的信息
      
      前缀:
      USER_ :由用户创建,显示用户拥有的所有对象。
      
      ALL_ :由受权的用户访问, 用户可以访问的对象名。
      
      DBA_ :由受了DBA权限的人访问,显示数据库的所有对象。
      
      V$ :由受了DBA权限的人访问,显示数据字典数据库服务器性能信息。通常是DBA用于显示系统的统计表和动态性能表。
      
      数据字典
      
      DICTIONARY数据字典提供用户可以访问的数据字典表和视图的描述。
      USER_OBJECTS显示用户拥有的对象。
      USER_VIEWS显示用户拥有的视图。
      USER_TABLES显示用户拥有的表。
      ALL_TABLES显示用户可以访问的表。
      ALL_VIEWS显示用户可以访问的视图。
      USER_CATALOG显示用户拥有的所有表,视图,同义词和序列。
      USER_CONS_COLUMNS显示带约束的列。
      DBA_CONS_COLUMNS显示数据库里的所有表,视图和同义词。
      USER_TAB_PRIVS_MADE:本用户赋给别的用户赋予权限的表
      USER_TAB_PRIVS_RECD:其他用户给本用户赋予权限的表
      USER_COL_PRIVS_MADE:本用户赋给别的用户赋予权限的字段
      USER_COL_PRIVS_RECD:其他用户给本用户赋予权限的字段
      ROLE_SYS_PRIVS:有什么系统权限赋给role
      ROLE_TAB_PRIVS:有什么关于表的权限赋给role
      USER_ROLE_PRIVS:role和用户的对应表
      
      常用的表
      
      user_objects:用户对象表(存储用户的所有对象)存储以下的类型的数据
      Selina Sql>select distinct object_type from user_objects;
      INDEX
      LOB
      PACKAGE
      PACKAGE BODY
      PROCEDURE
      SEQUENCE
      SYNONYM
      TABLE
      TRIGGER
      VIEW
      User_catalog:用户类表,存储以下的类型的数据
      Selina Sql>select distinct table_type from user_catalog;
      SEQUENCE
      SYNONYM
      TABLE
      VIEW
  • 相关阅读:
    tiff遥感图像空间坐标转换(工作太忙,仅仅作为记录)
    get_beijing_roadnetwork(工作太忙,仅仅作为记录)
    xml_result_2_taos_db(工作太忙,仅仅作为记录)
    Hadoop HDFS原理详解(系统性回顾)
    基于Mapreduce数据排序
    Hadoop-Mapreduce-英文单词计数(Brief版本-超详细解读)
    Hadoop-Mapreduce-英文单词计数
    常见数据类型-HadoopDataType(仅仅作为记录)
    GeoServer 一键发布 Raster 数据服务(分片上传、GDAL)
    GeoServer 安装、跨域
  • 原文地址:https://www.cnblogs.com/top5/p/1571985.html
Copyright © 2011-2022 走看看