1. 拿走不謝!1000行MySQL詳細學習筆記~

        共 11785字,需瀏覽 24分鐘

         ·

        2021-09-15 19:36

        這份資料非常全面且詳細,覆蓋了MySQL基礎學習的方方面面,非常適合初學者入門!所以一定要好好學習這份資料!

        備注:以下完整代碼左右滑動查看~

        • Windows服務

        -- 啟動MySQL
        ? ?net start mysql
        -- 創(chuàng)建Windows服務
        ? ?sc create mysql binPath= mysqld_bin_path(注意:等號與值之間有空格)
        • 連接與斷開服務器

        mysql -h 地址 -P 端口 -u 用戶名 -p 密碼

        SHOW PROCESSLIST -- 顯示哪些線程正在運行
        SHOW VARIABLES -- 顯示系統變量信息
        • 數據庫操作

        -- 查看當前數據庫
        ? ?SELECT DATABASE();
        -- 顯示當前時間、用戶名、數據庫版本
        ? ?SELECT now(), user(), version();
        -- 創(chuàng)建庫
        ? ?CREATE DATABASE[ IF NOT EXISTS] 數據庫名 數據庫選項
        ? ?數據庫選項:
        ? ? ? ?CHARACTER SET charset_name
        ? ? ? ?COLLATE collation_name
        -- 查看已有庫
        ? ?SHOW DATABASES[ LIKE 'PATTERN']
        -- 查看當前庫信息
        ? ?SHOW CREATE DATABASE 數據庫名
        -- 修改庫的選項信息
        ? ?ALTER DATABASE 庫名 選項信息
        -- 刪除庫
        ? ?DROP DATABASE[ IF EXISTS] 數據庫名
        ? ? ? ?同時刪除該數據庫相關的目錄及其目錄內容
        • 表的操作

        -- 創(chuàng)建表
        ? ?CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] [庫名.]表名 ( 表的結構定義 )[ 表選項]
        ? ? ? ?每個字段必須有數據類型
        ? ? ? ?最后一個字段后不能有逗號
        ? ? ? ?TEMPORARY 臨時表,會話結束時表自動消失
        ? ? ? ?對于字段的定義:
        ? ? ? ? ? ?字段名 數據類型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
        -- 表選項
        ? ?-- 字符集
        ? ? ? ?CHARSET = charset_name
        ? ? ? ?如果表沒有設定,則使用數據庫字符集
        ? ?-- 存儲引擎
        ? ? ? ?ENGINE = engine_name
        ? ? ? ?表在管理數據時采用的不同的數據結構,結構不同會導致處理方式、提供的特性操作等不同
        ? ? ? ?常見的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive
        ? ? ? ?不同的引擎在保存表的結構和數據時采用不同的方式
        ? ? ? MyISAM表文件含義:.frm表定義,.MYD表數據,.MYI表索引
        ? ? ? ?InnoDB表文件含義:.frm表定義,表空間數據和日志文件
        ? ? ? ?SHOW ENGINES -- 顯示存儲引擎的狀態(tài)信息
        ? ? ? ?SHOW ENGINE 引擎名 {LOGS|STATUS} -- 顯示存儲引擎的日志或狀態(tài)信息
        ? ?-- 自增起始數
        ? ? ? ?AUTO_INCREMENT = 行數
        ? ?-- 數據文件目錄
        ? ? ? ?DATA DIRECTORY = '目錄'
        ? ?-- 索引文件目錄
        ? ? ? ?INDEX DIRECTORY = '目錄'
        ? ?-- 表注釋
        ? ? ? ?COMMENT = 'string'
        ? ?-- 分區(qū)選項
        ? ? ? ?PARTITION BY ... (詳細見手冊)
        -- 查看所有表
        ? ?SHOW TABLES[ LIKE 'pattern']
        ? ?SHOW TABLES FROM 表名
        -- 查看表機構
        ? ?SHOW CREATE TABLE 表名 (信息更詳細)
        ? ?DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']
        ? ?SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
        -- 修改表
        ? ?-- 修改表本身的選項
        ? ? ? ?ALTER TABLE 表名 表的選項
        ? ? ? ?eg: ALTER TABLE 表名 ENGINE=MYISAM;

        ? ?-- 對表進行重命名
        ? ? ? ?RENAME TABLE 原表名 TO 新表名
        ? ? ? ?RENAME TABLE 原表名 TO 庫名.表名 (可將表移動到另一個數據庫)
        ? ? ? ?-- RENAME可以交換兩個表名
        ? ?-- 修改表的字段機構(13.1.2. ALTER TABLE語法)
        ? ? ? ?ALTER TABLE 表名 操作名
        ? ? ? ?-- 操作名
        ? ? ? ? ? ?ADD[ COLUMN] 字段定義 ? ? ? -- 增加字段
        ? ? ? ? ? ? ? ?AFTER 字段名 ? ? ? ? ?-- 表示增加在該字段名后面
        ? ? ? ? ? ? ? ?FIRST ? ? ? ? ? ? ? -- 表示增加在第一個
        ? ? ? ? ? ?ADD PRIMARY KEY(字段名) ? -- 創(chuàng)建主鍵
        ? ? ? ? ? ?ADD UNIQUE [索引名] (字段名)-- 創(chuàng)建唯一索引
        ? ? ? ? ? ?ADD INDEX [索引名] (字段名) -- 創(chuàng)建普通索引
        ? ? ? ? ? ?DROP[ COLUMN] 字段名 ? ? ?-- 刪除字段
        ? ? ? ? ? ?MODIFY[ COLUMN] 字段名 字段屬性 ? ? -- 支持對字段屬性進行修改,不能修改字段名(所有原有屬性也需寫上)
        ? ? ? ? ? ?CHANGE[ COLUMN] 原字段名 新字段名 字段屬性 ? ? ?-- 支持對字段名修改
        ? ? ? ? ? ?DROP PRIMARY KEY ? ?-- 刪除主鍵(刪除主鍵前需刪除其AUTO_INCREMENT屬性)
        ? ? ? ? ? ?DROP INDEX 索引名 -- 刪除索引
        ? ? ? ? ? ?DROP FOREIGN KEY 外鍵 ? ?-- 刪除外鍵
        -- 刪除表
        ? ?DROP TABLE[ IF EXISTS] 表名 ...
        -- 清空表數據
        ? ?TRUNCATE [TABLE] 表名
        -- 復制表結構
        ? ?CREATE TABLE 表名 LIKE 要復制的表名
        -- 復制表結構和數據
        ? ?CREATE TABLE 表名 [AS] SELECT * FROM 要復制的表名
        -- 檢查表是否有錯誤
        ? ?CHECK TABLE tbl_name [, tbl_name] ... [option] ...
        -- 優(yōu)化表
        ? ?OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
        -- 修復表
        ? ?REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
        -- 分析表
        ? ?ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
        • 數據操作

        -- 增
        ? ?INSERT [INTO] 表名 [(字段列表)] VALUES (值列表)[, (值列表), ...]
        ? ? ? ?-- 如果要插入的值列表包含所有字段并且順序一致,則可以省略字段列表。
        ? ? ? ?-- 可同時插入多條數據記錄!
        ? ? ? ?REPLACEINSERT 完全一樣,可互換。
        ? ?INSERT [INTO] 表名 SET 字段名=值[, 字段名=值, ...]
        -- 查
        ? ?SELECT 字段列表 FROM 表名[ 其他子句]
        ? ? ? ?-- 可來自多個表的多個字段
        ? ? ? ?-- 其他子句可以不使用
        ? ? ? ?-- 字段列表可以用*代替,表示所有字段
        -- 刪
        ? ?DELETE FROM 表名[ 刪除條件子句]
        ? ? ? ?沒有條件子句,則會刪除全部
        -- 改
        ? ?UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新條件]
        • 字符集編碼

        -- MySQL、數據庫、表、字段均可設置編碼
        -- 數據編碼與客戶端編碼不需一致
        SHOW VARIABLES LIKE 'character_set_%' ? -- 查看所有字符集編碼項
        ? ?character_set_client ? ? ? ?客戶端向服務器發(fā)送數據時使用的編碼
        ? ?character_set_results ? ? ? 服務器端將結果返回給客戶端所使用的編碼
        ? ?character_set_connection ? ?連接層編碼
        SET 變量名 = 變量值
        ? ?SET character_set_client = gbk;

        ? ?SET character_set_results = gbk;
        ? ?SET character_set_connection = gbk;
        SET NAMES GBK; ?-- 相當于完成以上三個設置
        -- 校對集
        ? ?校對集用以排序
        ? ?SHOW CHARACTER SET [LIKE 'pattern']/SHOW CHARSET [LIKE 'pattern'] ? 查看所有字符集
        ? ?SHOW COLLATION [LIKE 'pattern'] ? ? 查看所有校對集
        ? ?CHARSET 字符集編碼 ? ? 設置字符集編碼
        ? ?COLLATE 校對集編碼 ? ? 設置校對集編碼
        • 數據類型(列類型)

        1. 數值類型

        -- a. 整型 ----------
        ? ?類型 ? ? ? ? 字節(jié) ? ? 范圍(有符號位)
        ? tinyint ? ? 1字節(jié) ? ?-128 ~ 127 ? ? ?無符號位:0 ~ 255
        ? ?smallint ? ?2字節(jié) ? ?-32768 ~ 32767
        ? ?mediumint ? 3字節(jié) ? ?-8388608 ~ 8388607
        ? ?int ? ? ? ? 4字節(jié)
        ? ?bigint ? ? ?8字節(jié)
        ? ?int(M) ?M表示總位數
        ? ?- 默認存在符號位,unsigned 屬性修改
        ? ?- 顯示寬度,如果某個數不夠定義字段時設置的位數,則前面以0補填,zerofill 屬性修改
        ? ? ? ?例:int(5) ? 插入一個數'123',補填后為'00123'
        ? ?- 在滿足要求的情況下,越小越好。
        ? ?- 1表示bool值真,0表示bool值假。MySQL沒有布爾類型,通過整型0和1表示。常用tinyint(1)表示布爾型。

        -- b. 浮點型 ----------
        ? ?類型 ? ? ? ? ? ? 字節(jié) ? ? 范圍
        ? ?float(單精度) ? ? 4字節(jié)
        ? ?double(雙精度) ? ?8字節(jié)
        ? ?浮點型既支持符號位 unsigned 屬性,也支持顯示寬度 zerofill 屬性。
        ? ? ? ?不同于整型,前后均會補填0.
        ? ?定義浮點型時,需指定總位數和小數位數。
        ? ? ? ?float(M, D) ? ? double(M, D)
        ? ? ? M表示總位數,D表示小數位數。
        ? ? ? M和D的大小會決定浮點數的范圍。不同于整型的固定范圍。
        ? ? ? M既表示總位數(不包括小數點和正負號),也表示顯示寬度(所有顯示符號均包括)。
        ? ? ? ?支持科學計數法表示。
        ? ? ? ?浮點數表示近似值。

        -- c. 定點數 ----------
        ? ?decimal -- 可變長度
        ? decimal(M, D) ? M也表示總位數,D表示小數位數。
        ? ?保存一個精確的數值,不會發(fā)生數據的改變,不同于浮點數的四舍五入。
        ? ?將浮點數轉換為字符串來保存,每9位數字保存為4個字節(jié)。

        2. 字符串類型

        -- a. char, varchar ----------
        ? ?char ? ?定長字符串,速度快,但浪費空間
        ? ?varchar 變長字符串,速度慢,但節(jié)省空間
        ? M表示能存儲的最大長度,此長度是字符數,非字節(jié)數。
        ? ?不同的編碼,所占用的空間不同。
        ? char,最多255個字符,與編碼無關。
        ? varchar,最多65535字符,與編碼有關。
        ? ?一條有效記錄最大不能超過65535個字節(jié)。
        ? ? ? ?utf8 最大為21844個字符,gbk 最大為32766個字符,latin1 最大為65532個字符
        ? varchar 是變長的,需要利用存儲空間保存 varchar 的長度,如果數據小于255個字節(jié),則采用一個字節(jié)來保存長度,反之需要兩個字節(jié)來保存。
        ? varchar 的最大有效長度由最大行大小和使用的字符集確定。
        ? ?最大有效長度是65532字節(jié),因為在varchar存字符串時,第一個字節(jié)是空的,不存在任何數據,然后還需兩個字節(jié)來存放字符串的長度,所以有效長度是64432-1-2=65532字節(jié)。
        ? ?例:若一個表定義為 CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N)) charset=utf8; 問N的最大值是多少?答:(65535-1-2-4-30*3)/3

        -- b. blob, text ----------
        ? ?blob 二進制字符串(字節(jié)字符串)
        ? ? ? ?tinyblob, blob, mediumblob, longblob
        ? ?text 非二進制字符串(字符字符串)
        ? ? ? ?tinytext, text, mediumtext, longtext
        ? text 在定義時,不需要定義長度,也不會計算總長度。
        ? ?text 類型在定義時,不可給default值

        -- c. binary, varbinary ----------
        ? ?類似于char和varchar,用于保存二進制字符串,也就是保存字節(jié)字符串而非字符字符串。
        ? ?char, varchar, text 對應 binary, varbinary, blob.

        3. 日期時間類型
        ? ?一般用整型保存時間戳,因為PHP可以很方便的將時間戳進行格式化。
        ? ?datetime ? ?8字節(jié) ? ?日期及時間 ? ? 1000-01-01 00:00:00 到 9999-12-31 23:59:59
        ? ?date ? ? ? ?3字節(jié) ? ?日期 ? ? ? ? 1000-01-01 到 9999-12-31
        ? ?timestamp ? 4字節(jié) ? ?時間戳 ? ? ? ?19700101000000 到 2038-01-19 03:14:07
        ? ?time ? ? ? ?3字節(jié) ? ?時間 ? ? ? ? -838:59:59 到 838:59:59
        ? ?year ? ? ? ?1字節(jié) ? ?年份 ? ? ? ? 1901 - 2155
        datetime ? ?YYYY-MM-DD hh:mm:ss
        timestamp ? YY-MM-DD hh:mm:ss
        ? ? ? ? ? ?YYYYMMDDhhmmss
        ? ? ? ? ? ?YYMMDDhhmmss
        ? ? ? ? ? ?YYYYMMDDhhmmss
        ? ? ? ? ? ?YYMMDDhhmmss
        date ? ? ? ?YYYY-MM-DD
        ? ? ? ? ? ?YY-MM-DD
        ? ? ? ? ? ?YYYYMMDD
        ? ? ? ? ? ?YYMMDD
        ? ? ? ? ? ?YYYYMMDD
        ? ? ? ? ? ?YYMMDD
        time ? ? ? ?hh:mm:ss
        ? ? ? ? ? ?hhmmss
        ? ? ? ? ? ?hhmmss
        year ? ? ? ?YYYY
        ? ? ? ? ? ?YY
        ? ? ? ? ? ?YYYY
        ? ? ? ? ? ?YY

        4. 枚舉和集合

        -- 枚舉(enum) ----------
        enum(val1, val2, val3...)
        ? ?在已知的值中進行單選。最大數量為65535.
        ? ?枚舉值在保存時,以2個字節(jié)的整型(smallint)保存。每個枚舉值,按保存的位置順序,從1開始逐一遞增。
        ? ?表現為字符串類型,存儲卻是整型。
        ? NULL值的索引是NULL。
        ? ?空字符串錯誤值的索引值是0。


        -- 集合(set) ----------
        set(val1, val2, val3...)
        ? ?create table tab ( gender set('男', '女', '無') );

        ? ?insert into tab values ('男, 女');
        ? ?最多可以有64個不同的成員。以bigint存儲,共8個字節(jié)。采取位運算的形式。
        ? ?當創(chuàng)建表時,SET成員值的尾部空格將自動被刪除。
        • 選擇類型

        -- PHP角度
        1. 功能滿足
        2. 存儲空間盡量小,處理效率更高
        3. 考慮兼容問題

        -- IP存儲 ----------
        1. 只需存儲,可用字符串
        2. 如果需計算,查找等,可存儲為4個字節(jié)的無符號int,即unsigned
        ? ?1) PHP函數轉換
        ? ? ? ip2long可轉換為整型,但會出現攜帶符號問題。需格式化為無符號的整型。
        ? ? ? ?利用sprintf函數格式化字符串
        ? ? ? ?sprintf("%u", ip2long('192.168.3.134'));
        ? ? ? ?然后用long2ip將整型轉回IP字符串
        ? ?2) MySQL函數轉換(無符號整型,UNSIGNED)
        ? ? ? ?INET_ATON('127.0.0.1') 將IP轉為整型
        ? ? ? ?INET_NTOA(2130706433) 將整型轉為IP
        • 列屬性(列約束)

        1. PRIMARY 主鍵
        ? ?- 能唯一標識記錄的字段,可以作為主鍵。
        ? ?- 一個表只能有一個主鍵。
        ? ?- 主鍵具有唯一性。
        ? ?- 聲明字段時,用 primary key 標識。
        ? ? ? ?也可以在字段列表之后聲明
        ? ? ? ? ? ?例:create table tab ( id int, stu varchar(10), primary key (id));
        ? ?- 主鍵字段的值不能為null。
        ? ?- 主鍵可以由多個字段共同組成。此時需要在字段列表后聲明的方法。
        ? ? ? ?例:create table tab ( id int, stu varchar(10), age int, primary key (stu, age));
        2. UNIQUE 唯一索引(唯一約束)
        ? ?使得某字段的值也不能重復。
        3. NULL 約束
        ? null不是數據類型,是列的一個屬性。
        ? ?表示當前列是否可以為null,表示什么都沒有。
        ? null, 允許為空。默認。
        ? not null, 不允許為空。
        ? ?insert into tab values (null, 'val');
        ? ? ? ?-- 此時表示將第一個字段的值設為null, 取決于該字段是否允許為null
        4. DEFAULT 默認值屬性
        ? ?當前字段的默認值。
        ? ?insert into tab values (default, 'val'); ? ?-- 此時表示強制使用默認值。
        ? ?create table tab ( add_time timestamp default current_timestamp );
        ? ? ? ?-- 表示將當前時間的時間戳設為默認值。
        ? ? ? ?current_date, current_time
        5. AUTO_INCREMENT 自動增長約束
        ? ?自動增長必須為索引(主鍵或unique)
        ? ?只能存在一個字段為自動增長。
        ? ?默認為1開始自動增長??梢酝ㄟ^表屬性 auto_increment = x進行設置,或 alter table tbl auto_increment = x;
        6. COMMENT 注釋
        ? ?例:create table tab ( id int ) comment '注釋內容';
        7. FOREIGN KEY 外鍵約束
        ? ?用于限制主表與從表數據完整性。
        ? ?alter table t1 add constraint `t1_t2_fk` foreign key (t1_id) references t2(id);
        ? ? ? ?-- 將表t1的t1_id外鍵關聯到表t2的id字段。
        ? ? ? ?-- 每個外鍵都有一個名字,可以通過 constraint 指定
        ? ?存在外鍵的表,稱之為從表(子表),外鍵指向的表,稱之為主表(父表)。
        ? ?作用:保持數據一致性,完整性,主要目的是控制存儲在外鍵表(從表)中的數據。
        ? MySQL中,可以對InnoDB引擎使用外鍵約束:
        ? ?語法:
        ? ?foreign key (外鍵字段) references 主表名 (關聯字段) [主表記錄刪除時的動作] [主表記錄更新時的動作]
        ? ?此時需要檢測一個從表的外鍵需要約束為主表的已存在的值。外鍵在沒有關聯的情況下,可以設置為null.前提是該外鍵列,沒有not null。
        ? ?可以不指定主表記錄更改或更新時的動作,那么此時主表的操作被拒絕。
        ? ?如果指定了 on updateon delete:在刪除或更新時,有如下幾個操作可以選擇:
        ? ?1. cascade,級聯操作。主表數據被更新(主鍵值更新),從表也被更新(外鍵值更新)。主表記錄被刪除,從表相關記錄也被刪除。
        ? ?2. set null,設置為null。主表數據被更新(主鍵值更新),從表的外鍵被設置為null。主表記錄被刪除,從表相關記錄外鍵被設置成null。但注意,要求該外鍵列,沒有not null屬性約束。
        ? ?3. restrict,拒絕父表刪除和更新。
        ? ?注意,外鍵只被InnoDB存儲引擎所支持。其他引擎是不支持的。
        • 建表規(guī)范

        ? ?-- Normal Format, NF
        ? ? ? ?- 每個表保存一個實體信息
        ? ? ? ?- 每個具有一個ID字段作為主鍵
        ? ? ? ?- ID主鍵 + 原子表
        ? ?-- 1NF, 第一范式
        ? ? ? ?字段不能再分,就滿足第一范式。
        ? ?-- 2NF, 第二范式
        ? ? ? ?滿足第一范式的前提下,不能出現部分依賴。
        ? ? ? ?消除符合主鍵就可以避免部分依賴。增加單列關鍵字。
        ? ?-- 3NF, 第三范式
        ? ? ? ?滿足第二范式的前提下,不能出現傳遞依賴。
        ? ? ? ?某個字段依賴于主鍵,而有其他字段依賴于該字段。這就是傳遞依賴。
        ? ? ? ?將一個實體信息的數據放在一個表內實現。
        • SELECT

        SELECT [ALL|DISTINCT] select_expr FROM -> WHERE -> GROUP BY [合計函數] -> HAVING -> ORDER BY -> LIMIT
        a. select_expr
        ? ?-- 可以用 * 表示所有字段。
        ? ? ? ?select * from tb;
        ? ?-- 可以使用表達式(計算公式、函數調用、字段也是個表達式)
        ? ? ? ?select stu, 29+25, now() from tb;
        ? ?-- 可以為每個列使用別名。適用于簡化列標識,避免多個列標識符重復。
        ? ? ? ?- 使用 as 關鍵字,也可省略 as.
        ? ? ? ?select stu+10 as add10 from tb;
        b. FROM 子句
        ? ?用于標識查詢來源。
        ? ?-- 可以為表起別名。使用as關鍵字。
        ? ? ? ?SELECT * FROM tb1 AS tt, tb2 AS bb;
        ? ?-- from子句后,可以同時出現多個表。
        ? ? ? ?-- 多個表會橫向疊加到一起,而數據會形成一個笛卡爾積。
        ? ? ? ?SELECT * FROM tb1, tb2;
        ? ?-- 向優(yōu)化符提示如何選擇索引
        ? ? ? ?USE INDEX、IGNORE INDEX、FORCE INDEX
        ? ? ? ?SELECT * FROM table1 USE INDEX (key1,key2) WHERE key1=1 AND key2=2 AND key3=3;
        ? ? ? ?SELECT * FROM table1 IGNORE INDEX (key3) WHERE key1=1 AND key2=2 AND key3=3;
        c. WHERE 子句
        ? ?-- 從from獲得的數據源中進行篩選。
        ? ?-- 整型1表示真,0表示假。
        ? ?-- 表達式由運算符和運算數組成。
        ? ? ? ?-- 運算數:變量(字段)、值、函數返回值
        ? ? ? ?-- 運算符:
        ? ? ? ? ? ?=, <=>, <>, !=, <=, <, >=, >, !, &&, ||,
        ? ? ? ? ? ?in (not) null, (not) like, (not) in, (not) between and, is (not), and, or, not, xor
        ? ? ? ? ? ?is/is not 加上ture/false/unknown,檢驗某個值的真假
        ? ? ? ? ? ?<=>與<>功能相同,<=>可用于null比較
        d. GROUP BY 子句, 分組子句
        ? ?GROUP BY 字段/別名 [排序方式]
        ? ?分組后會進行排序。升序:ASC,降序:DESC
        ? ?以下[合計函數]需配合 GROUP BY 使用:
        ? ?count 返回不同的非NULL值數目 ?count(*)、count(字段)
        ? ?sum 求和
        ? ?max 求最大值
        ? ?min 求最小值
        ? ?avg 求平均值
        ? group_concat 返回帶有來自一個組的連接的非NULL值的字符串結果。組內字符串連接。
        e. HAVING 子句,條件子句
        ? ?與 where 功能、用法相同,執(zhí)行時機不同。
        ? where 在開始時執(zhí)行檢測數據,對原數據進行過濾。
        ? having 對篩選出的結果再次進行過濾。
        ? having 字段必須是查詢出來的,where 字段必須是數據表存在的。
        ? where 不可以使用字段的別名,having 可以。因為執(zhí)行WHERE代碼時,可能尚未確定列值。
        ? where 不可以使用合計函數。一般需用合計函數才會用 having
        ? SQL標準要求HAVING必須引用GROUP BY子句中的列或用于合計函數中的列。
        f. ORDER BY 子句,排序子句
        ? ?order by 排序字段/別名 排序方式 [,排序字段/別名 排序方式]...
        ? ?升序:ASC,降序:DESC
        ? ?支持多個字段的排序。
        g. LIMIT 子句,限制結果數量子句
        ? ?僅對處理好的結果進行數量限制。將處理好的結果的看作是一個集合,按照記錄出現的順序,索引從0開始。
        ? ?limit 起始位置, 獲取條數
        ? ?省略第一個參數,表示從索引0開始。limit 獲取條數
        h. DISTINCT, ALL 選項
        ? ?distinct 去除重復記錄
        ? ?默認為 all, 全部記錄
        • UNION

        • 子查詢

        • 連接查詢(join)

        • 導出

        • INSERT

        • DELETE

        • TRUNCATE

        • 備份與還原

        • 視圖

        • 事務(transaction)

        • 鎖表

        • 觸發(fā)器

        • SQL編程

        • 用戶和權限管理

        • 表維護

        • 雜項


        ……




        瀏覽 34
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 欧美阿V视频 | 一边吃奶一边做着爱 | 精品久久一区 | www.欧美日韩一级在线 | 成人精品人妻 |