MySQL的sql语句分类汇总
生活随笔
收集整理的這篇文章主要介紹了
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 utf82.刪除數據庫
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]①修改字段的定義
①修改字段約束
#主鍵約束| 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语句分类汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL二进制日志的三种模式解析
- 下一篇: MySQL乱码问题解决步骤详解