戀戀冬季

          有你的冬天很溫暖

          與SQL語言有關

          SQL 語言

          SQL Structure Query Language 結構化查詢語言)標準的關系數據庫語言, 用于建立、儲存、修改、檢索和管理數據庫中的信息。

          SQL 語言的組成
              
          數據定義語言 DDL 用來創建、刪除或者修改數據模式對象的結構。一般包括: CREATE,DROP,ALTER
              
          數據操作語言( DML ): 用來操作數據。包括: UPDATE,INSERT,DELETE
              
          數據查詢語言:查詢數據: SELECT

          三、進入 SQL*PLUS ORACLE 自帶的 PL/SQL 使用器)
             
          進入 ORACLE 目錄中 BIN/PLUS33W(5.0) 或者 BIN/PLUS80W(6.0)
             
          編輯、運行,   在命令苻后輸入 SQL 命令, 如果上一個 sql 輸入有問題,鍵入 ed 進行編輯

          四、表
              1.
          創建表(創建表用 CREATE TABLE 語句):        
                  CREATE TABLE <TABLE_NAME>(
                    Column_name1 Datetype1 [Constraint_Type]

                 
          ,Column_name2 Datatype2 [Constraint_Type]
                 
          ,
                 
          ,[CONSTRAINT Constraint_Name1 Constraint_Type (column_name) USING INDEX]

          )

              /
               Constraint_Type 有以下幾種類型
                 
          PRIMARY KEY(column_name)- 主鍵約束
                     FOREIGN KEY(column_name) REFERENCES Table_Name(Colunm)-
          外鍵約束
                     UNIQUE KEY (column_name)-
          唯一鍵約束  
              DateType 一般是 ORACLE 可以支持的數據類型比較常用的有:
                  A.
          NUMBER
                  B.VARCHAR(n)
                  C.VARCHAR2(n)
                  D.LONG
                  E.DATE
                  F.CHAR(n)
                  G.INTGER
                  例子: 創建一個工人信息表, GRID,XM,XB,CSRQ  和一個工人工資表,包括 GRID,SZBM( 所在部門 ) GZ,RQ  其中工人信息表是主表,工人工資表是從表
                 
          CREATE TABLE GR_XX(

             GRID  VARCHAR2(10)

            ,GRXM  VARCHAR2(50)  NOT NULL

            ,XB    VARCHAR2(2)   NOT NULL

            ,CSRQ  DATE

            ,CONSTRAINT GR_XX$_GRID PRIMARY KEY (GRID) USING INDEX

            )

              /
                  CREATE TABLE GR_GZ(

             GRID  VARCHAR2(10)

            ,SZBM  VARCHAR2(10)

            ,GZ    NUMBER(10,2)

            ,RQ    DATE

            ,CONSTRAINT GR_GZ$_GRID FOREIGN KEY (GRID) REFERENCES GR_XX(GRID)

            ,CONSTRAINT  GR_GZ$_GRID_RQ UNIQUE (GRID,RQ)

            )

              /
              2.
          對表插入數據
                 
          插入一條記錄
                      INSERT INTO Table_Name [(column_name1,Column_name2,...)] VALUES(value1,value2,...);
                      
          例子:向工人信息表中插入數據
                      Insert into gr_xx (grid,grxm,xb,csrq) values (‘001’,’xjf’,’
          ’,SYSDATE);
                      Insert into gr_gz values(‘001’,’008’,560.92);
                 
          插入多條記錄
                      INSERT INTO Table_Name1 [(column_name1,Column_Name2,...)]
              3.
          修改表  
                   UPDATE Table_Name SET column1=val1,column2=val2,… WHERE …
                  
          例子: update gr_gz set gz=80000 where grid='sw'or grid='dn';
              4.
          刪除數據
                  DELETE FROM TABLE_NAME WHERE ...
              5.
          提交數據
                  COMMIT--
          提交
                  ROLLBACK--
          回滾
                 
          例子:主表和從表需要同時更新數據時,需要更新兩條 sql 語句,為避免數據庫中的垃圾數據,當一條記錄失敗,即回滾。
              6.
          刪除表
                  DROP TABLE TABLE_NAME;
                  DELETE TABLE TABLE_NAME;
          刪記錄  
             
          7. 修改表結構
                 
          增加列
                      ALTER TABLE TABLE_NAME ADD COLUMN_NAME DATATYPE ;
                      alter table gr_gz add sl varchar(4)
                  
          刪除列
                      ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME ;
                      alter table gr_gz  drop column sl;
                      
          刪除列時,該列不能有數據。

               修改列
                      ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DATATYPE;
                      alter table gr_gz modify sl varcher2(10)
                     
          注意:修改列時,可以將已有類型轉為新得類型,也可以擴大或者縮小原來得數據類型。當將已有類型轉為新得類型時,表中 此字段不能有數,擴大可以不受影響,縮小時,表中得數據大小不能超過修改后得大小。
                  
          虛表
                      SELECT SYSDATE FROM DUAL; 
                      select 5*7 from dual;
          五、視圖(由一個或者多個表建的視圖)
              1.
          創建視圖
                  CREATE OR REPLACE VIEW VIEW_NAME AS

          SELECT COLUMN1,COLUMN2,… FROM TABLE_NAME1 A, TABLE_NAME2 …  
              2.
          刪除視圖
                 
          DROP VIEW VIEW_NAME
               
               例子:創建一個視圖,可以查出工人的姓名和工人的工資
                  create or replace view v_gz as
                  select a.grid.a.xm,b.gz 
                  from gr_xx a,gr_gz b
                  where a.grid=b.grid
          六、數據查詢
                  
          一般使用 select 語句進行查詢
                
          基本結構:
                 SELECT COLUMN1,COLUMN2,
             
                 FROM TABLE_NAME
                       [WHERE CONDTION ]
                       [GROUP BY COLUMN]
                       [HAVING CONDITION]

               [ORDER BY COLUMN]
              1.
          查詢所有得列
                  SELECT * FROM TABLE_NAME [WHERE CONDTION]
                 
          例子:查詢工人信息表中 grid 0001 的所有列的信息
                  select * from gr_xx where grid='0001'
              2.
          查詢指定的列
                  SELECT COLUMN1,COLUMN2,.. FROM TABLE_NAME [WHERE CONDITION]
                  
          例子: select grid,grxm from gr_xx where grid = ‘0001’ ;  
              3.
          用被選擇的列的別名來指定顯示選擇結果時的列名
                  SELECT COLUMN1 BYNAME1,COLUMN2 BYNAME2 FROM TABLE_NAME [WHERE]
                  select grid,grxm,grgz from gr_xx where grid='0001';
              4. select 語句中使用表達式
                 
          SELECT EXPRESSION FROM TABLE_NAME [WHERE ]
                  select cgdz,300+100 from cg_xx ;

              5.distinct 查關鍵字,消除冗余行 , 統計
                  SELECT DISTINCT(COLUMN) BYNAME FROM TABLE_NAME [WHERE CONDITION]
                 
          例子:如果有兩個記錄的姓氏字段皆包含 Smith ,則下列 SQL 語句只返回包含 Smith 的記錄
                  select distinct Smith from employees;
                 
          如果省略 DISTINCT ,則查詢將返回兩個包含 Smith 的記錄
              6.
          where 子句
                  where
          子句中常用的比較運算符 :<, >, <> , = ,!=,<= , >=
                 
          常用的關系運算符 :in(val1,val2,…),between val1 and val2,like ‘%tin%’ 百分號表示零個或任意多個字符 _ 表示任意一個字符
                  select * from gr_xx where grid in (‘0001’,’0002’);
                  select * from gr_xx where csrq between ’01-jan-1960’ and sysdate
                  select * from gr_xx where grxm like ‘%y%’ ;
                 
          組合查詢條件 :and ,or ,not
                  select * from gr_xx where csrq > 'june-01-1980' and xb='
          ';
                  select * from gr_xx where csrq > 'june-01-1980' or xb='
          ';
                  select * from gr_xx where grid not in('0001','0002');
              7.order by
          排序子句
                 
          按照定義字段的順序顯示查詢結果
                  Select * from gr_gz order by gz;
                  Asc
          正序排列(由低到高)   Desc 倒序排列
                  select * from gr_gz order by gz desc;
              8.Group by having
          分組函數
                 
          分組函數包括: max,min,avg,sum,conunt
                  having
          where 的區別就在于 where 是執行前判斷條件,而 having 則是在執行查詢后判斷條件 ;group by 后只能用 having 而不能用 where
                  select grid,count(gz) from gr_gz
                  group by grid
          grid 相同的分成一組
                  having grid = ‘yang’;
          取出的結果中包含 grid='yang'          
                  select  xm , count(*) from gr_xx group by xm having count(*)>1 ;
          取出有相同姓名的人
              9.
          查詢的并 ( union ) 、交 (intersect) 、差 (minus) 操作
                 
          union 去掉重復記錄, union all 全部保留 ( 按照缺省規定,使用 UNION 運算時不返回重復的記錄;然而,可以包含 ALL 謂詞來確保返回所有的記錄 )
                  select grid from gr_xx where xb=’ ’  intersect select grid from gr_gz where gz > 400 ;
              10.
          連接查詢
                 
          利用兩個表的相關列之間的比較關系,控制個表中的行的組合。從多個表中查詢數據  
                  A.
          等值連接
                  select a.grid,a.xm,b.gz from gr_xx a gr_gz b where a.grid=b.grid;
                  B.
          非等值連接
                  select a.grid,a.xm,b.gz from gr_xx a gr_gz b where a.grid='0001'and b.gz>'2000';
                  C.
          自連接查詢:與本表進行連接查詢
              select a.grid from gr_xx a,gr_xx b  where a.grid=b.xm;
                  CREATE TABLE GR_jl(
                  GRID
                  ,MGR
                  )
                  /
                  select a.grid,b.grid from gr_jl a, gr_jl b where a.mgr = b.grid ;
                  D.外連接:使用后,可以返回兩個表中相匹配的行,(+)跟在從表的列后。沒有匹配的數據為NULL
              select a.id, b.id, from dept a, emp b;
                  a.id     b.id
                  1         2
                  2         2
                  3         4
                  where a.id(+) = b.id
                  1         2
                  2         2
                             4
                  where a.id = b.id(+)
                  1         2
                  2         2
                  3
              11. ORACLE 中的偽列
              ROWNUM ,ROWID 每個表中都有的列
              Select * from gr_xx where rownum < 10 ;
              12.嵌套查詢:在select語句中,還存在另一個select語句,叫嵌套查詢
              Select * from gr_xx
                  Where grid in ( select grid from gr_gz where gz >300 );
                  exists 的應用
              Select count(1) from dual where exists (select 1 from Gr_xx where grid = ‘yang’);
              13.||連接符
              select 'time is '||sysdate from dual;
          七、序列發生器
            1.創建
              create sequence a start with 10000 ;
              2.使用
              currval
                  nextval
                  select a.currval from dual;
                 

           






           

          posted on 2006-12-07 16:01 戀戀冬季 閱讀(686) 評論(0)  編輯  收藏 所屬分類: 數據庫


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 胶州市| 莱芜市| 昌邑市| 嘉义县| 孝感市| 靖远县| 长沙市| 肥东县| 金川县| 濮阳市| 江阴市| 法库县| 广宗县| 香格里拉县| 保亭| 上思县| 鄢陵县| 舟山市| 比如县| 永丰县| 玛纳斯县| 株洲市| 荥经县| 夏河县| 泰来县| 潼南县| 巴林左旗| 常熟市| 中阳县| 白城市| 抚顺市| 松原市| 滦平县| 双辽市| 浮山县| 凤翔县| 湘乡市| 闸北区| 屯留县| 浪卡子县| 库车县|