天天看點

SQL常用語句一、資料庫操作二、表格操作三、索引操作(index):四、查尋基本操作五、資料更新操作六、視圖操作七、使用者授權操作八、資料庫完整性操作注:

一、資料庫操作

  1. 登入資料庫:mysql -u root -p 密碼
  2. 建立資料庫:create database 資料庫名稱;
  3. 選擇資料庫:use 資料庫名稱;
  4. 檢視所有資料庫:show database;
  5. 删除資料庫:

二、表格操作

  1. 查尋資料庫所有表格:show tables;
  2. 建立表格:create table 表名(字段名1  字段類型   限制條件,字段名2.............);
  3. 增加表格字段:alter table 表名 add(字段名1   字段類型   限制條件............);
  4. 修改字段名:alter table 表名 chanage 舊字段名 新字段名 新資料類型;
  5. 删除表格字段:alter table 表名 drop 字段名;
  6. 修改字段類型:
  7. 增加字段限制條件:
  8. 删除字段限制條件:
  9. 删除表格:drop table 表名 restrict(删除無限制條件的的表)/cascade(删除表的同時删除有關聯的内容一起被删除);

三、索引操作(index):

  1. 檢視表中已經存在的索引:show index from 表名;
  2. 建立:Create uinque index 索引名 on 表名(列名);
  3. 修改索引名:alter index 舊索引名 rename to 新索引名;
  4. 删除:drop index 索引名 on 表名

四、查尋基本操作

  1. 資料查詢一般格式:select 查尋内容     from  表名或者視圖名    where 限制條件     group by 列名  order by 列名
    1. 查詢内容:所有(*),字段名稱,聚集函數。
    2. from中内容:表名、視圖名、嵌套語句。
    3. 限制條件:條件表達式,嵌套語句、
    4. group by含義:結果按照列名進行分組即列值相等的為一組。并且group by 自帶having即隻有滿足條件的才能輸出。
    5. order by含義:結果按列值進行升序(asc)或降序(desc)輸出。
  2. 單表查詢
    1. 選擇表中若幹列:       select 列1,列2           from 表名
    2. 查尋全部列:              select *                        from 表名
    3. 查尋經計算的值:       select 2014-列名         from 表名
    4. 消除重複行:              select distinct 列名      from 表名
    5. 查尋滿足條件的元組:select  列名                 from 表名        where  條件
    6. order by 子句:可以設定多個列
    7. 聚集函數:(where子句中不能使用)
      1. count(*)          統計元組個數
      2. count(列名)    統計一列中值的個數
      3. sun(列名)            計算一列值的總和(必須是數值型的)
      4. avg(列名)             計算一列的平均值(必須是數值型的)
      5. max(列名)            求一列的最大值
      6. min(列名)             求一列的最小值
    8. group by 子句  having(條件) 
  3. 連接配接查詢
    1. 等值與非等值連接配接查尋  where語句中:select *   from 表1,表2   where  表1.列1=表2.列2
    2. 自身連接配接      首先為表取兩個表名first,second:select first.列名,second.列名   from 表名  first,表名  second    where first.列名=second.列名              
    3. 外連接配接(左連接配接:列出左邊所有關系,若右邊無對應則以空值的形式輸出)    select  *     from  表1 left outer join 表2  on/using(表1.列1=表2.列2);我們也可用利用using去除結果中的重複值;
    4. 多表連接配接  主要是利用and和偶or連接配接
  4. 嵌套查詢
    1. 帶有in的子查詢(有内往外逐級輸出)
    2. 帶有比較運算符的子查詢:注意子查詢結果隻有一個是可用=代替in
    3. 帶有any或all的子查詢:
      1. >any             大于子查詢結果的某個值
      2. >all               大于子查詢結果的某些值
      3. <any             小于子查詢結果的某個值
      4. <all               小于子查詢結果的某些值
      5. >=any           大于子等于查詢結果的某個值         
      6. >=all             大于子等于查詢結果的某些值    
      7. <=any          小于等于子查詢結果的某個值
      8. <=all            小于等于子查詢結果的某些值
      9. =any            等于子查詢結果的某個值
      10. =all              等于子查詢結果的某些值
      11. !=any           不等于子查詢結果的某個值
      12. !=all             不等于子查詢結果的某些值
    4. 帶有exists的子查詢:他不傳回任何資料,隻産生true和false;主要是用來判斷子查詢結果是否為空
  5. 集合查尋
    1. 并交差(union  intersect  except) 例如    select *from 表名  where 條件   union    select *from 表名  where 條件
  6. 基于派生表的查尋           select  sname   from 表1,(select sno from 表2 where cno='1') as 派生表名   where 條件 ;as為的意思即(select sno from 表2 where cno='1')關系的表名為 派生表名。

五、資料更新操作

  1. 插入資料
    1. 插入元組(一次僅能插入一個元組)    insert    into 表名(對應列名)  values(對應值);   若無指定列名,新插入的元組必須在沒個屬性列上均有值。
    2. 插入子查詢結果(一次操作可插入多個元組)  insert into 表1(對應列1) select  對應列1 from 表2  ......
  2. 修改資料
    1. 修改某一進制組值    update 表名  set  列=某某(修改部分)  where 條件
    2. 修改多個元組值(某列同時增減某個數)  update 表名  set 列名=列名+1
    3. 帶子查詢的修改語句     update 表名  set  列名=某某  where 條件
  3.  删除資料
    1. 删除某一進制組值   delete  from 表名  where條件
    2. 删除多個元組值   清空表(delete  from 表名)
    3. 帶子查詢的删除語句  delete  from 表名  where   列名 in (子查詢)

六、視圖操作

  1. 建立視圖 create view 視圖名(列名) as   子查詢(為哪個表的哪些字段建立視圖),例如:create view 視圖名as select * from 表名 where條件  with check option ;如加上with check  option這句話,我們以後對視圖操作時 必須滿足定義的where 條件。
  2. 删除視圖    drop view 視圖名
  3. 查詢視圖    與表格一緻
  4. 更新視圖    不常用
  5. 視圖與表的差別

七、使用者授權操作

八、資料庫完整性操作

注:

  1. 檢視mysql版本,cmd進入mysql下的bin目錄:mysql --help | find "Distrib"或者mysql -V。
  2. 基本文法:
    1. create  建立;    drop  删除;    alter  修改;
    2. table    表格 ;   index索引;     view 視圖;     schema  模式。
  3. 條件:
    1. 比較大小   >     <    =    >=    <=  !=或<>    !>(不大于)    !<(不小于)。
    2. 确定範圍   between ..(下界)...and...(上界).       not between.......and......。
    3. 确定集合   in 屬性值屬于指定集合的元組 例如:select * from 表名  where 列名  in ('值1','值2','值3')。
    4. 字元比對   like   %代表任意長度      _代表單個字元 例如:select * from 表名 where 列名 like '_劉%'(如何查找字元含有_或%,此時要使用\來轉換)。
    5. 涉及空值的查詢(例如查尋沒有參加考試的學生)  select * from 表名  where  列名 is NULL;  注意is不能用=代替。
    6. 多重條件查詢  and >or  例如 :select *  from 表名  where 列名1='   ' and 列名2='  '。
  4. order by和group by 隻能對最終結果進行操作,不能用于子查詢中。
  5. 派生表是指當子查詢出現在from中,子查詢會臨時生成一個表叫派生表
sql