国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL常用語句大全

這篇具有很好參考價(jià)值的文章主要介紹了MySQL常用語句大全。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

語句

DDL

MySQL的DDL(數(shù)據(jù)定義語言)是一組用于創(chuàng)建、修改和刪除數(shù)據(jù)庫、表、索引、視圖、存儲(chǔ)過程和觸發(fā)器等數(shù)據(jù)庫對(duì)象的語句。下面是一些常用的MySQL DDL語句和它們的詳細(xì)說明:

alter

在MySQL中,DDL(數(shù)據(jù)定義語言)用于定義和管理數(shù)據(jù)庫對(duì)象,例如表、索引、視圖等。其中,ALTER語句是DDL中的一種,用于修改已經(jīng)存在的數(shù)據(jù)庫對(duì)象的結(jié)構(gòu)或?qū)傩浴?/p>

ALTER語句的語法如下:

ALTER object_type object_name alter_type [alter_specification];

其中,object_type可以是TABLE、DATABASE、INDEX、VIEW等;object_name指定要修改的對(duì)象的名稱;alter_type可以是ADD、MODIFY、DROP、RENAME等;alter_specification指定要進(jìn)行的具體修改操作。

  1. 添加列

使用ALTER TABLE語句添加新列,可以使用ADD關(guān)鍵字,后面跟著要添加的列名和定義該列的數(shù)據(jù)類型。例如:

ALTER TABLE mytable ADD COLUMN new_column INT;
  1. 修改列

使用ALTER TABLE語句修改已存在的列,可以使用MODIFY關(guān)鍵字,后面跟著要修改的列名和定義該列的新數(shù)據(jù)類型。例如:

ALTER TABLE mytable MODIFY COLUMN old_column VARCHAR(50);
  1. 刪除列

使用ALTER TABLE語句刪除已存在的列,可以使用DROP關(guān)鍵字,后面跟著要?jiǎng)h除的列名。例如:

ALTER TABLE mytable DROP COLUMN old_column;
  1. 重命名表

使用ALTER TABLE語句重命名已存在的表,可以使用RENAME關(guān)鍵字,后面跟著要修改的表名和定義該表的新名稱。例如:

ALTER TABLE mytable RENAME TO newtable;
  1. 更改表的存儲(chǔ)引擎

使用ALTER TABLE語句更改已存在的表的存儲(chǔ)引擎,可以使用ENGINE關(guān)鍵字,后面跟著要修改的存儲(chǔ)引擎名稱。例如:

ALTER TABLE mytable ENGINE = InnoDB;
  • 更改表名

    ALTER TABLE table_name
    CHANGE old_column_name new_column_name column_definition;
    
    root@ydh 15:54 mysql>alter table t1 change  id number int;
    
  • 改用戶的登錄密碼

    alter user 'root'@'localhost' identified by  '123456';
    
  • 修改表中的列名

    root@ydh 20:10 mysql>ALTER TABLE grade CHANGE COLUMN socre score int;
    

create

在MySQL中,DDL(數(shù)據(jù)定義語言)用于定義和管理數(shù)據(jù)庫的結(jié)構(gòu),其中包括創(chuàng)建、修改和刪除數(shù)據(jù)庫、表、索引等對(duì)象。其中,CREATE語句是DDL中的一個(gè)重要命令,用于創(chuàng)建數(shù)據(jù)庫對(duì)象。

CREATE語句的語法格式如下:

  • 創(chuàng)建數(shù)據(jù)庫:

    CREATE DATABASE database_name;
    

    這條語句用于創(chuàng)建一個(gè)新的數(shù)據(jù)庫。database_name是要?jiǎng)?chuàng)建的數(shù)據(jù)庫的名稱。

  • 創(chuàng)建表:

    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        ...
    );
    

    這條語句用于創(chuàng)建一個(gè)新的表。table_name是要?jiǎng)?chuàng)建的表的名稱,column1, column2, …是表的列名和對(duì)應(yīng)的數(shù)據(jù)類型。通過列名和數(shù)據(jù)類型的定義,可以確定表的結(jié)構(gòu)。

    create table ydh.t2(id int,name varchar(10));
    

    當(dāng)在別的庫時(shí),可以創(chuàng)建在ydh庫的表。

    create table if not exists  ydh.t2 (id int ,name varchar(20));
    

    如果不存在就創(chuàng)建表,存在就不創(chuàng)建同時(shí)不會(huì)輸出錯(cuò)誤提示到屏幕上,但是會(huì)出提示。

    show warnings;
    

    查看警告消息

    create table  wang( id int not null primary key, name varchar(20) not null, sex char(1) )
    

    創(chuàng)建表的時(shí)候給屬性值一些限制。

  • 創(chuàng)建索引:

    CREATE INDEX index_name
    ON table_name (column1, column2, ...);
    

    這條語句用于在表中創(chuàng)建一個(gè)索引。index_name是索引的名稱,table_name是要?jiǎng)?chuàng)建索引的表名,(column1, column2, ...)指定了要在哪些列上創(chuàng)建索引。

  • 創(chuàng)建視圖:

    CREATE VIEW view_name AS
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;
    

    這條語句用于創(chuàng)建一個(gè)新的視圖。view_name是視圖的名稱,table_name是視圖所基于的表,column1, column2, ...是要包含在視圖中的列,WHERE condition是一個(gè)可選的過濾條件。

  • 創(chuàng)建存儲(chǔ)過程:

    CREATE PROCEDURE procedure_name()
    BEGIN
        -- 存儲(chǔ)過程的邏輯
    END;
    

    這條語句用于創(chuàng)建一個(gè)新的存儲(chǔ)過程。procedure_name是存儲(chǔ)過程的名稱,在BEGINEND之間可以編寫存儲(chǔ)過程的邏輯。

drop

DROP語句可以用于刪除表、索引、視圖、存儲(chǔ)過程、觸發(fā)器等對(duì)象。下面是一些常見的DROP語句的用法和解釋:

  • DROP TABLE:用于刪除表。語法如下:

    DROP TABLE [IF EXISTS] table_name;
    
    • table_name是要?jiǎng)h除的表的名稱。
    • IF EXISTS是可選的關(guān)鍵字,表示如果表不存在也不會(huì)拋出錯(cuò)誤。
  • DROP INDEX:用于刪除索引。語法如下:

    DROP INDEX [IF EXISTS] index_name ON table_name;
    
    • index_name是要?jiǎng)h除的索引的名稱。
    • table_name是包含索引的表的名稱。
    • IF EXISTS是可選的關(guān)鍵字,表示如果索引不存在也不會(huì)拋出錯(cuò)誤。
  • DROP VIEW:用于刪除視圖。語法如下:

    DROP VIEW [IF EXISTS] view_name;
    
    • view_name是要?jiǎng)h除的視圖的名稱。
    • IF EXISTS是可選的關(guān)鍵字,表示如果視圖不存在也不會(huì)拋出錯(cuò)誤。
  • DROP PROCEDURE:用于刪除存儲(chǔ)過程。語法如下:

    DROP PROCEDURE [IF EXISTS] procedure_name;
    
    • procedure_name是要?jiǎng)h除的存儲(chǔ)過程的名稱。
    • IF EXISTS是可選的關(guān)鍵字,表示如果存儲(chǔ)過程不存在也不會(huì)拋出錯(cuò)誤。
  • DROP TRIGGER:用于刪除觸發(fā)器。語法如下:

    DROP TRIGGER [IF EXISTS] trigger_name;
    
    • trigger_name是要?jiǎng)h除的觸發(fā)器的名稱。
    • IF EXISTS是可選的關(guān)鍵字,表示如果觸發(fā)器不存在也不會(huì)拋出錯(cuò)誤。
  • drop database ydh

    刪庫

rename

在MySQL中,DDL(數(shù)據(jù)定義語言)用于創(chuàng)建、修改和刪除數(shù)據(jù)庫和數(shù)據(jù)庫對(duì)象(如表、索引、視圖等)。RENAME是DDL語句之一,用于重命名數(shù)據(jù)庫對(duì)象。

RENAME語句用于重命名現(xiàn)有的數(shù)據(jù)庫對(duì)象,可以是表、列、索引、視圖、存儲(chǔ)過程、觸發(fā)器等。下面是RENAME語句的語法:

RENAME [TO] new_name;

在這個(gè)語法中,new_name是要為對(duì)象指定的新名稱。具體的使用方法取決于要重命名的對(duì)象類型。

下面是一些示例說明了如何使用RENAME語句來重命名不同類型的對(duì)象:

  1. 重命名表:

    RENAME TABLE table_name TO new_table_name;
    

    這將把名為table_name的表重命名為new_table_name。

  2. 重命名列:

    ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
    

    這將把名為table_name中的列column_name重命名為new_column_name

  3. 重命名索引:

    ALTER TABLE table_name RENAME INDEX index_name TO new_index_name;
    

    這將把名為table_name中的索引index_name重命名為new_index_name。

  4. 重命名視圖:

    RENAME VIEW view_name TO new_view_name;
    

    這將把名為view_name的視圖重命名為new_view_name。

DML

MySQL中的DML代表數(shù)據(jù)操縱語言(Data Manipulation Language),它用于管理數(shù)據(jù)庫中的數(shù)據(jù)。下面是一些常見的MySQL DML語句:

call

在MySQL中,DML(數(shù)據(jù)操作語言)是用于對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作的語句。其中,CALL語句用于調(diào)用存儲(chǔ)過程或函數(shù)。存儲(chǔ)過程和函數(shù)是預(yù)先定義的一組SQL語句,它們可以接受參數(shù)并返回結(jié)果。

下面是CALL語句的語法:

CALL procedure_name(arguments);

其中,procedure_name是要調(diào)用的存儲(chǔ)過程或函數(shù)的名稱,arguments是傳遞給存儲(chǔ)過程或函數(shù)的參數(shù)列表。

以下是一些關(guān)于CALL語句的詳細(xì)解釋和示例:

  1. 調(diào)用存儲(chǔ)過程:
    如果要調(diào)用存儲(chǔ)過程,可以使用CALL語句,并提供所需的參數(shù)。例如,假設(shè)有一個(gè)名為GetCustomer的存儲(chǔ)過程,它接受一個(gè)customer_id參數(shù),并返回相應(yīng)的客戶信息:

    CALL GetCustomer(123);
    

    上述語句將調(diào)用名為GetCustomer的存儲(chǔ)過程,并將參數(shù)值123傳遞給它。

  2. 調(diào)用函數(shù):
    如果要調(diào)用函數(shù),也可以使用CALL語句。函數(shù)調(diào)用的語法與存儲(chǔ)過程類似。例如,假設(shè)有一個(gè)名為CalculateTotal的函數(shù),它接受兩個(gè)參數(shù)并返回它們的總和:

    CALL CalculateTotal(10, 20);
    

    上述語句將調(diào)用名為CalculateTotal的函數(shù),并將參數(shù)值1020傳遞給它。

  3. 獲取存儲(chǔ)過程或函數(shù)的返回值:
    存儲(chǔ)過程和函數(shù)可以返回一個(gè)或多個(gè)值。要獲取存儲(chǔ)過程或函數(shù)的返回值,可以使用CALL語句并將其結(jié)果存儲(chǔ)到變量中。例如,假設(shè)存儲(chǔ)過程GetCustomer返回客戶的姓名和地址,可以使用以下方式獲取返回值:

    CALL GetCustomer(123) INTO @name, @address;
    

    上述語句將調(diào)用GetCustomer存儲(chǔ)過程,并將返回的姓名和地址存儲(chǔ)在變量@name@address中。

總結(jié)來說,CALL語句用于調(diào)用存儲(chǔ)過程或函數(shù),并提供所需的參數(shù)。它可以用于執(zhí)行一系列預(yù)定義的SQL語句,并且還可以獲取存儲(chǔ)過程或函數(shù)的返回值。

delete

在MySQL中,DML(Data Manipulation Language)的DELETE語句用于從數(shù)據(jù)庫表中刪除數(shù)據(jù)。DELETE語句允許你根據(jù)特定的條件刪除表中的行。

DELETE語法如下所示:

DELETE FROM table_name
WHERE condition;
  • DELETE FROM table_name指定要從哪個(gè)表中刪除數(shù)據(jù)。
  • WHERE condition是可選的,它允許你指定一個(gè)條件來限制刪除的行。如果省略WHERE子句,則將刪除表中的所有行。

以下是對(duì)DELETE語句的各個(gè)部分進(jìn)行詳細(xì)解釋:

  1. DELETE FROM: 這是DELETE語句的關(guān)鍵字和子句。它告訴MySQL你要執(zhí)行刪除操作,并指定要?jiǎng)h除數(shù)據(jù)的表名。

  2. table_name: 這是要?jiǎng)h除數(shù)據(jù)的表的名稱。你需要替換它為實(shí)際表名。

  3. WHERE condition: 這是可選的部分,它允許你指定一個(gè)條件來限制刪除的行。只有滿足條件的行才會(huì)被刪除。條件可以使用比較運(yùn)算符(如=, <>, <, >, <=, >=)和邏輯運(yùn)算符(如AND, OR, NOT)進(jìn)行組合。

一些示例:

-- 刪除表中的所有行
DELETE FROM table_name;

-- 刪除符合條件的行
DELETE FROM table_name
WHERE condition;

-- 刪除特定ID的行
DELETE FROM table_name
WHERE id = 1;

-- 刪除符合多個(gè)條件的行
DELETE FROM table_name
WHERE condition1 AND condition2;

需要注意的是,DELETE語句執(zhí)行后將永久性地從表中刪除數(shù)據(jù),并且無法撤銷。因此,在執(zhí)行DELETE語句之前,請(qǐng)務(wù)必謹(jǐn)慎,并確保你真正需要?jiǎng)h除這些數(shù)據(jù)。在刪除數(shù)據(jù)之前,最好先創(chuàng)建數(shù)據(jù)的備份以防止意外刪除。

do

在MySQL中,DML代表數(shù)據(jù)操作語言(Data Manipulation Language),它是一組用于在數(shù)據(jù)庫中執(zhí)行數(shù)據(jù)操作的語句。其中,DO是MySQL的一個(gè)DML語句之一,它允許您執(zhí)行一些簡(jiǎn)單的操作或計(jì)算,而無需返回任何結(jié)果。

DO語句的語法如下:

DO expr

在這里,expr是一個(gè)表達(dá)式,可以是一個(gè)函數(shù)調(diào)用、賦值操作、條件語句等。DO語句會(huì)按照給定的順序執(zhí)行expr中的操作,并且不會(huì)返回任何結(jié)果集。

下面是一些DO語句的示例:

  1. 執(zhí)行一個(gè)簡(jiǎn)單的計(jì)算并將結(jié)果存儲(chǔ)在變量中:
DO @result := 2 + 3;

在這個(gè)例子中,DO語句執(zhí)行了一個(gè)加法操作,并將結(jié)果存儲(chǔ)在名為@result的用戶變量中。

  1. 執(zhí)行一個(gè)函數(shù)調(diào)用:
DO SLEEP(5);

這個(gè)例子中的DO語句調(diào)用了MySQL的SLEEP函數(shù),它會(huì)使當(dāng)前線程休眠5秒鐘。

  1. 使用條件語句執(zhí)行不同的操作:
DO IF (@condition = 1) THEN
    -- 執(zhí)行操作1
ELSE
    -- 執(zhí)行操作2
END IF;

在這個(gè)例子中,DO語句根據(jù)條件變量@condition的值執(zhí)行不同的操作。

需要注意的是,DO語句通常用于執(zhí)行一些簡(jiǎn)單的操作或計(jì)算,而不是用于處理復(fù)雜的查詢或數(shù)據(jù)修改。如果您需要執(zhí)行更復(fù)雜的操作,可能需要使用其他DML語句,如SELECT、INSERTUPDATEDELETE。

handler

Handler是MySQL的一個(gè)存儲(chǔ)引擎接口,它允許開發(fā)者以編程的方式直接訪問存儲(chǔ)引擎,并對(duì)表的行進(jìn)行操作。Handler提供了一組方法,可以用于遍歷、讀取、修改和刪除表中的行。

以下是一些常用的Handler方法:

  1. handler::open:打開一個(gè)表,并返回一個(gè)句柄,用于后續(xù)的操作。
  2. handler::read:讀取表中的下一行數(shù)據(jù)。
  3. handler::update:更新當(dāng)前行的數(shù)據(jù)。
  4. handler::delete:刪除當(dāng)前行。
  5. handler::insert:在表中插入一行新數(shù)據(jù)。
  6. handler::index_read:根據(jù)索引讀取表中的下一行數(shù)據(jù)。
  7. handler::index_next:將讀取指針移動(dòng)到索引中的下一行。

使用Handler進(jìn)行行級(jí)操作的一個(gè)典型場(chǎng)景是需要對(duì)大量數(shù)據(jù)進(jìn)行批量處理或者數(shù)據(jù)的逐行處理。通過使用Handler,可以避免一次性將所有數(shù)據(jù)加載到內(nèi)存中,而是可以按需讀取和處理數(shù)據(jù),節(jié)省內(nèi)存和提高效率。

需要注意的是,Handler的功能和方法在不同的存儲(chǔ)引擎中可能有所差異,因?yàn)槊總€(gè)存儲(chǔ)引擎對(duì)于數(shù)據(jù)的組織和存儲(chǔ)方式都有自己的實(shí)現(xiàn)。因此,在使用Handler之前,需要了解所使用的存儲(chǔ)引擎對(duì)Handler的支持情況以及具體的使用方法。

另外,MySQL也提供了其他的編程接口和工具,如MySQL Connector/NET、MySQL Connector/J等,可以更方便地與MySQL數(shù)據(jù)庫進(jìn)行交互和操作。這些工具提供了更高級(jí)的抽象和功能,可以更快速地實(shí)現(xiàn)常見的數(shù)據(jù)庫操作,而無需直接使用Handler接口。

insert

在MySQL中,DML代表數(shù)據(jù)操作語言(Data Manipulation Language),用于插入、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)。在DML中,INSERT語句用于將新的行插入到數(shù)據(jù)庫表中。下面是INSERT語句的詳細(xì)解釋:

語法:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • INSERT INTO:指定要插入數(shù)據(jù)的表名。
  • table_name:要插入數(shù)據(jù)的目標(biāo)表的名稱。
  • (column1, column2, column3, ...):指定要插入數(shù)據(jù)的列名。如果省略列名,那么將需要為所有表的列提供值。
  • VALUES:用于指定要插入的值。
  • (value1, value2, value3, ...):指定要插入的實(shí)際值。它們必須與列名的順序相對(duì)應(yīng)。

示例:

INSERT INTO customers (id, name, email)
VALUES (1, 'John Doe', 'john.doe@example.com');

在上面的示例中,我們向"customers"表中插入了一行數(shù)據(jù)。我們指定了要插入的列(id、name和email),并提供了相應(yīng)的值。

還有其他一些INSERT語句的用法,例如:

  1. 插入多行數(shù)據(jù):
INSERT INTO customers (id, name, email)
VALUES (1, 'John Doe', 'john.doe@example.com'),
       (2, 'Jane Smith', 'jane.smith@example.com'),
       (3, 'Bob Johnson', 'bob.johnson@example.com');

使用逗號(hào)分隔的多個(gè)值集來一次性插入多行數(shù)據(jù)。

  1. 插入選擇查詢的結(jié)果:
INSERT INTO customers (name, email)
SELECT name, email FROM new_customers;

這將從"new_customers"表中選擇"name"和"email"列的值,并將它們插入到"customers"表中的相應(yīng)列中。

注意:

  • 字符串和日期類型數(shù)據(jù)應(yīng)該包含在引號(hào)中
  • 插入的數(shù)據(jù)大小應(yīng)該在字段的規(guī)定范圍內(nèi)

load

在MySQL中,DML(Data Manipulation Language)是用于操作數(shù)據(jù)庫中數(shù)據(jù)的一組語句。其中之一是LOAD語句,它用于將數(shù)據(jù)從外部源(如文本文件)加載到MySQL表中。LOAD語句可以非常有用,特別是當(dāng)需要將大量數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫時(shí)。

LOAD語句的語法如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [CHARACTER SET charset_name]
    [FIELDS
        [TERMINATED BY 'string']
        [ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var
        [, col_name_or_user_var] ...)]
    [SET col_name = expr
        [, col_name = expr] ...]

下面是LOAD語句中的各個(gè)組成部分的詳細(xì)解釋:

  • LOW_PRIORITY:指定在數(shù)據(jù)加載期間使用低優(yōu)先級(jí)。如果同時(shí)有其他讀操作在進(jìn)行,LOW_PRIORITY可以避免對(duì)讀操作的干擾。它在后臺(tái)運(yùn)行,但可能導(dǎo)致加載時(shí)間延長(zhǎng)。
  • CONCURRENT:指定在數(shù)據(jù)加載期間允許并發(fā)插入。這對(duì)于在高負(fù)載環(huán)境下加載大量數(shù)據(jù)時(shí)非常有用。但需要注意,如果表上有觸發(fā)器或外鍵約束,可能會(huì)導(dǎo)致性能下降。
  • LOCAL:指定從客戶端的本地文件系統(tǒng)加載數(shù)據(jù),而不是從服務(wù)器文件系統(tǒng)加載。
  • INFILE 'file_name':指定要加載的外部數(shù)據(jù)文件的路徑和文件名。
  • REPLACE:如果指定了該選項(xiàng),則新數(shù)據(jù)將替換表中的現(xiàn)有數(shù)據(jù),如果存在相同的唯一鍵值。注意,這將刪除現(xiàn)有數(shù)據(jù),然后插入新數(shù)據(jù)。
  • IGNORE:如果指定了該選項(xiàng),則在加載數(shù)據(jù)時(shí)將忽略遇到的重復(fù)行,而不會(huì)導(dǎo)致錯(cuò)誤。
  • INTO TABLE tbl_name:指定要將數(shù)據(jù)加載到的目標(biāo)表的名稱。
  • PARTITION (partition_name [, partition_name] ...):如果目標(biāo)表是分區(qū)表,可以指定要加載數(shù)據(jù)的特定分區(qū)。
  • CHARACTER SET charset_name:指定外部數(shù)據(jù)文件中的字符集編碼。
  • FIELDS:用于定義字段分隔符、字段引用符和轉(zhuǎn)義符的選項(xiàng)。
  • LINES:用于定義行起始標(biāo)識(shí)符和行終止標(biāo)識(shí)符的選項(xiàng)。
  • IGNORE number {LINES | ROWS}:指定要忽略的行數(shù)。
  • col_name_or_user_var:指定要加載數(shù)據(jù)的目標(biāo)表的列名或用戶變量。
  • SET col_name = expr:在加載數(shù)據(jù)時(shí),可以使用表達(dá)式為目標(biāo)表的列賦值。

這些選項(xiàng)可以根據(jù)需要進(jìn)行組合使用,以滿足特定的數(shù)據(jù)加載需求。需要注意的是,LOAD語句在加載數(shù)據(jù)時(shí)執(zhí)行的是原子操作,要么全部成功,要么全部失敗,不會(huì)部分成功部分失敗。如果在加載數(shù)據(jù)期間出現(xiàn)錯(cuò)誤,可以使用SHOW WARNINGS語句查看警告信息,并根據(jù)需要進(jìn)行調(diào)整和處理。

replace

REPLACE語句用于插入或替換數(shù)據(jù),它的工作方式類似于INSERT語句,但具有以下不同之處:

  1. 如果要插入的行在表中不存在,則REPLACE語句將插入一條新記錄,就像INSERT一樣。

  2. 如果要插入的行在表中已經(jīng)存在(根據(jù)主鍵或唯一索引判斷),則REPLACE語句將刪除已存在的行,并插入一條新記錄來替換它。

因此,REPLACE語句在插入數(shù)據(jù)時(shí)具有更新的能力,如果存在沖突的記錄,則會(huì)覆蓋它們。

REPLACE語句的基本語法如下:

REPLACE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

其中,table_name是要進(jìn)行操作的表名,column1, column2, ...是要插入數(shù)據(jù)的列名,value1, value2, ...是要插入的具體數(shù)值。

需要注意的是,REPLACE語句要求目標(biāo)表至少具有一個(gè)主鍵或唯一索引,這樣才能判斷行是否已經(jīng)存在。否則,REPLACE語句將按照普通的INSERT語句進(jìn)行操作,而不會(huì)執(zhí)行替換操作。

另外,當(dāng)使用REPLACE語句替換已存在的行時(shí),MySQL會(huì)進(jìn)行以下操作:

  1. 刪除已存在的行。

  2. 插入新行。

因此,如果有其他與已存在行相關(guān)聯(lián)的數(shù)據(jù),這些數(shù)據(jù)也會(huì)被刪除。這是REPLACE和UPDATE語句之間的一個(gè)重要區(qū)別。UPDATE語句只會(huì)更新已存在行的數(shù)據(jù),而不會(huì)刪除任何數(shù)據(jù)。

需要謹(jǐn)慎使用REPLACE語句,特別是在涉及與其他表關(guān)聯(lián)的數(shù)據(jù)時(shí)。如果需要保留已存在行的相關(guān)數(shù)據(jù),應(yīng)該使用UPDATE語句進(jìn)行更新操作。

select

SELECT語句是最常用的DML語句之一,用于從數(shù)據(jù)庫表中檢索數(shù)據(jù)。下面是SELECT語句的詳細(xì)解釋和一些常見用法:

  • 基本語法:

    SELECT 列名1, 列名2, ... FROM 表名 WHERE 條件;
    
  • 列名:表示要檢索的列的名稱??梢允褂猛ㄅ浞?*)來選擇所有列。

  • 表名:表示要從中檢索數(shù)據(jù)的表的名稱。

  • WHERE條件:用于過濾數(shù)據(jù)的條件表達(dá)式??梢允褂帽容^操作符(如=、<>、<、>、<=、>=)、邏輯操作符(如AND、OR、NOT)以及通配符(如LIKE)進(jìn)行條件過濾。

  • 示例:

    -- 選擇所有列的數(shù)據(jù)
    SELECT * FROM 表名;
    
    -- 選擇特定列的數(shù)據(jù)
    SELECT 列名1, 列名2 FROM 表名;
    
    -- 選擇符合條件的數(shù)據(jù)
    SELECT * FROM 表名 WHERE 列名 =;
    
    -- 使用邏輯操作符
    SELECT * FROM 表名 WHERE 列名1 =1 AND 列名2 <>2;
    
    -- 使用通配符進(jìn)行模糊匹配
    SELECT * FROM 表名 WHERE 列名 LIKE '值%';
    
  • 結(jié)果集排序:

    SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC];
    

    可以使用ORDER BY子句對(duì)結(jié)果集進(jìn)行排序。默認(rèn)情況下,按升序(ASC)對(duì)數(shù)據(jù)進(jìn)行排序,也可以使用降序(DESC)進(jìn)行排序。

  • 結(jié)果集限制:

    SELECT * FROM 表名 LIMIT 行數(shù) OFFSET 偏移量;
    

    使用LIMIT關(guān)鍵字可以限制返回的行數(shù)。OFFSET可選,用于指定從結(jié)果集中的哪個(gè)位置開始返回行。

  • 聚合函數(shù):

    SELECT 聚合函數(shù)(列名) FROM 表名;
    

    可以使用聚合函數(shù)(如COUNT、SUM、AVG、MIN、MAX)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。

  • select database();

    查詢當(dāng)前數(shù)據(jù)庫

subqueries

子查詢(subquery)是DML語句中的一個(gè)重要概念,它是嵌套在其他查詢語句中的查詢。

子查詢可以嵌套在SELECT、INSERT、UPDATE和DELETE語句中,用于提供更復(fù)雜的查詢和操作功能。下面詳細(xì)解釋MySQL中DML中的子查詢用法:

  1. SELECT語句中的子查詢:
    子查詢可以用作SELECT語句中的列子查詢或表子查詢。列子查詢返回一個(gè)單一的值,作為SELECT語句中的一列數(shù)據(jù)。表子查詢返回一個(gè)結(jié)果集,作為SELECT語句中的一個(gè)表。

    示例1:列子查詢

    SELECT column1, (SELECT column2 FROM table2 WHERE condition) AS column3 FROM table1;
    

    示例2:表子查詢

    SELECT column1, column2 FROM (SELECT column3, column4 FROM table2) AS subquery_table WHERE condition;
    
  2. INSERT語句中的子查詢:
    子查詢可以用作INSERT語句中的值來源,可以從其他表中檢索數(shù)據(jù)并插入到目標(biāo)表中。

    示例:

    INSERT INTO table1 (column1, column2)
    SELECT column3, column4 FROM table2 WHERE condition;
    
  3. UPDATE語句中的子查詢:
    子查詢可以用作UPDATE語句中的條件或更新的值來源。

    示例1:作為條件

    UPDATE table1 SET column1 = value WHERE column2 IN (SELECT column3 FROM table2 WHERE condition);
    

    示例2:作為更新的值來源

    UPDATE table1 SET column1 = (SELECT column2 FROM table2 WHERE condition) WHERE condition2;
    
  4. DELETE語句中的子查詢:
    子查詢可以用作DELETE語句中的條件,用于指定要?jiǎng)h除的行。

    示例:

    DELETE FROM table1 WHERE column1 IN (SELECT column2 FROM table2 WHERE condition);
    

子查詢的優(yōu)點(diǎn)是可以使查詢更具靈活性和復(fù)雜性,可以嵌套多個(gè)子查詢以實(shí)現(xiàn)更復(fù)雜的操作。然而,過多的子查詢可能會(huì)影響查詢性能,因此在使用子查詢時(shí)應(yīng)注意優(yōu)化查詢語句,避免性能問題。

upadte

UPDATE是DML的一種操作,用于修改數(shù)據(jù)庫表中的現(xiàn)有數(shù)據(jù)。下面是對(duì)MySQL中UPDATE語句的詳細(xì)解釋:

語法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name:指定要更新數(shù)據(jù)的表名。
  • SET:指定要更新的列和對(duì)應(yīng)的新值。
  • column1 = value1, column2 = value2, ...:指定要更新的列和它們的新值。可以更新多個(gè)列,每個(gè)列和值之間使用等號(hào)(=)分隔,不同列之間使用逗號(hào)(,)分隔。
  • WHERE:可選的,用于指定更新數(shù)據(jù)的條件。只有滿足條件的行才會(huì)被更新。如果沒有指定WHERE子句,將更新表中的所有行。

示例:
假設(shè)有一個(gè)名為users的表,包含idnameage列。我們可以使用UPDATE語句來更新表中的數(shù)據(jù):

UPDATE users
SET name = 'John', age = 30
WHERE id = 1;

上述示例將表usersid為1的行的name列更新為’John’,age列更新為30。

注意事項(xiàng):

  • 如果不提供WHERE子句,將會(huì)更新表中的所有行,這可能導(dǎo)致意外修改大量數(shù)據(jù)。
  • 使用WHERE子句可以精確指定要更新的行,避免對(duì)整個(gè)表進(jìn)行更新。
  • SET子句中,可以使用表達(dá)式、函數(shù)或者其他列的值來計(jì)算新值。
  • 可以一次性更新多個(gè)列,每個(gè)列和新值之間使用等號(hào)(=)進(jìn)行分隔。
  • 更新操作會(huì)直接修改數(shù)據(jù)庫中的數(shù)據(jù),請(qǐng)謹(jǐn)慎使用,并確保在執(zhí)行之前備份重要數(shù)據(jù)。

truncate

在MySQL中,DDL(數(shù)據(jù)定義語言)用于定義和管理數(shù)據(jù)庫對(duì)象,如表、索引、視圖等。其中,TRUNCATE語句是DDL語句之一,用于刪除表中的所有數(shù)據(jù)。

TRUNCATE TABLE語句的作用是快速清空表中的數(shù)據(jù),但保留表的結(jié)構(gòu)、索引和約束等定義。與DELETE語句不同,TRUNCATE TABLE語句不會(huì)記錄每一行刪除的操作日志,因此執(zhí)行速度更快。這使得TRUNCATE TABLE語句在需要?jiǎng)h除表中所有數(shù)據(jù)時(shí)是一種高效的選擇。

下面是TRUNCATE TABLE語句的語法:

TRUNCATE TABLE table_name;

其中,table_name是要清空數(shù)據(jù)的表名。

需要注意以下幾點(diǎn):

  1. TRUNCATE TABLE語句將刪除表中的所有行,而不是僅刪除部分行。因此,在執(zhí)行此語句之前,應(yīng)謹(jǐn)慎備份或確認(rèn)數(shù)據(jù)不再需要。

  2. TRUNCATE TABLE語句將重置自增列(如果有的話),使下一次插入的數(shù)據(jù)從起始值開始。

  3. TRUNCATE TABLE語句不會(huì)觸發(fā)與表相關(guān)聯(lián)的觸發(fā)器(Trigger)。

  4. TRUNCATE TABLE語句的執(zhí)行權(quán)限要求與DELETE語句相同。

  5. TRUNCATE TABLE語句不能用于視圖,只能用于表。

總之,TRUNCATE TABLE語句是一種快速清空表數(shù)據(jù)的方法,適用于需要?jiǎng)h除表中所有數(shù)據(jù)而不關(guān)心逐行刪除的情況。但請(qǐng)務(wù)必在執(zhí)行此語句之前進(jìn)行數(shù)據(jù)備份或確認(rèn)數(shù)據(jù)不再需要。

truncate和delete區(qū)別

MySQL的delete和truncate有以下主要區(qū)別:

  1. delete刪除指定的記錄, truncate清空整個(gè)表。
  2. delete影響行數(shù),可以返回刪除的記錄數(shù)量。truncate不返回影響的行數(shù)。
  3. delete支持where條件,可以 selectively刪除記錄。truncate清空整張表。
  4. delete可以被回滾(會(huì)產(chǎn)生二進(jìn)制日志),支持事務(wù)。truncate是一個(gè)非事務(wù)性操作, committed后無法回滾(不會(huì)產(chǎn)生二進(jìn)制日志)。
  5. truncate效率更高,對(duì)于大表速度比delete快很多。
  6. truncate清空表后,自動(dòng)重新設(shè)置自增列。delete不會(huì)影響auto_increment的值。
  7. 使用truncate后,需要重新創(chuàng)建表的約束(constraints)和觸發(fā)器(triggers)。

用法:

  • delete刪除指定記錄:
delete from table_name where condition;
  • truncate清空整張表:
truncate table table_name;

一般來說:

  • 如果要選擇性的刪除表中的某些記錄,使用delete。
  • 如果要清空一張大表的數(shù)據(jù)(不刪除表結(jié)構(gòu)),使用truncate。 truncate效率更高。

insert和replace區(qū)別

insert 和replace的區(qū)別主要有:

  1. insert用于向表中插入新記錄。replace用于替換表中的已存在記錄。
  2. insert不會(huì)替換已存在的記錄,如果有重復(fù)的主鍵或唯一索引,則插入失敗。replace會(huì)先刪除已存在的記錄,然后插入新記錄。
  3. insert可以插入多條記錄,使用值列表。replace只能替換一條記錄。
  4. insert不影響其他非重復(fù)唯一索引。replace會(huì)刪除已存在的記錄,然后插入新記錄,會(huì)影響其他索引。
  5. insert默認(rèn)不更新自動(dòng)增長(zhǎng)編號(hào),replace會(huì)重新設(shè)定自動(dòng)增長(zhǎng)編號(hào)。

用法:

  • insert插入:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
  • replace替換:
REPLACE INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...)

一般來說:

  • 如果要向表中插入全新記錄,使用insert。
  • 如果要替換已存在的記錄(根據(jù)主鍵或唯一索引),使用replace。 replace相當(dāng)于先delete該條記錄,然后再insert一條相同的記錄。

所以:

  • 如果只是更新記錄內(nèi)容,而不是完全替換一條記錄,最好使用update語句。
  • 如果要批量插入記錄,使用insert更高效。

DQL

MySQL的DQL(Data Query Language)是指用于執(zhí)行數(shù)據(jù)查詢操作的語言,主要用于從數(shù)據(jù)庫中檢索數(shù)據(jù)。

DQL包括了一系列的關(guān)鍵字、子句和函數(shù),用于指定查詢的邏輯和條件。以下是MySQL中常用的DQL關(guān)鍵字和子句的詳細(xì)介紹:

  1. SELECT:用于指定要查詢的字段列表??梢赃x擇查詢所有字段(使用星號(hào) *)或指定具體的字段名。

  2. FROM:用于指定要查詢的表名或表的聯(lián)接。可以查詢單個(gè)表或多個(gè)表的聯(lián)接結(jié)果。

  3. WHERE:用于指定查詢的篩選條件。可以使用各種條件操作符(例如等于、大于、小于等)來篩選滿足特定條件的數(shù)據(jù)。

  4. GROUP BY:用于按照指定的字段進(jìn)行分組??梢詫?shù)據(jù)按照某個(gè)或多個(gè)字段的值進(jìn)行分組,通常用于配合聚合函數(shù)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。

  5. HAVING:對(duì)分組后的結(jié)果進(jìn)行篩選??梢允褂脳l件表達(dá)式篩選滿足特定條件的分組數(shù)據(jù)。

  6. ORDER BY:用于指定查詢結(jié)果的排序方式??梢园凑找粋€(gè)或多個(gè)字段進(jìn)行升序(ASC)或降序(DESC)排序。

  7. LIMIT:用于限制返回結(jié)果的數(shù)量,用于分頁或限制返回行數(shù)??梢灾付◤牟樵兘Y(jié)果中的哪一行開始,以及返回的行數(shù)。

除了關(guān)鍵字和子句,MySQL的DQL還支持各種內(nèi)置函數(shù)和運(yùn)算符,用于處理查詢結(jié)果、轉(zhuǎn)換數(shù)據(jù)類型、進(jìn)行數(shù)學(xué)計(jì)算等。

通過組合使用這些關(guān)鍵字、子句和函數(shù),你可以構(gòu)建復(fù)雜的查詢語句,從數(shù)據(jù)庫中獲取特定條件下的數(shù)據(jù)、進(jìn)行數(shù)據(jù)統(tǒng)計(jì)和分組、排序結(jié)果等。

SELECT

WHERE

在MySQL中,WHERE 子句是用于在查詢語句中指定篩選條件的關(guān)鍵字。它用于從表中選擇滿足特定條件的數(shù)據(jù)行,并將其包含在結(jié)果集中。

語法:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
WHERE condition;
  • SELECT:指定要查詢的列名或使用通配符 * 查詢所有列。
  • FROM:指定要查詢的表名。
  • WHERE:用于指定篩選條件。

WHERE 子句中,可以使用各種比較操作符和邏輯操作符來構(gòu)建條件表達(dá)式。這些操作符用于比較列與值之間的關(guān)系,或比較列與列之間的關(guān)系,以確定是否滿足特定的條件。

條件:

比較運(yùn)算符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或 != 不等于
BETWEEN … AND … 在某個(gè)范圍內(nèi)(含最小、最大值)
IN(…) 在in之后的列表中的值,多選一
LIKE 占位符 模糊匹配(_匹配單個(gè)字符,%匹配任意個(gè)字符)
IS NULL 是NULL
邏輯運(yùn)算符 功能
AND 或 && 并且(多個(gè)條件同時(shí)成立)
OR 或 || 或者(多個(gè)條件任意一個(gè)成立)
NOT 或 ! 非,不是
xor 異或

還可以使用正則

例子

SELECT * 
FROM employees
WHERE age > 25 AND salary > 50000;

上述查詢使用了兩個(gè)條件,篩選出年齡大于25且薪資大于50000的員工數(shù)據(jù)。

between…and使用

SELECT PLAYERNO,BIRTH_DATE 
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) BETWEEN 1962 AND	1964;

in、not in

SELECT PLAYERNO,BIRTH_DATE 
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) IN(1965,1963,1970);
SELECT PLAYERNO,BIRTH_DATE 
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) NOT IN(1965,1963,1970);
like

在MySQL中,LIKE 是一種用于模式匹配的操作符,常用于在查詢中比較字符串。

LIKE 操作符通常與通配符一起使用,以確定一個(gè)字符串是否與給定的模式相匹配。以下是常用的通配符:

  1. 百分號(hào)(%):表示任意字符序列(包括零個(gè)字符或多個(gè)字符)。
  • 例如:'abc%' 匹配以 “abc” 開頭的任意字符序列。
  1. 下劃線(_):表示單個(gè)字符的任意位置。
  • 例如:'a_c' 匹配以 “a” 開頭、以 “c” 結(jié)尾的三個(gè)字符的序列。

在某些情況下,如果要在模式中使用通配符字符 %_ 本身,而不是作為通配符,需要進(jìn)行轉(zhuǎn)義。在MySQL中,可以使用 \ 進(jìn)行轉(zhuǎn)義。

在使用 LIKE 操作符時(shí),可以在查詢中將通配符放置在待匹配的字符串中,以進(jìn)行模式匹配。以下是幾個(gè)示例:

  1. 匹配以特定字符串開頭的值:
SELECT column_name
FROM table_name
WHERE column_name LIKE 'abc%';
  1. 匹配以特定字符串結(jié)尾的值:
SELECT column_name
FROM table_name
WHERE column_name LIKE '%xyz';
  1. 匹配包含特定字符串的值:
SELECT column_name
FROM table_name
WHERE column_name LIKE '%def%';
  1. 使用下劃線進(jìn)行單個(gè)字符匹配:
SELECT column_name
FROM table_name
WHERE column_name LIKE 'a_c';

需要注意的是,LIKE 操作符默認(rèn)是不區(qū)分大小寫的,如果要進(jìn)行大小寫敏感的匹配,可以使用 COLLATE 子句指定區(qū)分大小寫的字符集。

regexp

在MySQL中,REGEXP 是一種用于執(zhí)行正則表達(dá)式匹配的操作符。它用于比較一個(gè)字符串是否與指定的正則表達(dá)式模式匹配。

REGEXP 操作符的語法如下:

SELECT column_name(s)
FROM table_name
WHERE column_name REGEXP pattern;

其中,column_name 是要比較的列名,table_name 是要查詢的表名,pattern 是要匹配的正則表達(dá)式模式。

正則表達(dá)式是一種用于模式匹配和搜索的強(qiáng)大工具,可以使用各種元字符和模式修飾符來定義匹配規(guī)則。在 MySQL 中,使用基于 POSIX 擴(kuò)展的正則表達(dá)式語法。

以下是一些常見的正則表達(dá)式元字符和模式修飾符的示例:

  • .:匹配任意單個(gè)字符。
  • *:匹配前一個(gè)元素零次或多次。
  • +:匹配前一個(gè)元素一次或多次。
  • ?:匹配前一個(gè)元素零次或一次。
  • ^:匹配輸入字符串的開始位置。
  • $:匹配輸入字符串的結(jié)束位置。
  • [...]:匹配方括號(hào)內(nèi)的任意一個(gè)字符。
  • (a|b):匹配 ab

例如,以下是幾個(gè)使用 REGEXP 進(jìn)行正則表達(dá)式匹配的示例:

  1. 匹配以數(shù)字開頭的字符串:

    SELECT column_name
    FROM table_name
    WHERE column_name REGEXP '^[0-9]';
    
  2. 匹配包含指定單詞的字符串:

    SELECT column_name
    FROM table_name
    WHERE column_name REGEXP '[[:<:]]word[[:>:]]';
    
  3. 匹配以特定模式結(jié)尾的字符串:

    SELECT column_name
    FROM table_name
    WHERE column_name REGEXP 'pattern$';
    

需要注意的是,正則表達(dá)式模式區(qū)分大小寫。如果希望進(jìn)行不區(qū)分大小寫的匹配,可以在 REGEXP 前面添加 BINARY 關(guān)鍵字。

FROM

GROUP BY

在MySQL中,分組查詢(Group By)用于將結(jié)果集按照一個(gè)或多個(gè)列的值進(jìn)行分組,并對(duì)每個(gè)組應(yīng)用聚合函數(shù),如求和、計(jì)數(shù)、平均值等。分組查詢常用于統(tǒng)計(jì)和匯總數(shù)據(jù)。

下面是分組查詢的基本語法:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE conditions
GROUP BY column1, column2, ...

其中,column1, column2, ... 是你要選擇的列名,aggregate_function(column) 是對(duì)某一列應(yīng)用的聚合函數(shù)(如SUM、COUNT、AVG等),table_name 是要查詢的表名,conditions 是可選的篩選條件。

以下是一個(gè)示例,演示如何使用分組查詢計(jì)算每個(gè)部門的平均工資:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

上述查詢從名為 employees 的表中選擇了 department 列和 salary 列,并對(duì) salary 列應(yīng)用了聚合函數(shù) AVG。然后,根據(jù) department 列對(duì)結(jié)果進(jìn)行分組,最后得到每個(gè)部門的平均工資。

注意事項(xiàng):

  • 分組查詢中可以同時(shí)使用多個(gè)列進(jìn)行分組,只需在 GROUP BY 子句中指定相應(yīng)的列名即可。
  • 除了聚合函數(shù)之外,SELECT 子句中列名必須是分組列或聚合函數(shù)的結(jié)果列。
  • 可以使用 HAVING 子句對(duì)分組后的結(jié)果進(jìn)行進(jìn)一步篩選。

例如,以下查詢演示了如何篩選出平均工資大于 5000 的部門:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING average_salary > 5000;
SELECT playerno,SUM(amount) FROM PENALTIES GROUP BY playerno ORDER BY SUM(amount) DESC

HAVING

在MySQL中,HAVING 子句用于在查詢結(jié)果上應(yīng)用篩選條件,對(duì)分組后的數(shù)據(jù)進(jìn)行篩選。它通常與 GROUP BY 子句一起使用,用于對(duì)聚合函數(shù)的結(jié)果進(jìn)行過濾。

以下是 HAVING 子句的詳細(xì)解釋:

語法:

SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
HAVING condition;
  • SELECT:指定要查詢的列名或使用通配符 * 查詢所有列。
  • FROM:指定要查詢的表名。
  • GROUP BY:用于對(duì)結(jié)果進(jìn)行分組的列或表達(dá)式。
  • HAVING:用于指定篩選條件。

HAVING 子句類似于 WHERE 子句,但它是在分組后應(yīng)用于分組結(jié)果的。它允許你對(duì)分組的結(jié)果使用聚合函數(shù),并篩選滿足特定條件的分組。

例如,以下是一個(gè)使用 HAVING 子句的示例:

SELECT category, COUNT(*) as count
FROM products
GROUP BY category
HAVING count > 5;

上述示例中,查詢了 products 表中的不同產(chǎn)品類別,并使用 GROUP BY 對(duì)它們進(jìn)行分組。然后使用 HAVING 子句篩選出產(chǎn)品數(shù)超過5個(gè)的分組。

需要注意的是,HAVING 子句只能在使用 GROUP BY 進(jìn)行分組操作時(shí)使用。它對(duì)分組結(jié)果進(jìn)行篩選,而不是對(duì)原始數(shù)據(jù)行進(jìn)行篩選。如果不使用 GROUP BY 子句,HAVING 子句將不起作用。

使用 HAVING 子句可以對(duì)聚合函數(shù)的結(jié)果進(jìn)行進(jìn)一步篩選,以滿足特定的條件。它允許對(duì)分組后的數(shù)據(jù)進(jìn)行篩選,并從中選擇滿足條件的分組結(jié)果。

例子

有多少球員住在Stratford并且性別是男性的,輸出數(shù)量和名字?

SELECT town,COUNT(*) ,GROUP_CONCAT(NAME) FROM PLAYERS 
	GROUP BY TOWN
	HAVING TOWN = "Stratford"

ORDER BY

在MySQL中,ORDER BY 子句用于對(duì)查詢結(jié)果進(jìn)行排序,按照指定的列或表達(dá)式的值進(jìn)行升序或降序排列。ORDER BY 子句通常緊跟在 SELECT 語句的最后。

以下是 ORDER BY 子句的詳細(xì)介紹:

語法:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • SELECT:指定要查詢的列名或使用通配符 * 查詢所有列。
  • FROM:指定要查詢的表名。
  • ORDER BY:用于指定排序的列或表達(dá)式,以及排序的順序。

ORDER BY 子句中,可以指定一個(gè)或多個(gè)列作為排序的依據(jù)。每個(gè)列可以單獨(dú)指定升序(ASC,默認(rèn))或降序(DESC)排序方式。如果沒有指定排序方式,默認(rèn)為升序排序。

例如,以下是幾個(gè)使用 ORDER BY 進(jìn)行排序的示例:

  1. 按照單個(gè)列進(jìn)行排序:

    SELECT name, age, city
    FROM customers
    ORDER BY age DESC;
    

    上述示例將按照 age 列的降序?qū)Y(jié)果進(jìn)行排序。

  2. 按照多個(gè)列進(jìn)行排序:

    SELECT name, age, city
    FROM customers
    ORDER BY city ASC, age DESC;
    

    上述示例將首先按照 city 列的升序排序,然后在相同的 city 值下按照 age 列的降序排序。

需要注意的是,可以根據(jù)具體需求在 ORDER BY 子句中指定任意數(shù)量的列。排序的順序是從左到右依次應(yīng)用的,即先按照第一個(gè)列排序,再按照第二個(gè)列排序,以此類推。

注意

只有在group by出現(xiàn)的字段才能在select選擇,其他的需要聚合函數(shù)

例子

查詢每個(gè)城市的名稱和球員的數(shù)量

SELECT town,COUNT(*) FROM PLAYERS GROUP BY town

LIMIT

在MySQL中,LIMIT 子句用于限制查詢結(jié)果返回的行數(shù)。它通常與 SELECT 語句一起使用,用于分頁或限制結(jié)果集大小。

以下是 LIMIT 子句的詳細(xì)介紹:

語法:

SELECT column1, column2, ...
FROM table_name
LIMIT offset, count;
  • SELECT:指定要查詢的列名或使用通配符 * 查詢所有列。
  • FROM:指定要查詢的表名。
  • LIMIT:用于指定限制條件。

LIMIT 子句中有兩個(gè)參數(shù):

  • offset:指定從結(jié)果集中的哪一行開始返回?cái)?shù)據(jù)(偏移量),默認(rèn)從第一行開始。
  • count:指定要返回的行數(shù)。

例如,以下是幾個(gè)使用 LIMIT 進(jìn)行結(jié)果集限制的示例:

  1. 返回前 n 行:

    SELECT * FROM table_name LIMIT n;
    

    上述示例將返回查詢結(jié)果中的前 n 行數(shù)據(jù)。

  2. 返回從 m 行開始的 n 行數(shù)據(jù):

    SELECT * FROM table_name LIMIT m, n;
    

    上述示例將返回從第 m+1 行開始的 n 行數(shù)據(jù)。

LIMIT 子句對(duì)于分頁查詢非常有用,可以將大的結(jié)果集劃分為多個(gè)頁面顯示。通過指定偏移量和行數(shù),可以選擇要返回的特定數(shù)據(jù)范圍。

需要注意的是,LIMIT 子句在排序之前應(yīng)用。因此,如果沒有指定排序規(guī)則,結(jié)果集的順序可能是不確定的。

總結(jié)來說,LIMIT 子句用于限制查詢結(jié)果返回的行數(shù)。它通過指定偏移量和行數(shù)來選擇要返回的特定數(shù)據(jù)范圍。在分頁查詢和結(jié)果集限制方面,LIMIT 子句是一個(gè)非常有用的工具。

例子

得到球員編號(hào)最低的5個(gè)球員的編號(hào)和名字,從第4個(gè)球員開始

SELECT playerno,NAME FROM PLAYERS
ORDER BY playerno
LIMIT 3,5

該查詢語句將從 PLAYERS 表中選擇 playernoNAME 兩列的數(shù)據(jù),并按照 playerno 列的升序進(jìn)行排序。然后,從排序后的結(jié)果中跳過前 3 行,返回接下來的 5 行數(shù)據(jù)作為最終的結(jié)果集。

和子查詢連用

4個(gè)最低的罰款額的平均值是多少?

SELECT AVG(amount) FROM
(SELECT DISTINCT amount FROM PENALTIES
ORDER BY amount
LIMIT 4) result;

該查詢語句首先從 PENALTIES 表中選擇不重復(fù)的 amount 列值,并按照升序進(jìn)行排序,然后僅返回前 4 行數(shù)據(jù)。接下來,針對(duì)這個(gè)結(jié)果集進(jìn)行平均值計(jì)算,并將平均值作為最終結(jié)果返回。

為什么一定要有別名的原因

在該查詢語句中,將子查詢 (SELECT DISTINCT amount FROM PENALTIES ORDER BY amount LIMIT 4) 命名為 result 是為了將其作為一個(gè)臨時(shí)表或視圖,并為其創(chuàng)建一個(gè)可引用的別名。這樣可以在外部查詢中引用該子查詢的結(jié)果。

where和having區(qū)別

MySQL中的WHEREHAVING都是用于在查詢中過濾數(shù)據(jù)的子句,但它們?cè)谑褂煤瓦m用范圍上有一些區(qū)別。

  1. WHERE子句:

    • WHERE子句用于在查詢中過濾行數(shù)據(jù),它出現(xiàn)在SELECT語句中的FROM子句之后和GROUP BY子句之前。
    • WHERE子句可以包含條件表達(dá)式,用于篩選滿足特定條件的行。
    • WHERE子句中使用的條件表達(dá)式可以包含列名、運(yùn)算符(如=<>、<>、LIKE等)和常量值。
    • WHERE子句可以使用邏輯運(yùn)算符(如AND、OR、NOT)將多個(gè)條件組合起來。
  2. HAVING子句:

    • HAVING子句用于在查詢中過濾分組后的數(shù)據(jù),它出現(xiàn)在GROUP BY子句之后和ORDER BY子句之前。
    • HAVING子句可以包含條件表達(dá)式,用于篩選滿足特定條件的分組。
    • HAVING子句中使用的條件表達(dá)式可以包含聚合函數(shù)(如SUM、AVG、COUNT等)、列名、運(yùn)算符和常量值。
    • HAVING子句可以使用邏輯運(yùn)算符將多個(gè)條件組合起來。

主要區(qū)別:

  • WHERE子句在查詢執(zhí)行之前進(jìn)行過濾,它作用于原始數(shù)據(jù)表中的行,排除不符合條件的行。而HAVING子句在數(shù)據(jù)分組之后進(jìn)行過濾,它作用于分組后的結(jié)果集,排除不符合條件的分組。
  • WHERE子句可以在任何查詢中使用,無論是否有分組操作。而HAVING子句只能在包含GROUP BY子句的查詢中使用。
  • WHERE子句中的條件可以包含任何列,包括聚合函數(shù)的參數(shù)列。而HAVING子句中的條件只能使用聚合函數(shù)和分組后的列。

簡(jiǎn)而言之,WHERE用于篩選行數(shù)據(jù),HAVING用于篩選分組后的數(shù)據(jù)。如果沒有分組操作,通常使用WHERE子句;如果有分組操作,需要對(duì)分組進(jìn)行過濾時(shí),使用HAVING子句。

  • 執(zhí)行順序:where > 聚合函數(shù) > having
  • 分組之后,查詢的字段一般為聚合函數(shù)和分組字段,查詢其他字段無任何意義

其他

show

下面是SHOW語句的幾種常見用法和它們的詳解:

  • SHOW DATABASES;
    這個(gè)語句用于顯示所有可用的數(shù)據(jù)庫。它返回一個(gè)結(jié)果集,其中包含數(shù)據(jù)庫的名稱列表。

  • SHOW TABLES;
    這個(gè)語句用于顯示當(dāng)前數(shù)據(jù)庫中的所有表。它返回一個(gè)結(jié)果集,其中包含表的名稱列表。

  • SHOW COLUMNS FROM table_name;
    這個(gè)語句用于顯示指定表的列信息。它返回一個(gè)結(jié)果集,其中包含列的名稱、數(shù)據(jù)類型、長(zhǎng)度、是否允許NULL值等信息。

  • SHOW INDEX FROM table_name;
    這個(gè)語句用于顯示指定表的索引信息。它返回一個(gè)結(jié)果集,其中包含索引的名稱、所屬表、列名等信息。

  • SHOW CREATE TABLE table_name;
    這個(gè)語句用于顯示創(chuàng)建指定表的DDL語句。它返回一個(gè)結(jié)果集,其中包含創(chuàng)建表的完整DDL語句。

  • SHOW PROCESSLIST;
    這個(gè)語句用于顯示當(dāng)前數(shù)據(jù)庫服務(wù)器上的所有活動(dòng)連接和它們的相關(guān)信息。它返回一個(gè)結(jié)果集,其中包含連接ID、用戶、執(zhí)行的查詢等信息。

  • SHOW VARIABLES;
    這個(gè)語句用于顯示當(dāng)前數(shù)據(jù)庫服務(wù)器的配置變量信息。它返回一個(gè)結(jié)果集,其中包含變量的名稱和值。

  • show create database ydh;

    MySQL將返回一個(gè)包含名為"ydh"的數(shù)據(jù)庫創(chuàng)建語句的結(jié)果集。

desc

在MySQL中,DESC(Describe)是一種DDL(數(shù)據(jù)定義語言)命令,用于顯示表結(jié)構(gòu)的詳細(xì)信息。DESC命令用于顯示表的列名、數(shù)據(jù)類型、默認(rèn)值、是否為NULL、鍵信息等,以便更好地了解表的結(jié)構(gòu)和內(nèi)容。

以下是DESC命令的常見用法和示例:

  1. 顯示表結(jié)構(gòu)

使用DESC語句可以顯示指定表的結(jié)構(gòu)。例如:

DESC mytable;

上述語句將顯示mytable表的結(jié)構(gòu),包括列名、數(shù)據(jù)類型、默認(rèn)值、是否為NULL、鍵信息等。

  1. 顯示視圖結(jié)構(gòu)

使用DESC語句也可以顯示指定視圖的結(jié)構(gòu)。例如:

DESC myview;

上述語句將顯示myview視圖的結(jié)構(gòu),包括列名、數(shù)據(jù)類型、默認(rèn)值、是否為NULL等。

需要注意的是,DESC命令用于顯示表或視圖的結(jié)構(gòu)信息,但并不執(zhí)行任何實(shí)際的操作。在使用DESC命令時(shí),應(yīng)該確保指定正確的表或視圖名稱,并注意表或視圖的大小寫、引號(hào)等細(xì)節(jié)。

use

USE 是一種特殊的 DML 語句,用于選擇當(dāng)前要操作的數(shù)據(jù)庫。

USE 語句的語法如下:

USE database_name;

其中,database_name 是要選擇的數(shù)據(jù)庫的名稱。

USE 語句的作用是將當(dāng)前會(huì)話的默認(rèn)數(shù)據(jù)庫更改為指定的數(shù)據(jù)庫。一旦執(zhí)行了 USE 語句,后續(xù)的 DML 語句將在指定的數(shù)據(jù)庫上執(zhí)行,除非另外指定了數(shù)據(jù)庫的名稱。

例如,假設(shè)我們有兩個(gè)數(shù)據(jù)庫:db1db2。如果我們想在 db1 中執(zhí)行操作,我們可以使用以下語句:

USE db1;

現(xiàn)在,任何后續(xù)的 DML 語句(如 SELECT、INSERTUPDATE、DELETE 等)將默認(rèn)在 db1 數(shù)據(jù)庫上執(zhí)行。如果我們希望在 db2 數(shù)據(jù)庫上執(zhí)行操作,我們可以再次使用 USE 語句切換到 db2

USE db2;

需要注意的是,USE 語句只影響當(dāng)前會(huì)話中的默認(rèn)數(shù)據(jù)庫,對(duì)其他會(huì)話沒有影響。當(dāng)會(huì)話結(jié)束時(shí),默認(rèn)數(shù)據(jù)庫將重置為連接時(shí)的默認(rèn)數(shù)據(jù)庫。

使用 USE 語句可以方便地切換數(shù)據(jù)庫,避免在每個(gè) DML 語句中都指定數(shù)據(jù)庫名稱。

comment

在MySQL中,COMMENT是一種用于給數(shù)據(jù)庫對(duì)象(如表、列、索引等)添加注釋或描述的功能。注釋對(duì)于理解數(shù)據(jù)庫結(jié)構(gòu)、目的和用途非常有幫助,特別是在多人協(xié)作或維護(hù)大型數(shù)據(jù)庫時(shí)。

在MySQL中,可以使用COMMENT關(guān)鍵字來添加注釋。下面是一些常見的用法和示例:

  1. 表注釋:可以在創(chuàng)建表時(shí)或者修改表時(shí)為表添加注釋。

    • 創(chuàng)建表時(shí)添加注釋:

      CREATE TABLE my_table (
        id INT,
        name VARCHAR(50)
      ) COMMENT 'This is my table';
      
    • 修改表時(shí)添加注釋:

      ALTER TABLE my_table COMMENT 'This is my table';
      
  2. 列注釋:可以在創(chuàng)建表時(shí)或者修改表時(shí)為表中的列添加注釋。

    • 創(chuàng)建表時(shí)添加注釋:

      CREATE TABLE my_table (
        id INT COMMENT 'Unique identifier',
        name VARCHAR(50) COMMENT 'Name of the entity'
      );
      
    • 修改表時(shí)添加注釋:

      ALTER TABLE my_table MODIFY COLUMN id INT COMMENT 'Unique identifier';
      
  3. 索引注釋:可以為索引添加注釋,幫助理解索引的作用或用途。

    • 創(chuàng)建索引時(shí)添加注釋:

      CREATE INDEX index_name ON my_table (column_name) COMMENT 'Index for efficient searching';
      
  4. 視圖注釋:可以為視圖添加注釋,描述視圖的目的和功能。

    • 創(chuàng)建視圖時(shí)添加注釋:

      CREATE VIEW my_view AS SELECT * FROM my_table COMMENT 'This is my view';
      
  5. 存儲(chǔ)過程和函數(shù)注釋:可以為存儲(chǔ)過程和函數(shù)添加注釋,提供說明和使用方法。

    • 創(chuàng)建存儲(chǔ)過程時(shí)添加注釋:

      CREATE PROCEDURE my_procedure() COMMENT 'This is my stored procedure'
      BEGIN
        -- Procedure logic goes here
      END;
      
    • 創(chuàng)建函數(shù)時(shí)添加注釋:

      CREATE FUNCTION my_function() RETURNS INT COMMENT 'This is my function'
      BEGIN
        -- Function logic goes here
      END;
      

可以使用SHOW CREATE TABLE語句或查詢INFORMATION_SCHEMA數(shù)據(jù)庫中的相應(yīng)表來查看數(shù)據(jù)庫對(duì)象的注釋信息。例如,要查看表注釋,可以運(yùn)行以下查詢:

SELECT TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
  AND TABLE_NAME = 'your_table_name';

注釋對(duì)于文檔化數(shù)據(jù)庫結(jié)構(gòu)、提高代碼可讀性和協(xié)作非常有用。它們可以幫助開發(fā)人員更好地理解數(shù)據(jù)庫對(duì)象的用途和設(shè)計(jì)意圖。

engine

MySQL是一種流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了多種存儲(chǔ)引擎(Engine)供用戶選擇。存儲(chǔ)引擎是MySQL用于存儲(chǔ)、檢索和管理數(shù)據(jù)的組件。每個(gè)存儲(chǔ)引擎都有其特定的功能、優(yōu)勢(shì)和限制,允許用戶根據(jù)應(yīng)用程序的需求選擇最適合的引擎。

以下是MySQL中一些常見的存儲(chǔ)引擎:

  1. MyISAM:這是MySQL的默認(rèn)存儲(chǔ)引擎,在早期版本中使用較為廣泛。它使用表級(jí)鎖定(table-level locking)來控制并發(fā)訪問,適用于讀密集型應(yīng)用。MyISAM不支持事務(wù)處理和崩潰恢復(fù),但具有較高的性能和較小的存儲(chǔ)空間需求。

    1. 使用myisam
    root@ydh 20:36 mysql>create table test(id int,name varchar(10)) engine=myisam;
    Query OK, 0 rows affected (0.01 sec)
    
    
    [root@mysql ydh]# ls
    db.opt  student_info.frm  student_info.ibd  test.frm  test.MYD  test.MYI
    
    • test.frm: 表結(jié)構(gòu)文件,frame框架
    • test.MYD :存放數(shù)據(jù)
    • test.MYI:存儲(chǔ)索引

    索引

    索引在數(shù)據(jù)庫中起到了重要的作用,它們提供了一種快速訪問數(shù)據(jù)庫表中數(shù)據(jù)的方式。索引是特殊的數(shù)據(jù)結(jié)構(gòu),用于加快數(shù)據(jù)庫查詢的速度和性能。當(dāng)你執(zhí)行查詢時(shí),數(shù)據(jù)庫可以利用索引來快速定位和檢索符合查詢條件的數(shù)據(jù),而不需要逐行掃描整個(gè)表

  2. InnoDB:這是MySQL的另一個(gè)常用存儲(chǔ)引擎,也是默認(rèn)的事務(wù)性存儲(chǔ)引擎。InnoDB支持行級(jí)鎖定(row-level locking),提供了高度的并發(fā)性能和事務(wù)支持。它具有較好的崩潰恢復(fù)機(jī)制和數(shù)據(jù)完整性保護(hù),并支持外鍵約束

  3. MEMORY:(基于hash)也稱為HEAP,它將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,以提供快速的讀寫訪問。MEMORY存儲(chǔ)引擎適用于臨時(shí)表、緩存和其他需要快速訪問的數(shù)據(jù)。但是,由于數(shù)據(jù)存儲(chǔ)在內(nèi)存中,它對(duì)于大量數(shù)據(jù)的存儲(chǔ)有限制。

  4. csv: 是一個(gè)文本文件,里面的字段以逗號(hào)作為分割符號(hào) --》文件存儲(chǔ)的文件 --》數(shù)據(jù)分析

    • [root@mysql ~]# awk -F: 'OFS=","{print $1,$2,$3,$5}' /etc/passwd >test_csv.csv
      
    • 指定引擎

    • CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        ...
      ) ENGINE = engine_name;
      
      

要在MySQL中選擇存儲(chǔ)引擎,你可以在創(chuàng)建表時(shí)使用ENGINE關(guān)鍵字指定引擎類型,或者在配置文件中設(shè)置默認(rèn)引擎。此外,你還可以使用ALTER TABLE語句更改現(xiàn)有表的存儲(chǔ)引擎。

別名

在MySQL中,別名(Alias)是一種給表名、列名或表達(dá)式指定臨時(shí)名稱的方法。使用別名可以簡(jiǎn)化查詢語句、提高可讀性,并允許對(duì)結(jié)果集中的列進(jìn)行重命名(可以不接as)。

別名可以在SELECT語句和FROM子句中使用,如下所示:

  1. 列別名:

    • 列別名用于給查詢結(jié)果中的列指定一個(gè)臨時(shí)名稱。使用別名可以更改列名,使其更具描述性或可讀性。

    例如,在SELECT語句中,可以使用AS關(guān)鍵字或直接使用空格來為列指定別名:

    SELECT column_name AS alias_name
    FROM table_name;
    
    -- 或者
    
    SELECT column_name alias_name
    FROM table_name;
    
  2. 表別名:

    • 表別名用于為查詢語句中的表指定一個(gè)臨時(shí)名稱,以便在查詢中更簡(jiǎn)潔地引用表。

    例如,在FROM子句中,可以使用AS關(guān)鍵字或直接使用空格來為表指定別名:

    SELECT column_name
    FROM table_name AS alias_name;
    
    -- 或者
    
    SELECT column_name
    FROM table_name alias_name;
    

    使用表別名后,可以在查詢中使用別名來引用表,而不是完整的表名。

  3. 列表達(dá)式別名:

    • 除了給列和表指定別名外,還可以給列表達(dá)式(如計(jì)算表達(dá)式或函數(shù)表達(dá)式)指定別名。

    例如,使用計(jì)算表達(dá)式:

    SELECT column1 + column2 AS result
    FROM table_name;
    

    在上述示例中,通過計(jì)算表達(dá)式將column1和column2相加,并將結(jié)果命名為result作為查詢結(jié)果的列名。

使用別名可以使查詢結(jié)果更易讀,同時(shí)在復(fù)雜的查詢語句中可以簡(jiǎn)化引用和處理列和表。別名的作用僅限于查詢語句的執(zhí)行期間,不會(huì)對(duì)數(shù)據(jù)庫中的實(shí)際結(jié)構(gòu)和數(shù)據(jù)產(chǎn)生影響。文章來源地址http://www.zghlxwxcb.cn/news/detail-597578.html

到了這里,關(guān)于MySQL常用語句大全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫——MySQL SELECT:數(shù)據(jù)表查詢語句

    在?MySQL 中,可以使用 SELECT 語句來查詢數(shù)據(jù)。查詢數(shù)據(jù)是指從數(shù)據(jù)庫中根據(jù)需求,使用不同的查詢方式來獲取不同的數(shù)據(jù),是使用頻率最高、最重要的操作。 SELECT 的語法格式如下: 其中,各條子句的含義如下: {*|字段列名} 包含星號(hào)通配符的字段列表,表示所要查詢字段的

    2024年02月05日
    瀏覽(233)
  • 【MySQL數(shù)據(jù)庫】MySQL 高級(jí)SQL 語句一

    【MySQL數(shù)據(jù)庫】MySQL 高級(jí)SQL 語句一

    ) % :百分號(hào)表示零個(gè)、一個(gè)或多個(gè)字符 _ :下劃線表示單個(gè)字符 ‘A_Z’:所有以 ‘A’ 起頭,另一個(gè)任何值的字符,且以 ‘Z’ 為結(jié)尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合這一個(gè)模式,而 ‘AKKZ’ 并不符合 (因?yàn)樵?A 和 Z 之間有兩個(gè)字符,而不是一個(gè)字符)。 ‘ABC%’

    2024年02月09日
    瀏覽(1354)
  • MySQL數(shù)據(jù)庫——高級(jí)查詢語句

    MySQL數(shù)據(jù)庫——高級(jí)查詢語句

    數(shù)據(jù)庫是用來存儲(chǔ)數(shù)據(jù),更新,查詢數(shù)據(jù)的工具,而查詢數(shù)據(jù)是一個(gè)數(shù)據(jù)庫最為核心的功能,數(shù)據(jù)庫是用來承載信息,而信息是用來分析和查看的。所以掌握更為精細(xì)化的查詢方式是很有必要的。本文將圍繞數(shù)據(jù)的高級(jí)查詢語句展開。 1.指定指字段進(jìn)行查詢——SELECT 語法:

    2024年02月11日
    瀏覽(107)
  • MySQL數(shù)據(jù)庫高級(jí)查詢語句

    MySQL數(shù)據(jù)庫高級(jí)查詢語句

    基于這兩個(gè)數(shù)據(jù)庫表格來實(shí)現(xiàn)以下實(shí)驗(yàn) concat(x,y)將提供的參數(shù)x和y拼接成一個(gè)字符串 trim()返回去除指定格式的值 GROUP BY 有一個(gè)原則,凡是在 GROUP BY 后面出現(xiàn)的字段,必須在 SELECT 后面出現(xiàn); 凡是在 SELECT 后面出現(xiàn)的、且未在聚合函數(shù)中出現(xiàn)的字段,必須出現(xiàn)在 GROUP BY 后

    2024年02月11日
    瀏覽(98)
  • MySQL數(shù)據(jù)庫管理高級(jí)語句

    MySQL數(shù)據(jù)庫管理高級(jí)語句

    復(fù)制表及內(nèi)容 ? ??克隆表 獲取數(shù)據(jù)表的表結(jié)構(gòu)、索引等信息 ? ?清空表,刪除表內(nèi)的所有數(shù)據(jù) ? ? ? 刪除的特點(diǎn): 創(chuàng)建臨時(shí)表 臨時(shí)表創(chuàng)建成功之后,使用SHOWTABLES命令是看不到創(chuàng)建的臨時(shí)表的, 臨時(shí)表會(huì)在連接退出后被銷毀。 如果在退出連接之前,也可以可執(zhí)行增刪改查

    2024年02月11日
    瀏覽(103)
  • 數(shù)據(jù)庫應(yīng)用:MySQL高級(jí)語句(一)

    數(shù)據(jù)庫應(yīng)用:MySQL高級(jí)語句(一)

    目錄 一、理論 1.常用查詢 2.函數(shù) 3.進(jìn)階查詢 二、實(shí)驗(yàn) 1.普通查詢 2.函數(shù) 3.進(jìn)階查詢 三、問題 1.MySQL || 運(yùn)算符不生效 四、總結(jié) 常用查詢包括:增、刪、改、查; 對(duì) MySQL 數(shù)據(jù)庫的查詢,除了基本的查詢外,有時(shí)候需要對(duì)查詢的結(jié)果集進(jìn)行處理。 (1)selelct select,顯示表格中

    2024年02月17日
    瀏覽(85)
  • 數(shù)據(jù)庫應(yīng)用:MySQL數(shù)據(jù)庫SQL高級(jí)語句與操作

    數(shù)據(jù)庫應(yīng)用:MySQL數(shù)據(jù)庫SQL高級(jí)語句與操作

    目錄 一、理論 1.克隆表與清空表 2.SQL高級(jí)語句 3.SQL函數(shù) 4.SQL高級(jí)操作 5.MySQL中6種常見的約束 二、實(shí)驗(yàn) ?1.克隆表與清空表 2.SQL高級(jí)語句 3.SQL函數(shù) 4.SQL高級(jí)操作 5.主鍵表和外鍵表 ?三、總結(jié) 克隆表:將數(shù)據(jù)表的數(shù)據(jù)記錄生成到新的表中。 (1)克隆表 ①?先創(chuàng)建再導(dǎo)入 ②?創(chuàng)建

    2024年02月13日
    瀏覽(102)
  • 基本的SELECT語句——“MySQL數(shù)據(jù)庫”

    基本的SELECT語句——“MySQL數(shù)據(jù)庫”

    各位CSDN的uu們好呀,好久沒有更新小雅蘭的MySQL數(shù)據(jù)庫專欄啦,接下來一段時(shí)間,小雅蘭都會(huì)更新MySQL數(shù)據(jù)庫的知識(shí),下面,讓我們進(jìn)入今天的主題吧——基本的SELECT語句!??! SQL概述 SQL語言的規(guī)則與規(guī)范 基本的SELECT語句 顯示表結(jié)構(gòu) 過濾數(shù)據(jù) 1946 年,世界上第一臺(tái)電腦誕生

    2024年02月09日
    瀏覽(88)
  • 【數(shù)據(jù)庫】MySQL 高級(jí)(進(jìn)階) SQL 語句

    【數(shù)據(jù)庫】MySQL 高級(jí)(進(jìn)階) SQL 語句

    location表格創(chuàng)建 store_info表格創(chuàng)建 顯示表格中一個(gè)或數(shù)個(gè)字段的所有數(shù)據(jù)記錄 不顯示重復(fù)的數(shù)據(jù)記錄 按照條件進(jìn)行查詢 在已知的字段數(shù)據(jù)取值范圍內(nèi)取值 另外還有not in命令,用法一致,表示顯示不在指定范圍內(nèi)的字段的值。 在兩個(gè)字段數(shù)據(jù)值之間取值,包含兩邊字段的數(shù)據(jù)

    2024年02月09日
    瀏覽(30)
  • MySQL數(shù)據(jù)庫查詢語句之組函數(shù),子查詢語句

    MySQL數(shù)據(jù)庫查詢語句之組函數(shù),子查詢語句

    以組為操作單位,一組數(shù)據(jù)得到一個(gè)結(jié)果。 在沒有手動(dòng)分組的前提下,整張表默認(rèn)為一組數(shù)據(jù) max(列名):獲取最大值 min(列名):獲取最小值 sum(列名):獲取總和 avg(列名):獲取平均值 count(列名):統(tǒng)計(jì)值的個(gè)數(shù) 所有組函數(shù)都會(huì)自動(dòng)忽略null值 在某些情況下,我們需要根據(jù)需要

    2024年01月23日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包