<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 參考資料 [https://github.com/CyC2018/CS-Notes/blob/master/notes/SQL.md](https://github.com/CyC2018/CS-Notes/blob/master/notes/SQL.md) [https://blog.csdn.net/qq\_37205708/article/details/94194465](https://blog.csdn.net/qq_37205708/article/details/94194465) # 基礎 模式定義了數據如何存儲、存儲什么樣的數據以及數據如何分解等信息,數據庫和表都有模式。 主鍵的值不允許修改,也不允許復用(不能將已經刪除的主鍵值賦給新數據行的主鍵)。 SQL(Structured Query Language),標準 SQL 由 ANSI 標準委員會管理,從而稱為 ANSI SQL。各個 DBMS 都有自己的實現,如 PL/SQL、Transact-SQL 等。 SQL 語句不區分大小寫,但是數據庫表名、列名和值是否區分依賴于具體的 DBMS 以及配置。 SQL 支持以下三種注釋: ```sql # 注釋 SELECT * FROM mytable; -- 注釋 /* 注釋1 注釋2 */ ``` 數據庫創建與使用: ```sql CREATE DATABASE test; USE test; ``` # 數據定義 <table> <tr> <th rowspan=2>操作對象</th> <th colspan=3>操作方式</th> </tr> <tr> <td>創建</td> <td>刪除</td> <td>修改</td> </tr> <tr> <td>模式</td> <td>CREATE SCHEMA</td> <td>DROP SCHEMA</td> <td>\</td> </tr> <tr> <td>表</td> <td>CREATE TABLE</td> <td>DROP TABLE</td> <td>ALTER TABLE</td> </tr> <tr> <td>視圖</td> <td>CREATE VIEW</td> <td>DROP VIEW</td> <td>\</td> </tr> <tr> <td>索引</td> <td>CREATE INDEX</td> <td>DROP IDNEX</td> <td>\</td> </tr> </table> ## 創建 / 刪除數據庫 ```sql create database 數據庫名 [其他選項\] ``` 例如我們需要創建一個名為 samp\_db 的數據庫, 在命令行下執行以下命令: ```sql create database samp_db character set gbk; ``` 為了便于在命令提示符下顯示中文, 在創建時通過 character set gbk 將數據庫字符編碼指定為 gbk。 刪除數據庫: ```sql drop database 數據庫名 ``` ## 創建 / 刪除 / 修改基本表 創建表 ```sql CREATE TABLE mytable ( # int 類型,不為空,自增 id INT NOT NULL AUTO_INCREMENT, # int 類型,不可為空,默認值為 1,不為空 col1 INT NOT NULL DEFAULT 1, # 變長字符串類型,最長為 45 個字符,可以為空 col2 VARCHAR(45) NULL, # 日期類型,可為空 col3 DATE NULL, # 設置主鍵為 id PRIMARY KEY (`id`)); ``` 修改表: ```sql # 添加列 ALTER TABLE mytable ADD col CHAR(20); ``` ```sql # 表 position 修改列 test ALTER TABLE position MODIFY test CHAR(20) NOT NULL; ``` ## 建立索引 ```sql CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…); ``` - <表名>:要建索引的基本表的名字 - <列名>:可以建立在該表的一列或多列上,各列名之間用逗號分隔 - <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC - UNIQUE:此索引的每一個索引值只對應唯一的數據記錄 - CLUSTER:表示要建立的索引是聚簇索引 # 數據查詢 ```sql SELECT [ALL | DISTINCT] <目標列表達式> [,<目標列表達式>] … FROM <表名或視圖名>[, <表名或視圖名> ] … [ WHERE <條件表達式> ] [ GROUP BY <列名1> [ HAVING <條件表達式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ]; ``` 語義:根據 WHERE 子句的條件表達式,從 FROM 子句指定的基本表或視圖中找出滿足條件的元組,再按 SELECT 子句中的目標表達式,選出元組中的屬性值形成結果表。 <br /> 如果有 GROUP BY 子句,則將結果按 <列名1> 的值進行分組,該屬性列值相等的元組稱為一個組。如果 GROUP BY 子句帶 HAVING 短語,則只有滿足指定條件的組才予以輸出。 <br /> 如果有 ORDER BY 子句,則結果表還要按 <列名 2> 的值的升序或降序排列。 ## 單表查詢 1、選中表中的若干列 ```sql SELECT Sno,Sname FROM Student SELECT * FROM Student # 查詢結果的第 2 列是一個算術表達式,表中會得到2014 – Sage的值 SELECT Sname, 2014 – Sage FROM Student # 可以通過指定別名來改變查詢結果的列標題,Sname 列名會變為 NAME SELECT Sname NAME, 'Year of Birth': BIRTH, 2004 – Sage BIRTHDAY, LOWER(Sdept) DEPARTMENT ``` 2、選中表中的若干元組(行) (1) DISDINCT 關鍵字消除重復的行 ```sql SELECT DISTINCT Sno FROM SC # 使用 DISTINCT 關鍵字消除重復的行 ``` (2) 使用 WHERE 查詢滿足條件的元組 | 查詢條件 | 謂詞 | | :---- | :---- | | 比較 | =,>,<=,>=,<>,!>,!< 以及 NOT + 上述比較運算符 | | 確定范圍 | BETWEEN AND,NOT BETWEEN AND | | 確定集合 | IN,NOT IN | | 字符匹配 | LIKE, NOT LIKE | | 空值 | IS NULL, IS NOT NULL | | 多重條件(邏輯運算) | AND,OR,NOT | ```sql # 查詢年齡在 20~23 歲(包括 20 歲和 23 歲)之間的學生的姓名、系別、年齡 SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 20 AND 23; ``` ```sql # IN 用于查找屬性值屬于指定集合的元組,即 Sdept 等于 'CS' 'MA' 'IS' 中的一個即可 SELECT Sname, Ssex FROM Student WHERE Sdept IN ('CS', 'MA', 'IS'); ``` 字符匹配:`[NOT] LIKE '<匹配串>' [ESCAPE '<換碼字符>']` 語義:查找指定的屬性列值與`<匹配串>`相匹配的元組,ESCAPE 用于對通配符的轉義,如 ```sql WHERE Cname LIKE 'DB\_Design' ESCAPE '\'; # 將 \ 定義為轉義字符,這樣匹配的就是 'DB_Design',即 '_' 失去了通配符的含義 ``` 有以下通配符: `%`:代表任意長度(>=0)的字符串 `_`:代表任意單個字符 `[ ]`:匹配括號內所列字符中的一個 `[^]`:匹配不在括號內所列字符中的單個字符 > 注:數據庫字符集為 ASCII 時一個漢字需要兩個 \_,字符集為 GBK 時只需要一個 多重條件查詢,邏輯運算符 AND 和 OR 可用來聯結多個查詢條件,AND 的優先級高于 OR,但可用括號改變優先級,示例如下: ```sql SELECT Sname FROM Student WHERE Sdept = 'CS' AND Sage < 20 ``` (3) ORDER BY 子句 對查詢結果按一個或多個屬性列的升序(ASC)或降序(DESC)排列,缺省值為升序 (4) 聚集函數(系統自帶函數)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看