熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle數據庫中sql基礎

2013-11-13 16:02:48  來源: Oracle 

  關系數據庫的一些概念
  
  主鍵的值一般不可以改變
  
  外鍵指向另一個表或本表的主鍵或唯一鍵的字段外鍵的值一定要和某一主鍵相同或者為空
  
  數據庫對像視圖序列索引同義詞程序(進程函數sql和pl/sql數據)sql command 類別
  
  data retrieval數據檢索:select
  data manipulationlanguage (DML)數據操作語言:insertupdatedelete
  data definition language (DDL)數據定義語言createalterdroprenametruncate
  transaction control事務控制:commitrollbacksavepoint
  data control language(DCL)數據控制語言grantrevoke
  DCL 和DDL命令的執行會導致一次隱式提交之前未提交的操作(包括DML 命令)都會提交寫入日志文件並在適當地時候寫入數據文件
  
  SQL的語法
  
  ) 連接號||
  
  ) 把兩個字符連接起來
  eg:select game_card_type_id||name from game_card_type;
  
  ) select distinct dept_idtitle from emp 對多個字段的唯一
  
  ) order by desc(降序)
  order by asc(升序)
  
  ) where column is (not) null
  
  ) like _a%  _表示一個字符%表示多少字符
  like %x\_y% escape \:顯示包括x_y的字符
  
  ) where lumn(+)=lumn
  place the operator on the side of the join where there is no value to join to
  
  ) 聯接類型:
  equijoin:等式查詢
  non_equijoin:不等式查詢
  self:自己和自己建立關聯
  out join:where lumn=lumn(+)
  可以用的操作符是=and不可以用orin
  
  ) COUNT 函數所用的列包含空值時空值行被忽略
  
  ) where 後的in any all 的區別
  in 等於子查詢的任何一個數
  any 與子查詢的每一個值相比
  只要比其中一個大(小)就可以了
  all:與子查詢的所有值相比要比所有的的都大(小)
  !=ALL作用跟NOT IN 一樣
  
  SQL*PLUS的環境(可以在gloginsql中定義初始參數)
  
  ) START 命令用以執行一個已儲存的文件等同於@
  
  ) SAVE命令用以創建一個文件
  
  ) EDIT命令用以調用編輯器編輯已存文件的內容
  
  ) CHANGE 是SQL*Plus的編輯命令用於在當前一行把舊文段轉換為新文段
  
  ) DEL 命令用以刪除文本中一行或多行文字
  
  ) SPOOL命令用以把查詢結果儲存在一個已有文件中注意與SAVE區別
  
  ) GET命令用以一個文件的內容寫進一個SQL塊中
  
  ) SPOOL OUT命令用以把文件的結果發送到系統打印機
  
  ) set pause off/on:設置頁面的滾動按enter看下一頁
  
  ) PAGESIZE指定每頁顯示的行的數值
  
  ) LONG設置LONG類型數據顯示的最大寬度
  
  ) FEEDBACK設置查詢返回記錄的最大值
  
  ) DESCRIBE :用於顯示表和視圖的結構同義詞或指定函數和過程的詳述
  
  ) Timing可以看到語句執行的時間
  
  ) Autotrace可以看到sql的執行計劃sysdba執行/home/oracle/product//sqlplus/admin/plustrcesql腳本而且必須把plustrace角色賦給執行用戶執行用戶必須運行/home/oracle/product//rdbms/admin/utlxplansql
  
  ) 在各種數據類型中只有NUMBER數據類型的默認顯示是靠右對齊的而CHAR DATE和VARCHAR是靠左對齊的
  
  ) QUIT 是SQL*PLUS命令用以結束一個SQL*PLUS的對話
  
  ) ttitle:
  ttitle selina 設select 的結果的抬頭為selina
  tti 顯示ttitle的狀態
  tti off/on
  btitle end 設結果的尾部
  
  ) Column
  
  a) column name heading 名字format a
  
  b) column id justify left format
  
  c) column start_date format a null not hired//當字段為空的時候則顯示成not hired
  
  d) column :顯示所有的column設置
  
  e) column columnname:顯示某一個字段的設置
  
  f) clear column :清除所有column設置
  
  g) column columnname clear:清除某一字段的設置
  
  h) 以上的column可用col代替clear可以用cle代替
  
  )定義變量
  
  用&由用戶輸入變量值此變量可以存在於where後做為整個查詢語句的變量也可以在order by 後做為字段的變量也可以放在select 後做為字段或表達式的變量
  
  用&&如果多個地方引用此變量只用輸入一次
  
  SQL> SELECT empno ename job &&column_name
  FROM emp
  ORDER BY &column_name;
  
  accept由用戶輸入變量值
  accept 變量名 datatype prompt 告訴用戶需要輸入的信息 hide
  引用的時候&變名
  define(undefined)一開始就定義變量值
  
  函數
  
  字符函數
  
  lower:把字符轉成小寫
  upper:把字符轉成大寫
  initcap:把單詞的第一個字母變成大寫
  concat:連接字符 concat(goodmorning)=goodmoring
  SUBSTR (column\expression m[n]) 用於對字符串進行截取操作從第m個位置開始把其後的連續n個字符的部分截取下來如果m位負值則從末尾開始計算
  eg:substr(string) =str
  substr(string)=ing
  INSTR(String r)=
  LPAD(sal*) =*******sal
  length: 用於返回表達式中的字符數注意返回的是NUMBER
  NVL(expression expression)
  NVL 函數用以把一個空值轉換為一個實值
  NVL(/quantity ) 要是quantity為空值該函數返回一個
  如果兩個字段類型不同必須進行轉換
  Min():返回最小值如果是字符A<a
  
  數學函數
  
  round:四捨五入
  round()=
  round()=
  trunc: 截斷
  trunc()=
  trunc()=
  mod:
  mod(mn):mn*flood(m/n)   file://flood是取整數
  
  日期函數:
  
  a) months_between(datedate)算date和date之間的月的數量可以是小數可以是負數
  months_between(sepjan)=
  
  b) add_months(daten)為date加上N個月N只可以是整數
  
  c) next_date(datechar)查找date的下一個星期N
  next_date(sepFRIDAY)=SEP
  
  d) last_day(date):查找date月的最後一天
  
  e) rount(date)把日期四捨五入
  
  f) rount(MAYMONTH)=JUN
  
  g) rount(MAYYEAR)=JAN
  
  h) trunc(date)把日期截斷
  
  i) trunc (MAYMONTH)=MAY
  
  j) trunc (MAYYEAR)=JAN
  
  k) 日期中RR與YY的區別RR格式對日期作類似於捨入的操作YY格式對日期作類似於截取的操作
  RR  YY
   oct
   oct
   oct
   oct
  用法select to_char(sysdate YY) from dual;
  select to_char(to_date( RRMMDD) YYYYMMDD) from dual;
  select to_char(to_date( YYMMDD) YYYYMMDD) from dual;
  
  轉換函數
  TO_CHAR
  TO_CHAR(datefmt)fm前綴用來去除首尾的空字符或
  TO_CHAR(totalfm$)
  
  如果想轉成$那就要寫成fm$
  
  可以把日期轉換成字符
  TO_CHAR(log_timeMM/YY)
  TO_CHAR(lot_timefmddof;mm yyyy)
  
  具體格式如下
  HH:MI:SS AM:: pm
  DDofMONTH of MAY
  Ddspthfourteenth
  Ddspfourteen
  ddthth
  YYYY
  MM
  MONTHMAY
  
  group 函數avgcountmaxminstddevsumvariance
  
  數據字典
  
  用戶表由用戶創建包含用戶的內容
  
  數據字典由系統建立包含數據庫的信息
  
  前綴:
  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
From:http://tw.wingwit.com/Article/program/Oracle/201311/17719.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.