SQL複習--記錄sql的基本知識中的一些注意事項

  1. SQL 對大小寫不敏感:SELECT 與 select 是相同的。

  2. SELECT 語句用於從數據庫中選取數據。
    結果被存儲在一個結果表中,稱爲結果集

  3. cmd訪問mysql的方法
    mysql -hlocalhost -uroot -p

  4. SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。

  5. 運算符

    運算符 描述
    = 等於
    <> 不等於。註釋:在 SQL 的一些版本中,該操作符可被寫成 !=
    大於
    < 小於
    = 大於等於
    <= 小於等於
    BETWEEN 在某個範圍內
    LIKE 搜索某種模式
    IN 指定針對某個列的多個可能值

  6. where

    • Where 子句
      搜索 empno 等於 7900 的數據:
      Select * from emp where empno=7900;
      Where +條件(篩選行)
      條件:列,比較運算符,值
      比較運算符包涵:= > < >= ,<=, !=,<> 表示(不等於)
      Select * from emp where ename=’SMITH’;
      例子中的 SMITH 用單引號引起來,表示是字符串,字符串要區分大小寫。
      邏輯運算
      And:與 同時滿足兩個條件的值。
      Select * from emp where sal > 2000 and sal < 3000;
      查詢 EMP 表中 SAL 列中大於 2000 小於 3000 的值。
      Or:或 滿足其中一個條件的值
      Select * from emp where sal > 2000 or comm > 500;
      查詢 emp 表中 SAL 大於 2000 或 COMM 大於500的值。
      Not:非 滿足不包含該條件的值。
      select * from emp where not sal > 1500;
      查詢EMP表中 sal 小於等於 1500 的值。
      邏輯運算的優先級:
      () not and or

      特殊條件
      1.空值判斷: is null
      Select * from emp where comm is null;
      查詢 emp 表中 comm 列中的空值。
      2.between and (在 之間的值)
      Select * from emp where sal between 1500 and 3000;
      查詢 emp 表中 SAL 列中大於 1500 的小於 3000 的值。
      注意:大於等於 1500 且小於等於 3000, 1500 爲下限,3000 爲上限,下限在前,上限在後,查詢的範圍包涵有上下限的值。
      3.In
      Select * from emp where sal in (5000,3000,1500);
      查詢 EMP 表 SAL 列中等於 5000,3000,1500 的值。
      4.like
      Like模糊查詢
      Select * from emp where ename like ‘M%’;
      查詢 EMP 表中 Ename 列中有 M 的值,M 爲要查詢內容中的模糊信息。
      % 表示多個字值,_ 下劃線表示一個字符;
      M% : 爲能配符,正則表達式,表示的意思爲模糊查詢信息爲 M 開頭的。
      %M% : 表示查詢包含M的所有內容。
      %M_ : 表示查詢以M在倒數第二位的所有內容。

      tin
      tin
      cxt***qq.com
      1年前 (2017-03-06)
      張耘翡
      869***[email protected]
      不帶比較運算符的 WHERE 子句:
      WHERE子句並不一定帶比較運算符,當不帶運算符時,會執行一個隱式轉換。當0時轉化爲 false,當其他值是轉化爲true。例如:
      SELECT studentNO FROM student WHERE 0
      則會返回一個空集,因爲每一行記錄WHERE都返回false。
      SELECT studentNO FROM student WHERE 1
      或者
      SELECT studentNO FROM student WHERE ‘abc’
      都將返回student表所有行記錄的studentNO列。因爲每一行記錄WHERE都返回true。
  7. SQL關於刪除的三個語句:DROP、TRUNCATE、 DELETE 的區別。

    • DROP:(不可逆,會刪除表,包括觸發器,索引等)
      DROP test;
      刪除表test,並釋放空間,將test刪除的一乾二淨。
    • TRUNCATE:(不可逆,不會刪除表結構,不會觸發trigger)
      TRUNCATE test;
      刪除表test裏的內容,並釋放空間,但不刪除表的定義,表的結構還在。
    • DELETE:(可逆,不會刪除表結構,會觸發trigger)
      1、刪除指定數據
      刪除表test中年齡等於30的且國家爲US的數據
      DELETE FROM test WHERE age=30 AND country=’US’;
      2、刪除整個表
      僅刪除表test內的所有內容,保留表的定義,不釋放空間。
      DELETE FROM test 或者 DELETE FROM test;
      DELETE * FROM test 或者 DELETE * FROM test;
  8. like 通配符

    • 首先說下LIKE命令都涉及到的通配符:
      % 替代一個或多個字符
      _ 僅替代一個字符
      [charlist] 字符列中的任何單一字符
      [^charlist]或者[!charlist] 不在字符列中的任何單一字符
      其中搭配以上通配符可以讓LIKE命令實現多種技巧:
      1、LIKE’Mc%’ 將搜索以字母 Mc 開頭的所有字符串(如 McBadden)。
      2、LIKE’%inger’ 將搜索以字母 inger 結尾的所有字符串(如 Ringer、Stringer)。
      3、LIKE’%en%’ 將搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
      4、LIKE’_heryl’ 將搜索以字母 heryl 結尾的所有六個字母的名稱(如 Cheryl、Sheryl)。
      5、LIKE’[CK]ars[eo]n’ 將搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
      6、LIKE’[M-Z]inger’ 將搜索以字符串 inger 結尾、以從 M 到 Z 的任何單個字母開頭的所有名稱(如 Ringer)。
      7、LIKE’M[^c]%’ 將搜索以字母 M 開頭,並且第二個字母不是 c 的所有名稱(如MacFeather)。

    • SQL 中,通配符與 SQL LIKE 操作符一起使用。
      不過,MySQL 、SQLite 只支持 % 和 _ 通配符,不支持 [^charlist] 或 [!charlist] 通配符( MS Access 支持,微軟 office 對通配符一直支持良好,但微軟有時候的通配符不支持 %,而是 *,具體看對應軟件說明)。通配符和正則不是一回事。
      MySQL 和 SQLite 會把 like ‘[xxx]yyy’ 的中括號當成普通字符,而不是通配符。
      比如:
      select * from persons WHERE City LIKE ‘[b]eijing’
      將查出 city 爲 [B]eijing 的行,而不是 city 爲 beijing 的行。
      MySQL 中要完成 [^charlist] 或 [!charlist] 通配符的查詢效果,需要通過正則表達式來完成。
      select * from persons WHERE City REGEXP ‘[b]eijing’ SQLite不支持Regexp正則方法。

  9. between
    請注意,在不同的數據庫中,BETWEEN 操作符會產生不同的結果!
    在某些數據庫中,BETWEEN 選取介於兩個值之間但不包括兩個測試值的字段。
    在某些數據庫中,BETWEEN 選取介於兩個值之間且包括兩個測試值的字段。
    在某些數據庫中,BETWEEN 選取介於兩個值之間且包括第一個測試值但不包括最後一個測試值的字段。
    因此,請檢查您的數據庫是如何處理 BETWEEN 操作符!
    mysql 中between包括左右邊界,not between 不包括邊界

  10. limit
    mysql> SELECT * FROM table LIMIT 5,10; // 從索引5(初始記錄行的偏移量是 0(而不是 1))位置起,10條記錄
    //爲了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數爲 -1:
    mysql> SELECT * FROM table LIMIT 95,-1; // 索引 95-last.
    //如果只給定一個參數,它表示返回最大的記錄行數目:
    mysql> SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行
    //換句話說,LIMIT n 等價於 LIMIT 0,n。

  11. join

a left join b 與 b right join a 是一樣的 ,基準表都是a

http://www.runoob.com/w3cnote/sql-join-the-different-of-on-and-where.html

在使用 left jion 時,on 和 where 條件的區別如下:
1、 on 條件是在生成臨時表時使用的條件,它不管 on 中的條件是否爲真,都會返回左邊表中的記錄。
2、where 條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有 left join 的含義(必須返回左邊表的記錄)了,條件不爲真的就全部過濾掉。

MySQL中不支持 FULL OUTER JOIN,你可以在 SQL Server 測試以下實例。

12. count()

– 查詢所有記錄的條數或者count(1)
select count(*) from access_log;

– 查詢websites 表中 alexa列中不爲空的記錄的條數
select count(alexa) from websites;

– 查詢websites表中 country列中不重複的記錄條數
select count(distinct country) from websites;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章