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

歡迎訪問 生活随笔!

生活随笔

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

数据库

深入mysql语言_MySQL对数据操作的一些深入语法

發布時間:2023/12/10 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入mysql语言_MySQL对数据操作的一些深入语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其他數據操作

數據的操作也叫作crud:

C:create

R:read

U:update

D:delete

插入數據

蠕蟲復制

就是在已有的數據的基礎之上,將原來的數據進行復制,插入到相對應的表中!

語法規則:

insert into 表名select *|字段列表from表名

注意:

當一個表中的數據復制到另一個表中的時候,需要注意數據的來源要與被插入的表的字段數量和類型要保持一致!

總結蠕蟲復制的優點:

1,?可以以最快的速度復制另外一張表的數據

2,?在短期內產生大量的數據,以測試服務器的壓力

主鍵重復

插入的值與主鍵中的值發生沖突,重復的時候,需要使用一個語法,一般使用在主鍵更改的時候:

如果重復的時候及更新值:

insert into 表名[字段列表] values(值列表) on duplicate key update字段1=值1,字段2=值2……

直接將重復的值刪除,插入新數據:

replaceinto 表名[字段列表] values(值列表);

修改數據

update 表名set字段1=值1,字段2=值2……[where條件][order by字段名asc|desc][limit數據量]

刪除數據

標準語法:

delete from 表名[where條件] [order by字段名asc|desc][limit數據量]

還有一個類似刪除功能的語法:

truncate table 表名;或truncate表名;

注意:該語句不屬于DML,屬于DDL

相當于做了兩件事情:

1,?先把原表drop掉!

2,?再按以前的原表的結構重新創建一次!

查詢數據

select[select選項]*|字段列表[as 字段別名]from 數據源[where子句][group by子句][having子句][order by子句][limit子句];

以上的語法一般只是單表查詢,另外還有多表查詢,多表查詢又有聯合查詢、子查詢、連接查詢(左連接,右連接,內連接,外連接,自然連接)

注意:

1,?from后面的子句往往稱之為:五子句,也叫五子查詢!

2,?五子查詢都可以沒有,但是,如果要有,就必須按順序寫!

select選項和別名

含義:查詢到的數據如何顯示

這里的select選項有兩個值:

all:也是缺省值(默認值),保留所有的查詢結果!

distinct:去重,去掉重復的查詢結果!

別名

所謂的別名,就是給字段或其他表達式等標識符另起一個名字,基本語法如下:

字段|表達式|表|子查詢[as]別名

這里的as可以省略,但是為了增加可讀性,一般還是寫上!

where子句

語法:where 表達式

先將表達式計算結果,如果表達式為真(結果不為0)則則返回記錄,如果為假(則為0),則不返回記錄。相當于對所有記錄進行遍歷!

MySQL運算符

MySQL支持以下的運算符:

關系運算符

< ?>

<= ?>=

= ??!=(<>)

注意:這里的等于是一個等號

between and

做數值范圍限定,相當于數學上的閉區間!

比如:

between A and B相當于[A,B]

在between and前加上not則是反過來。

in和not in

語法形式:in|not in(集合)

表示某個值出現或沒出現在一個集合之中!

模糊查詢

也就是帶有like關鍵字的查詢,常見的語法形式是:

select *|字段列表from表名where字段名[not] like‘通配符字符串’;

所謂的通配符字符串,就是含有通配符的字符串!

MySQL中的通配符有兩個:

_ ??:代表任意的單個字符

% ??:代表任意的字符

group by子句

分組統計查詢語句

group by 字段1[,字段2]……

從形式上看,就是通過表內的某個或某些字段進行分組:

統計函數

sum():求和,就是將某個分組內的某個字段的值全部相加

max():求某個組內某個字段的最大值

min():求某個組內某個字段的最小值

avg():求某個組內某個字段的平均值

count():統計某個組內非null記錄的個數,通常就是用count(*)來表示!

多字段分組

group by 字段1[,字段2]……

作用是:先根據字段1進行分組,然后再根據字段2進行分組!

having子句

having子句和where子句一樣,也是用來篩選數據的,通常是對group by之后的統計結果再次進行篩選!

二者的比較:

1,?如果語句中只有having子句或只有where子句的時候,此時,它們的作用基本是一樣的!

2,?二者的本質區別是:where子句是把磁盤上的數據篩選到內存上,而having子句是把內存中的數據再次進行篩選!

3,?where子句的后面不能使用統計函數,而having子句可以!因為只有在內存中的數據才可以進行運算統計!

order by子句

根據某個字段進行排序,有升序和降序!

語法形式為:

order by 字段1[asc|desc]

默認的是asc,也就是升序!如果要降序排序,需要加上desc!

多字段排序

order by 字段1[asc|desc],字段2[asc|desc]……

比如:order by score asc,age desc

聯合查詢

關鍵字:union

語法形式

select語句1

union[union選項]

select 語句2

union[union選項]

select 語句3

union[union選項]

……

作用:

所謂的聯合查詢,就是將多個查詢結果進行縱向上的拼接,也就是select語句2的查詢結果放在select語句1查詢結果的后面。依次類推!

既然是縱向上的拼接,所以聯合查詢有一個最最基本的語法,就是各個select語句查詢出來的結果,其中字段的個數必須相同,比如,不能一個是4列,一個是3列!并且從顯示的結果上看,無論“拼接”了多少個select語句,字段名只顯示第一條select語句的字段名!

其中,這里的union選項跟前面學習的select選擇的值是一樣的,只是默認值不一樣:

all:也是缺省值,保留所有的查詢結果!

distinct:去重(默認值),去掉重復的查詢結果!

交叉連接

關鍵字:cross join

含義

就是從一張表的一條記錄去連接另一張表中的所有記錄,并且保存所有的記錄,其中包括兩個表的所有的字段!

交叉連接語法:

select ?* | 字段列表from表1cross join表2

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的深入mysql语言_MySQL对数据操作的一些深入语法的全部內容,希望文章能夠幫你解決所遇到的問題。

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