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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL的sql语句分类汇总

發布時間:2025/4/16 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL的sql语句分类汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一類語句:與數據庫相關的語句

1.創建數據庫

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] ...create_specification:[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name說明:IF NOT EXISTS:判斷當前系統中是否有要創建的這個數據庫,如果有的話,不再執行創建,而且不會報錯CHARACTER SET:指定當前數據庫所采用字符類型(utf8)COLLATE:指定排序規則例子:CREATE DATABASE IF NOT EXISTS jobs DEFAULT CHARACTER SET utf8

2.刪除數據庫

DROP DATABASE [IF EXISTS] db_nameIF EXISTS:判斷當前系統中是否有要刪除的這個數據庫,如果有執行刪除操作,如果沒有不再執行刪除操作,而且不會報錯例子:DROP DATABASE IF EXISTS test;

3.修改數據庫

這里往往僅僅是修改數據庫中的字符集類型和排序規則(不能修改修改數據庫名)

ALTER DATABASE [db_name] alter_specification ...alter_specification:[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name例子:修改test1的字符集為utf8ALTER DATABASE test1 DEFAULT CHARACTER SET utf8;

修改數據庫名稱:
先對要修改名稱的數據庫做備份,然后新建一個數據庫,庫名就是新的名字,然后將備份的數據還原到這個新庫中

4.更新數據字典

ALTER DATABASE db_name UPGRADE DATA DIRECTORY NAME

第二類語句:與表相關的語句

1.新建表

方法一:直接創建一張新表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(create_definition,...)[table_options][partition_options]TEMPORARY:該選項表示所創建的是一張臨時表,表是在內存中create_definition:col_name column_definition| PRIMARY KEY (col_name1, col_name1...)| {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...| [CONSTRAINT UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ...| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ...| [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition| CHECK (expr)table_option: AUTO_INCREMENT [=] value <<< 指定主鍵從幾開始自增 | ENGINE [=] engine_name <<< 指定表所使用的存儲引擎| [DEFAULT] CHARACTER SET [=] charset_name <<< 指定當前表的字符集(不指定會繼承)| CHECKSUM [=] {0 | 1} <<< 指定是否對插入的數據做校驗(可以保證數據一致,但是會帶來額外的系統開銷)| [DEFAULT] COLLATE [=] collation_name <<< 指定當前表的排序規則(不指定會繼承)| COMMENT [=] 'string' <<< 指定當前表的描述說明信息| DELAY_KEY_WRITE [=] {0 | 1} <<< 延遲鍵寫入,推遲重建索引的間隔| MAX_ROWS [=] value| MIN_ROWS [=] value| UNION [=] (tbl_name[,tbl_name]...) <<< 做表聯合| TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] <<< 定義表空間| ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} <<< 定義表格式例子:創建一張表,id為主鍵、name長度為30,age為整型CREATE TABLE tb1 (id int PRIMARY KEY, name char(30), age int(3))CREATE TABLE tb2 (id int, name char(30), age int(3), PRIMARY KEY(id))例子:創建一張表,id和name構成聯合主鍵、name長度為30,age為整型CREATE TABLE tb2 (id int, name char(30), age int(3), PRIMARY KEY(id,name))

方法二:根據現有表創建新表,而且新表中的數據也是來自于現有表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name[(create_definition,...)][table_options][partition_options][IGNORE | REPLACE][AS] query_expression 例子: CREATE TABLE new_tb AS SELECT * FROM old_tb; 注意:這種操作在系統看來是不安全的,如果要使用這種方法創建表需要修改配置文件將 gtid-mode = on改為off enforce-gtid-consistency= 1改為0

方法三:根據現有表創建新表,但是僅僅有表結構

CREATE TABLE [IF NOT EXISTS] tbl_name LIKE old_tbl_name 例子:基于mysql.user表的表結構創建新表CREATE TABLE tb01 LIKE mysql.user;

2.刪除表

刪除表簡單實用DROP命令即可,但要注意做好指定。

DROP TABLE [IF EXISTS] tbl_name [, tbl_name]... [CASCADE]說明:CASCADE:級聯刪除

3.修改表結構(字段、屬性、限制、約束、索引、鍵…)

格式:

ALTER TABLE tbl_name[alter_specification [, alter_specification] ...][partition_options]

①修改字段的定義

  • 刪除字段
  • DROP col_name例子:刪除age字段ALTER TABLE tb1 DROP age;
  • 添加字段
  • ADD col_name column_definition [FIRST | AFTER col_name]例子:# 在age字段后添加一個新的字段schoolALTER TABLE tb1 ADD school CHAR(10) AFTER age;# 在最前面插入字段jobALTER TABLE tb1 ADD job CHAR(20) NOT NULL FIRST;# 在末尾添加一個新字段phoneALTER TABLE tb1 ADD phone int(10);
  • 修改字段名稱
  • CHANGE old_col_name new_col_name column_definition [FIRST|AFTER col_name]例子: ALTER TABLE tb1 CHANGE job jobs char(30) not null;
  • 修改字段的約束和屬性,調整字段位置
  • MODIFY col_name column_definition [FIRST | AFTER col_name]例子:ALTER TABLE tb1 MODIFY name varchar(50) NOT NULL DEFAULT 'zx'; 注意無法修改字段名稱ALTER TABLE tb1 MODIFY name varchar(50) AFTER age;
  • 添加刪除索引
  • ADD index [索引類型] (字段1,字段2...) [options]例子:將索引添加(刪除)到 name字段上ALTER TABLE tb1 ADD(DROP) INDEX (name);查看表中的索引SHOW INDEXES FROM tb1;注意:索引不是越多越好

    ①修改字段約束

    #主鍵約束| ADD [CONSTRAINT [symbol]] PRIMARY KEY[index_type] (index_col_name,...) [index_option] ... #唯一約束| ADD [CONSTRAINT [symbol]]UNIQUE [INDEX|KEY] [index_name][index_type] (index_col_name,...) [index_option] ... #唯一約束要建立在索引上,也就是對某字段設置唯一約束時,該字段要是索引。關于主鍵(刪除、禁用、啟用)DROP PRIMARY KEY #刪除主鍵{DISABLE|ENABLE} KEYS #禁用和啟用主鍵

    4.修改表名

    #方法1:ALTER TABLE 表名 RENAME [TO|AS] 新表名ALTER TABLE user10 RENAME TO user11; 方法2:RENAME TABLE 表名 TO 新表名; 這里面的TO不可以省略RENAME TABLE user11 TO user10;

    5.指定表中的內容按照哪個字段進行排序

    注意:如果表中有索引或者主鍵,那么無法按照指定的字段排序 ORDER BY col_name [, col_name] ...

    6.修改表所使用的字符集類型

    CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]

    7.向表中插入數據

    INSERT INTO tb1(name,id,age) VALUES('dong',1,23);

    修改表中的數據

    將name為zx的年齡修改為25 UPDATE tb01 set age=25 WHERE name='zx';

    第三類語句:簡單的查詢語句

    簡單查詢格式

    SELECT 字段名... FROM 表名 [條件] [選項] 例子:查詢t09中的全部數據 > SELECT * FROM t09;例子:查詢t09中的id > SELECT id FROM t09;例子:查看所有id大于5的記錄> SELECT * FROM t09 WHERE id>5例子:查看所有id大于5的記錄的中的name字段> SELECT name FROM t09 WHERE id>5

    條件查詢、組合條件查詢

    條件表達方式釋義
    =、<、>、>= 、<=等于、小于、大于、大于等于、小于等于
    !=、<>不等于
    is null為空
    is not null不為空
    between…and…在…和…之間
    like …結合通配符
    RLIKE結合正則

    組合條件查詢關鍵字:and、or、not

    排序、限制輸出記錄的條數

    order by 字段 [desc|asc] 根據指定字段進行降序或升序排列 limit num:僅僅顯示num條記錄 limit m,n:意思是跳過m個記錄向后取n條數據

    示例

    案例:將年齡在20-25的用戶名和用戶id顯示出來mysql> select name,stuid,age from students where age>=20 and age<=25;mysql> select name,stuid,age from students where age between 20 and 25;案例:將年齡在小于20,或者大于25的用戶名和用戶id顯示出來select stuid,name,age from students where age<20 or age>25;案例:顯示用戶名是以S為開頭的用戶名和年齡mysql> select name,age from students where name like 'S%';案例:顯示用戶名是以Y為開頭,且年齡是19的用戶mysql> select name,age from students where name like 'Y%' and age=19;案例:顯示用戶名是以Y為開頭,且年齡小于20的用戶mysql> select name,age from students where name like 'Y%' and age<20;案例:顯示所有用戶的用戶名和年齡mysql> select name,age from students;案例:顯示所有用戶的用戶名和年齡,要求按照年齡排序(從大到小排)mysql> select name,age from students order by age desc;案例:顯示所有用戶的用戶名和年齡,要求僅僅顯示年齡最大的三個用戶mysql> select name,age from students order by age desc limit 3;案例:統計students表有多少行mysql> select count(*) from students;案例:顯示年齡最大的用戶的年齡mysql> select max(age) from students;

    大致匯總,如有不當之處歡迎指正。

    ------做運維之前很矯情的小年輕-----

    總結

    以上是生活随笔為你收集整理的MySQL的sql语句分类汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。