戀戀冬季

          有你的冬天很溫暖

          與SQL語言有關(guān)

          SQL 語言

          SQL Structure Query Language 結(jié)構(gòu)化查詢語言)標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫語言, 用于建立、儲存、修改、檢索和管理數(shù)據(jù)庫中的信息。

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

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

          四、表
              1.
          創(chuàng)建表(創(chuàng)建表用 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 可以支持的數(shù)據(jù)類型比較常用的有:
                  A.
          NUMBER
                  B.VARCHAR(n)
                  C.VARCHAR2(n)
                  D.LONG
                  E.DATE
                  F.CHAR(n)
                  G.INTGER
                  例子: 創(chuàng)建一個(gè)工人信息表, GRID,XM,XB,CSRQ  和一個(gè)工人工資表,包括 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.
          對表插入數(shù)據(jù)
                 
          插入一條記錄
                      INSERT INTO Table_Name [(column_name1,Column_name2,...)] VALUES(value1,value2,...);
                      
          例子:向工人信息表中插入數(shù)據(jù)
                      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.
          刪除數(shù)據(jù)
                  DELETE FROM TABLE_NAME WHERE ...
              5.
          提交數(shù)據(jù)
                  COMMIT--
          提交
                  ROLLBACK--
          回滾
                 
          例子:主表和從表需要同時(shí)更新數(shù)據(jù)時(shí),需要更新兩條 sql 語句,為避免數(shù)據(jù)庫中的垃圾數(shù)據(jù),當(dāng)一條記錄失敗,即回滾。
              6.
          刪除表
                  DROP TABLE TABLE_NAME;
                  DELETE TABLE TABLE_NAME;
          刪記錄  
             
          7. 修改表結(jié)構(gòu)
                 
          增加列
                      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;
                      
          刪除列時(shí),該列不能有數(shù)據(jù)。

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

          SELECT COLUMN1,COLUMN2,… FROM TABLE_NAME1 A, TABLE_NAME2 …  
              2.
          刪除視圖
                 
          DROP VIEW VIEW_NAME
               
               例子:創(chuàng)建一個(gè)視圖,可以查出工人的姓名和工人的工資
                  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
          六、數(shù)據(jù)查詢
                  
          一般使用 select 語句進(jìn)行查詢
                
          基本結(jié)構(gòu):
                 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.
          用被選擇的列的別名來指定顯示選擇結(jié)果時(shí)的列名
                  SELECT COLUMN1 BYNAME1,COLUMN2 BYNAME2 FROM TABLE_NAME [WHERE]
                  select grid,grxm,grgz from gr_xx where grid='0001';
              4. select 語句中使用表達(dá)式
                 
          SELECT EXPRESSION FROM TABLE_NAME [WHERE ]
                  select cgdz,300+100 from cg_xx ;

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

           






           

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阿图什市| 湖南省| 连州市| 万年县| 尼木县| 丽江市| 崇信县| 万州区| 商水县| 梅河口市| 汪清县| 兰坪| 临汾市| 开江县| 西乌珠穆沁旗| 喜德县| 苏尼特左旗| 阜新| 德格县| 称多县| 建平县| 田东县| 靖州| 吕梁市| 龙游县| 天门市| 汽车| 中阳县| 宝山区| 普兰店市| 恩施市| 巴南区| 兴文县| 辰溪县| 京山县| 福鼎市| 乾安县| 民丰县| 鹤山市| 东海县| 锦屏县|