日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

【数据库】SQL语句

發(fā)布時(shí)間:2023/11/29 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】SQL语句 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQL 分為兩個(gè)部分:數(shù)據(jù)操作語(yǔ)言(DML)和 數(shù)據(jù)定義語(yǔ)言(DDL)。
增刪改查(CRUD)構(gòu)成了 SQL 的 DML 部分。

  • SELECT - 從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)
    • SELECT 列名 FROM 表名
    • SELECT * FROM 表名
      • SELECT COUNT(*) FROM 表名
    • SELECT DISTINCT 列名 FROM 表名 ?(只顯示結(jié)果不同的項(xiàng))
    • SELECT 列名 FROM 表名 WHERE 列 運(yùn)算符 值
      • 一些特別的操作符

        操作符描述
        <>不等于
        BETWEEN在某個(gè)范圍內(nèi)
        LIKE搜索某種模式
      • LIKENOT LIKE 搜索的模式:
        • % 表示一個(gè)或多個(gè)字符
        • _ 表示一個(gè)字符
        • [charlist] 表示字符列中的任何單一字符
        • [^charlist] 或者 [!charlist] 表示不在字符列中的任何單一字符
      • WHERE 列名 IS NULL
        • 查找空字段不能用 =NULL !
      • IN 允許在 WHERE 子句中規(guī)定多個(gè)值。
        • WHERE 列名 IN (值1, 值2, ...)
          這種方法比?WHERE 列名 = 值1 OR 列名 = 值2 效率高
      • 操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍,這些值可以是數(shù)值、文本或者日期。
        • SELECT 列名 FROM 表名 WHERE 列名 (NOT) BETWEEN 值1 AND 值2
        • 不同的數(shù)據(jù)庫(kù)對(duì) BETWEEN AND 操作符的區(qū)間處理有差異,有開區(qū)間、閉區(qū)間、左閉右開。
      • AND 和 OR 可在 WHERE 子語(yǔ)句中把多個(gè)條件結(jié)合起來,可以使用圓括號(hào)來組成復(fù)雜的表達(dá)式。
      • WHERE 列名=(SELECT ……)
        • e.g. SELECT ……?WHERE birthday=(SELECT MIN(birthday) FROM ……)
    • ORDER BY 語(yǔ)句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序(默認(rèn)升序)。
      • e.g. SELECT …… ORDER BY 列1 DESC, 列2 ASC
    • 分組查詢 GROUP BY
      • GROUP BY 列名
        • 根據(jù)分組字段的值將一個(gè)數(shù)據(jù)集劃分成各個(gè)不同的小組,然后分別按照各個(gè)組別進(jìn)行相應(yīng)的查詢。
          SELECT * …… GROUP BY 列名 ? ?將只會(huì)返回各個(gè)分組的第一條數(shù)據(jù),這種查詢通常沒什么意義。
          因此常與 COUNT(),MAX() ?等統(tǒng)計(jì)函數(shù)結(jié)合使用。
      • HAVING 用于對(duì)統(tǒng)計(jì)函數(shù)進(jìn)行條件判斷
        • 由于 “ SELECT COUNT(*) FROM 表名 WHERE COUNT(*) GROUP BY 列名 ” 語(yǔ)句中 WHERE 關(guān)鍵字無法與統(tǒng)計(jì)函數(shù)一起使用,該語(yǔ)句錯(cuò)誤!
        • e.g. GROUP BY 列名 HAVING 統(tǒng)計(jì)函數(shù)(列名2) 運(yùn)算符 值
      • GROUP BY 列名1, 列名2, ....
        • 首先根據(jù)列名1的字段值分組,再在每個(gè)分組里根據(jù)列名2的字段值分組
    • 規(guī)定要返回的記錄的數(shù)目
      • SQL Server:
        • SELECT TOP 3 列名 FROM 表名
        • SELECT TOP 50 PERCENT 列名 FROM 表名
      • MySQL:
        • SELECT 列名 FROM 表名 LIMIT 3
      • Oracle:
        • SELECT 列名 FROM 表名 WHERE ROWNUM <= 3
    • AS?為列名或表名指定別名(AS 可以省略,但建議加上以增加語(yǔ)句可讀性)
      • 表名的別名
        • SELECT 列名 FROM 表名1 AS 別名1, 表名2 AS 別名2
        • 表名的別名使查詢程序的 WHERE 語(yǔ)句更易閱讀和書寫
      • 列名的別名
        • SELECT 列名1 AS 別名1, 列名2 AS 別名2 FROM 表名
    • JOIN
      • JOIN / INNER JOIN
        • 內(nèi)連接返回左右兩表中匹配的行
        • SELECT .... FROM 表1, 表2, 表3, .... WHERE 表1.列=表2.列 and 表2.列=表3.列 ....
          這種傳統(tǒng)跨表查詢可替換為
          SELECT .... FROM 表1 [INNER] JOIN 表2 ON 表1.列=表2.列 JOIN 表3 ON 表2.列=表3.列 .... WHERE ....
      • LEFT JOIN
        • 將左邊的表設(shè)置為主表來連接右邊的表,即使左表中的數(shù)據(jù)在右表中沒有匹配,會(huì)自動(dòng)使用 NULL 替代
      • RIGHT JOIN
        • 將右邊的表設(shè)置為主表來連接左邊的表,即使右表中的數(shù)據(jù)在左表中沒有匹配,會(huì)自動(dòng)使用 NULL 替代
  • UPDATE - 更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)
    • UPDATE 表名 SET 列1 = 值1, 列2 = 值2?WHERE ……
  • DELETE - 從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)
    • DELETE FROM 表名 WHERE ……
    • DELETE FROM 表名 或 DELETE * FROM 表名
  • INSERT INTO - 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)
    • INSERT INTO 表名 VALUES (值1, 值2, ....)  --?不寫列名必須寫出所有字段值!
    • INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ....)
    • 插入另一個(gè)表中的多行數(shù)據(jù):
      INSERT INTO 表名1 (列1, 列2,...)
      ? ? SELECT?(列1', 列2', ...) FROM 表名2 WHERE 條件

DDL 部分使我們有能力創(chuàng)建或刪除表格,也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。

  • CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫(kù)
    • CREATE DATABASE 數(shù)據(jù)庫(kù)名
  • ALTER DATABASE - 修改數(shù)據(jù)庫(kù)
  • CREATE TABLE - 創(chuàng)建新表
    • CREATE TABLE 表名
      (
      列名1 數(shù)據(jù)類型,
      列名2 數(shù)據(jù)類型,
      列名3 數(shù)據(jù)類型,
      ....
      )

    • 常用數(shù)據(jù)類型
      數(shù)據(jù)類型描述

      integer(size)
      int(size)
      smallint(size)
      tinyint(size)

      僅容納整數(shù)。在括號(hào)內(nèi)規(guī)定數(shù)字的最大位數(shù)。

      decimal(size,d)
      numeric(size,d)

      容納帶有小數(shù)的數(shù)字。
      "size" 規(guī)定數(shù)字的最大位數(shù)。"d" 規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。

      char(size)

      容納固定長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊字符)。
      在括號(hào)中規(guī)定字符串的長(zhǎng)度。

      varchar(size)

      容納可變長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊的字符)。
      在括號(hào)中規(guī)定字符串的最大長(zhǎng)度。

      date(yyyymmdd)容納日期。日期字段需要加引號(hào),如 '1994-07-04'。
    • CREATE TABLE 或 ALTER TABLE 時(shí)可以規(guī)定約束,用于限制加入表的數(shù)據(jù)的類型。
      • NOT NULL
        • 強(qiáng)制列不接受 NULL 值。如果不向字段添加值,就無法插入新記錄或者更新記錄。
        • CREATE TABLE 表名
          (
          列名1 數(shù)據(jù)類型 NOT NULL,
          ....
          )
      • UNIQUE
        • 唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
        • 表創(chuàng)建時(shí)創(chuàng)建 UNIQUE 約束:
          CREATE TABLE 表名
          (
          列名1 數(shù)據(jù)類型 UNIQUE,
          ....
          )
        • 命名 UNIQUE 約束,以及為多個(gè)列定義 UNIQUE 約束:
          CREATE TABLE 表名
          (
          列名1 數(shù)據(jù)類型,
          列名2 數(shù)據(jù)類型,
          ....
          CONSTRAINT 別名 UNIQUE (列名1, 列名2)
          )
        • 對(duì)已創(chuàng)建的表中的列創(chuàng)建 UNIQUE 約束:
          ALTER TABLE 表名
          ADD UNIQUE (列名)

          ALTER TABLE 表名
          ADD CONSTRAINT 別名 UNIQUE (列名1, 列名2)
        • 撤銷 UNIQUE 約束
          ……
      • PRIMARY KEY
        • PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄,其擁有自動(dòng)定義的 UNIQUE 約束。每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
          主鍵列不能包含 NULL 值。
          每個(gè)表必須有且只有一個(gè)主鍵。
        • 表創(chuàng)建時(shí)創(chuàng)建 PRIMARY KEY?約束:
          CREATE TABLE 表名
          (
          列名1 數(shù)據(jù)類型 NOT NULL PRIMARY KEY,
          ....
          )
      • FOREIGN KEY
        • 一個(gè)表中的 FOREIGN KEY 指向另一個(gè)表中的 PRIMARY KEY。
        • 表創(chuàng)建時(shí)創(chuàng)建 FOREIGN KEY?約束:
          CREATE TABLE 表名
          (
          ....
          列名 數(shù)據(jù)類型 FOREIGN?KEY REFERENCES?另一表名(其主鍵名),
          ....
          )
      • CHECK
        • CHECK 約束用于限制列中的值的范圍。
        • 表創(chuàng)建時(shí)創(chuàng)建 CHECK 約束:
          CREATE TABLE 表名
          (
          ....
          列名 int CHECK (列名 > 0),
          ....
          )
      • DEFAULT
        • DEFAULT 約束用于向列中插入默認(rèn)值。
        • 表創(chuàng)建時(shí)創(chuàng)建 DEFAULT?約束:
          CREATE TABLE 表名
          (
          ....
          列名 date DEFAULT GETDATE(),
          ....
          )
      • AUTO INCREMENT
        • AUTO INCREMENT 允許在每次插入新記錄時(shí),自動(dòng)地創(chuàng)建主鍵字段的值,可以規(guī)定起始值和遞增值。
  • ALTER TABLE - 變更數(shù)據(jù)庫(kù)表
  • DROP TABLE - 刪除表
  • CREATE INDEX - 創(chuàng)建索引(搜索鍵)
    • 在不讀取整個(gè)表的情況下,索引使數(shù)據(jù)庫(kù)應(yīng)用程序可以更快地查找數(shù)據(jù)。
    • CREATE [UNIQUE] INDEX 索引名 ON 表名 (列名1 [DESC], 列名2)
      UNIQUE?在表上創(chuàng)建一個(gè)唯一的索引,意味著兩個(gè)行不能擁有相同的索引值。
      如果希望以降序索引某個(gè)列中的值,可以在列名之后添加保留字 DESC。

  • DROP INDEX - 刪除索引
  • TRUNCATE TABLE - 清空表
    • TRUNCATE TABLE 用于刪除表中的所有行,而不記錄單個(gè)行刪除操作。不同于 DELETE * ,TRUNCATE 會(huì)使自動(dòng)遞增的標(biāo)識(shí)還原
    • TRUNCATE TABLE 表名

轉(zhuǎn)載于:https://www.cnblogs.com/wayne793377164/p/7218710.html

總結(jié)

以上是生活随笔為你收集整理的【数据库】SQL语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。