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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)

發布時間:2023/12/3 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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常用语句的语法 (三十四)的全部內容,希望文章能夠幫你解決所遇到的問題。

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