mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)
MySQL常用的語句語法
注意:1、 | 符號用來指出幾個選中中的一個,因此NULL | NOT NULL 表示給出null 或 not null
2、包含在方括號中的關鍵字或子句是可選的(如 [like this])3、既沒有列出所有的MySQL語句,也沒有列出每一條子句和選項
4、大寫的表示 MySQL語法關鍵字
一、命令行指令:
1、啟動MySQL
net start mysql
2、連接與斷開服務器
mysql -h 地址 -P 端口 -u 用戶名 -p 密碼
二、數據庫操作
1、查看當前數據庫
select database();
2、顯示當前時間、用戶名,數據庫版本
select now(),user(),version();
3、創建庫
create database [if not exists] 數據庫名 數據庫選項
其中數據庫選項有
--選擇字符集
CHARACTER SETcharset_name--校對規則
COLLATE collation_name
4、查看已有庫
show databases[like 'pattern']
5、查看當前庫信息
show create database 數據庫名
6、修改庫的選項信息
alter database 數據庫名選項信息
7、刪除庫
drop database[if exists] 數據庫名
三、表操作
1、CREATE TABLE
create table 用于創建新數據庫表,更新已存在的表結構使用 alter table ,constraints 表示約束
CREATE TABLEtable_name
(column datatype [NULL | NOT NULL] [CONSTRAINTS],column datatype [NULL | NOT NULL] [CONSTRAINTS],
···
);
相對復雜的
create [temporary] table [if not exists] [庫名.] 表名 (表的結構定義)[表選項]
其中 temporary 表示臨時表,會話結束時表自動消失
注意:
a、每個字段必須要有數據類型,最后一個字段后不能有逗號
b、對于字段的定義:
字段名 數據類型 [NOT NULL|NULL] [DEFAULT default_value][AUTO_INCREMENT] [UNIQUE [KEY]|[PRIMARY] KEY] [COMMENT 'string']
c、表選項:
字符集
CHARSET = charset_name
如果表沒設定,使用數據庫字符集
存儲引擎
ENGINE = engine_name
表在管理數據時,往往采用不同的數據結構,結構不同會導致處理方式、提供特性操作等也不同
常見的存儲引擎:InnDB、MyISAM、Memory/Heap、BDB、Merge、Example、CSV、MaxDB、Archive
不同的存儲引擎在保存表的結構和數據時常采用不同的方式
MyISAM 表文件含義: .frm 表定義, .MYD? 表數據, .MYI 表索引
InnoDB 表文件含義: .frm 表定義、表空間數據和日志文件
--顯示存儲引擎的狀態信息
SHOW ENGINES--顯示存儲引擎的日志或狀態信息
SHOW ENGINES 引擎名 {LOGS| STATUS}
2、查看所有表
SHOW TABLES[LIKE 'pattern']SHOW TABLESFROM 表名
3、查看表結構
SHOW CREATE TABLE表名DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 /
SHOW COLUMNS FROM 表名 [LIKE 'pattern']SHOWTABLE STATUS [FROM db_name] [LIKE 'pattern']
4、ALTER TABLE
alter table 用來更新已存在表的模式,為了創建新表,應該使用create table,constrains 表示約束
ALTER TABLEtablename
(ADD column datatype [NULL | NOT NULL] [CONSTRAINTS],CHANGE column columns datatype [NULL| NOT NULL] [CONSTRAINTS],DROP column,
······
);
a、修改表本身選項
ALTER TABLE 表名 表名的選項
b、對表進行重命名
RENAME TABLE 原表名 TO 新表名
c、修改表的字段結構
ALTER TABLE 表名 操作名
有如下操作名
--增加字段
ADD [COLUMN]字段名--創建主鍵
ADD PRIMARY KEY(字段名)--創建唯一索引
ADD UNIQUE [索引名](字段名)--創建普通索引
ADD INDEX [索引名](字段名)--刪除字段
DROP [COLUMN]字段名--支持對字段屬性進行修改
MODIFY [COLUMN]字段名 字段屬性--支持對字段名進行修改
CHANGE [COLUMN]原字段名 新字段名 字段屬性--刪除主鍵
DROP PRIMARY KEY
--刪除索引
DROP INDEX索引名--刪除外鍵
DROP FOREING KEY 外鍵
5、刪除表
DROP TABLE [if exists] 表名 ...
6、清空表數據
TRUNCATE [TABLE] 表名
7、復制表結構
CREATE TABLE 表名 LIKE 要復制的表名
8、復制表結構和數據
CREATE TABLE 表名 [AS] SELECT * FROM 要復制的表名
四、數據操作
1、INSERT
insert 給表增加一行,或多行
INSERT INTO table_name [(column,···)]
VALUES(values,···);--INSERT INTOtable_name[(column,···)]
VALUES(values,···),
(values,···),
···
(values,···);
insert select 插入select 的結果到一個表
INSERT INTO table_name [(columns,···)]
SELECT columns,··· FROMtable_name,···[WHERE ···];
注意:
如果要插入的值列表包含所有字段并且順序一致,則可以省略字段列表,
可以同時插入多條記錄
字段列表可以用 “*”代替表示所有字段
2、DELETE
delete 從表中刪除一行或多行
DELETE FROM table_name [WHERE ···] ;
沒有條件子句,會刪除所有數據
3、UPDATE
update 更新表中一行或多行
UPDATE table_name SET column_name =value,···[WHERE ···];
五、字符集編碼
MySQL,數據庫,表,字段均可設置編碼
--數據編碼與客戶端編碼不需一致--查看所有字符集編碼項
SHOW VARIABLES LIKE 'character_set_%'
--客戶端向服務器發送數據時使用的編碼
character_set_client--服務器端將結果返回給客戶端時使用的編碼
character_set_results--連接層編碼
character_set_connection
注意:
--設置編碼
SETNAMES GBK;--相當于完成以下三個設置
SET 變量名 =變量值
setcharacter_set_client=gbk;
setcharacter_set_results=gbk;
setcharacter_set_connection= gbk;
六、查詢語句
1、SELECT
select用于從一個或多個表(視圖)中 檢索數據
SELECT columns_name, ··· FROMtable_name, ···[WHERE ···],[UNION ···],[GROUP BY ···],[HAVING ···],[ORDER BY ···];
詳解:
select [all | distinct] select_expr from ->where->group by[合計函數] ->having->order by ->limit
其中
1.1、select_expr
a、計算公式、函數調用、字段也是表達式
如:select 12+11,now(),name from tb_obge;
b、使用as 關鍵字為每個列設定別名,適用于簡化列標識,避免多個列標識符重復。
如:select sheng_shi_xian as address from tb;
1.2、 from 子句
用于標識查詢來源
a、使用 as 關鍵字為表起別名
--列如
select * from tb_obge1 as t1,tb_obge2 as t2;
b、from 子句后可以同時出現多個表。多個表會橫向疊加到一起,而數據會形成一個笛卡爾積
就是下面的意思
--如:
select * from tb_R,tb_S;
c、where 子句
用于從from 中獲得的數據源中進行篩選。1為真,0為假,表達式由運算符和運算數組成
d、group by子句
group by 字段/ 別名 [排序方式]
分組后會進行排序,升序:ASC,降序 DESC
與group by子句常配合使用的聚合函數有--返回不同的非 NULL值數目,如count(*),count(字段)。
count
--求和
sum
--求最小值
mim--求最大值
max
--求平均值
avg
--返回帶有來自一組的連接的非NULL 值的字符串結果,為組內字符串連接
group_concat
e、having 子句(條件子句)
與where 功能、用法相同、只是執行時機不同。where在開始時執行數據檢測,對原數據進行過濾。having 對篩選出的結果進行再次過濾,where 不可以使用聚合函數。一般需要用到聚合函數才會用having。SQL 標準要求having子句必須引用group by 子句中的列或用于聚合函數中的列。
f、order by 子句(排序子句)
--支持對多個字段排序,升序ASC ,降序 DESC
order by 排序字段/別名排序方式[,排序字段/別名排序方式]...
g、limit 子句(限制結果集 子句)
僅對處理好的結果進行數量限制。將處理好的結果看作是一個集合,按照記錄的現后順序,索引從 0 開始
--limit 獲取條數 其中,省略第一個參數,表示索引從 0 開始。
limit 起始位置,獲取條數
h、distinct 選項
用于去除重復記錄
2、多表聯結查詢
2.1、UNION
建議對每個select查詢加上小括號。需要各select 查詢的字段數量一樣,即每個select 查詢的字段列表(數量、類型)應一致,因為結果中的字段名以第一條select 語句為準。
--將多個select 查詢的結果組合成一個結果集合
select ...union [ALL | DISTINCT] selelct ...
默認為distinct 方式,即所有返回的行都是唯一的。
2.2、子查詢(需要用括號括起來)
a、from
from 后要求是一個表,必須給子查詢結果取個別名,以簡化每個查詢內的條件。
--如:
select * from (select * from tb where id>0) as subfrom where id>1;
b、where
子查詢返回一個值,不需要給子查詢取別名
--如:
select * from tb where age =(select max(age) from tb)
c、列子查詢
使用in 或 not in 子查詢,查詢結果返回單列
使用exists 和 not exists條件,返回1或0 ,常用于判斷
--如:
select column1 from tb1 where exists (select * from tb2);
2.3、join 連接查詢
將多個表的字段進行連接,可以指定連接條件。
a、內連接(inner join)
默認就是內連接,可省略inner。
只有數據存在時才能發送連接請求,即連接結果不能出現空行。
ON 表示連接條件,其條件表達式與 where 類似。
b、交叉連接(cross join)
沒有條件的內連接。
--如:
select * from tb1 cross join tb2;
c、外連接(outer join)
如果數據不存在,也會出現在連接的結果中。
主要分為:左外連接和右外連接
左外連接(left outer join): 如果數據不存在,左表記錄會出現,而右表以null 填充
右外連接(right outer join):如果數據不存在,右表記錄會出現,而左表以null 填充
七、其他常用語句
1、CREATE INDEX
create index 用于在一個或多個列上創建索引
CREATE INDEX indexname ON tablename(column [ASC | DESC],·······)
2、CREATE PROCEDURE
create procedure 用于創建存儲過程,常和delimiter一塊用,parameters 表示參數列表
CREATE PROCEDURE procedure_name([parameters])BEGIN······END;
3、CREATE USER
create user 用于向系統中添加新的用戶賬號
CREATE USER user_name [@hostname] [IDENTIFIED BY [PASSWORD] 'password'];
4、CREATE VIEW
create view 用來創建一個或多個表上的新視圖
CREATE [OR REPLACE] VIEWview_nameAS
select ··· ;
5、DROP
drop 永久地刪除數據庫對象(表、視圖、索引、存儲過程,觸發器,用戶等)
DROP DATABASE [TABLE | VIEW | INDEX | PROCEDURE | TRIGGER | USER] item_name;
6、事務
6.1、COMMIT
commit 用來將事務處理寫到數據庫
COMMIT ;
6.2、ROLLBACK
rollback 用于撤銷一個事務處理塊
ROLLBACK [TO savepoint_name];
6.3、SAVEPOINT
savepoint 為使用rollback 語句設立保留點
SAVEPOINT sql;
6.4、START TRANSACTION
start transaction 表示一個新的事務處理開始
START TRANSACTION;
總結
以上是生活随笔為你收集整理的mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摄影爱好者该如何选择“第一支镜头”
- 下一篇: vue父子组件生命周期顺序_vue父子组