中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站建設(shè)優(yōu)化的公司優(yōu)化教程網(wǎng)下載

做網(wǎng)站建設(shè)優(yōu)化的公司,優(yōu)化教程網(wǎng)下載,網(wǎng)站設(shè)計網(wǎng)站建站,免費html5中文網(wǎng)站素材目錄 一 插入 1 基本語法 ①全列插入 ②指定列插入 ③多條記錄插入 ④沖突更新 二 查詢 查詢?nèi)繑?shù)據(jù) 指定列查詢 顯示 拼接 取別名 去重查找 where 邏輯運算符和比較運算符 結(jié)果排序 Limit group by 分組 聚合函數(shù) 對于count 對于sum 對于group by 相關(guān)的語…

目錄

一 插入

1 基本語法

①全列插入

②指定列插入

③多條記錄插入

④沖突更新

二 查詢

?查詢?nèi)繑?shù)據(jù)

?指定列查詢

顯示

拼接?

取別名

去重查找

where

邏輯運算符和比較運算符

結(jié)果排序

Limit

group by 分組

聚合函數(shù)

??對于count

??對于sum

對于group by

??相關(guān)的語法細(xì)節(jié):

? ??①如果有多個分組條件?

? ??②關(guān)于顯示

? ??③關(guān)于分組后篩選

關(guān)于執(zhí)行順序

三 UPDATE 更新

四 DELETE/TRUNCATE?刪除

DELETE

語法

注意:

TRUNCATE


?

一 插入

1 基本語法

先創(chuàng)建一個表之后插入

有幾種寫法,可以基本分類成是否帶上列名,是否是多條記錄插入,是否有沖突更新

①全列插入

不帶列名,默認(rèn)是一一對應(yīng)的全列插入

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

示例

?全插入的話自增的值也是要指定的

②指定列插入

帶上列名,默認(rèn)插入的值是和自己指定的列名的順序一一對應(yīng)

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

?可以省略自增的值

注意:

此時如果默認(rèn)省略了列名,進(jìn)行全列插入的話,不能夠省略自增字段的值,不會自動更新

此時如果指定了列名進(jìn)行插入的話,可以省略自增長的值,會自動補充

③多條記錄插入

?在上述兩種插入的基礎(chǔ)上增加新的記錄

INSERT INTO table_name
VALUES (value1, value2, value3, ...),(value1, value2, value3, ...),(value1, value2, value3, ...);

或者

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...),(value1, value2, value3, ...),(value1, value2, value3, ...);?

④沖突更新

沖突理解

如果表中已經(jīng)存在的主鍵或者唯一鍵和我要插入的值是一樣的,此時就發(fā)生了沖突,如果發(fā)生沖突的話,mysql就會直接進(jìn)行攔截,不允許該信息的插入。

本質(zhì):插入沖突是因為我們之前存在相同的值,如果不想讓操作失敗的話,可以先進(jìn)行更新再插入。

其實就是一種替換,可以選擇刪除之前的數(shù)據(jù)再插入新的值。但是主鍵和唯一鍵不被修改,其他的被修改

語法

INSERT INTO …… 
ON DUPLICATE KEY UPDATE column = values [,column = value]…… 

其實replace可以替換掉上述的語句,兩者的意思是一樣的

示例

有沖突,并且沖突值不一樣

有沖突但是沖突值和之前是一樣的

沒有沖突直接插入

?和replace是一樣的

影響

此時分為幾種情況:

①插入的時候無沖突,直接插入,一行受影響-----》只有自己插入的這一行受影響

②插入的時候發(fā)生鍵值沖突了,但是沖突的值和之前的是一樣的,此時0行受影響

③插入的時候發(fā)生鍵值沖突了,并且沖突的值不一致,這時候就會刪除之前的,然后插入新的,(假設(shè)之前只有1行記錄沖突),那么就是兩行受影響

二 查詢

在一個數(shù)據(jù)庫內(nèi),做一個表的組合查詢

語法

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表達(dá)式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

先來簡單介紹一下這些意思,

from就是要指明在哪些表中進(jìn)行查找

where的話設(shè)定對應(yīng)的查詢條件,通過邏輯運算符或者算數(shù)運算符進(jìn)行設(shè)置

order by的話是排序的意思,有升序和降序,默認(rèn)是升序

limit的話,是篩選出指定行。我們可以和order by搭配使用,這樣的話,就可以選出符合條件的前幾條或者最后幾條數(shù)據(jù)

演示一下對應(yīng)的操作,先創(chuàng)建一個表并且插入數(shù)據(jù)做準(zhǔn)備

?

?1 查詢?nèi)繑?shù)據(jù)

后面不帶任何的篩選條件就是查詢所有的數(shù)據(jù)。但是這樣的話,如果對于數(shù)據(jù)量非常大的表來說的話,數(shù)據(jù)量非常大,而且篩選不出符合自己條件的。?

?指定列查詢

可以只查詢自己關(guān)心的列。但是也是所有數(shù)據(jù)的。

顯示

我們在查詢列的時候,顯示結(jié)果是跟著自己的指定列的,而非創(chuàng)建表的時候的順序?

?

拼接?

我們查找的時候還可以拼接常數(shù)或者計算式或者字符串

取別名

as 取別名 (取別名的時候也可以不加as)

去重查找

規(guī)則:要根據(jù)對應(yīng)查找的內(nèi)容整體來判斷的

比如這里根據(jù)名字和數(shù)學(xué)成績一起去重,雖然數(shù)學(xué)成績有重復(fù)的,但是名字是沒有重復(fù)的,也沒有數(shù)據(jù)被篩選掉,都被看成不重復(fù)的

?

?這樣才會去重

where

主要使用兩大類運算符來進(jìn)行篩選:

邏輯運算符和比較運算符

以下是比較運算符的種類

運算符說明
> >= < <=大于 大于等于 小于 小于等于
=等于 不能對NULL運算
<=>等于 可以用來比較NULL
!= , <>不等于
BETWEEN AND閉區(qū)間內(nèi)的一個值
IN(option1,option2,……)如果是option中的任意一個,就可以返回TRUE
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配 %匹配多個 _匹配一個

>,>=,<,<=一般來說是可以來比較整數(shù)或者浮點數(shù)的大小的

比如這個語句就篩選出了薪水大于1000的?

=除了比較數(shù)字之外,還可以用來比較字符串,但是不能對NULL進(jìn)行比較

注意:mysql中的等于是=,而非語言中的==

對于NULL值的運算可以使用<=> 或者 IS (NOT)NUL


注意null值和空串的區(qū)分

對于空串是可以使用 = ' '進(jìn)行篩選出來的,但是null的話只能使用<=> 或者IS(NOT)NULL運算

‘ ’表示的是空串,他是個字符串類型,只不過內(nèi)容是空的

NULL一般不參與計算,=這個運算符只能比較存在的數(shù)據(jù),因此對于這個不存在的NULL不能進(jìn)行比較??

查找一個區(qū)間內(nèi)的數(shù)字?

一般整數(shù)和浮點數(shù)才能進(jìn)行查找

比如篩選出工資在1000到2000的

?這個其實和這個查找語句是等同的

查找在一個集合內(nèi)的

成功找到就返回1,找不到就返回-1

?也可以查看某一條記錄的某個數(shù)據(jù)是否在集合范圍內(nèi)

模糊匹配

%多個匹配

-一個匹配

查找以A開頭的姓名的人的所有信息

?查找姓名中有A的

邏輯運算符

這個是用來連接多個條件的,有時候查詢條件可能不止符合一個

運算符注釋
AND多個條件都必須為真才為真
OR任意一個條件為真就可以為真
NOT如果為真,結(jié)果就是假

其他的使用也是類似的

需要注意的是,最終結(jié)果的顯示和查找的條件中的列數(shù)可以不相等。比如想查找符合某條件的,但是最終顯示的時候不顯示對應(yīng)列也是可以的

比如這個查找的對應(yīng)工資要大于1000的,但是最后只顯示工資大于1000的人的對應(yīng)的姓名

結(jié)果排序

我們可以對查找的結(jié)果按照某些順序進(jìn)行排序,比如可以按照薪資的多少進(jìn)行排序,默認(rèn)是升序,如果我們想按照降序排列帶上des

?排序不是篩選條件是顯示條件

?這里一些sal相同的也有順序,其實是因為這個排序是以排序的關(guān)鍵字為key值進(jìn)行排序,把整條記錄都進(jìn)行排序了。

對于NULL的話,默認(rèn)是最小的,如果是升序排序就出現(xiàn)在最上面,降序排序就出現(xiàn)在最下面

Limit

如何查找符合某些條件的前幾名

這樣就選出了工資最少的前三名?

?

也可以指定一個區(qū)間,起始下標(biāo)從0開始

?

?利用這個條件篩選可以實現(xiàn)分批取出數(shù)據(jù)的目的,一頁limit多少數(shù)據(jù),這一頁放不下就放到下一頁

group by 分組

在講這個的時候,引入聚合函數(shù)的概念。因為聚合函數(shù)一般都是和group by搭配使用的

聚合函數(shù)

mysql內(nèi)部本身就挺了一些數(shù)據(jù)庫的函數(shù)以供我們使用。

對于聚合函數(shù)的理解

聚合函數(shù)是直接或者簡介對列的數(shù)據(jù)進(jìn)行統(tǒng)計。由于是列的數(shù)據(jù),那么就具有相同的屬性。換句話說,相同屬性的就具有了聚合函數(shù)統(tǒng)計的前提

并且由于是列統(tǒng)計,那么對于一個表的數(shù)據(jù)進(jìn)行統(tǒng)計一定是一行或者多行的(一批數(shù)據(jù))

總結(jié):對列,具有相同屬性 對于一批數(shù)據(jù)

函數(shù)注釋
COUNT返回查詢到的數(shù)據(jù)的數(shù)量
SUM返回查詢到的數(shù)據(jù)的總和,必須是數(shù)字
AVG返回查詢到的數(shù)據(jù)的平均值,必須是數(shù)字
MAX返回查詢到的數(shù)據(jù)的最大值,必須是數(shù)字
MIN返回查詢到的數(shù)據(jù)的最小值,必須是數(shù)字

對于count

想查詢有多少條記錄

也可以進(jìn)行重命名

其他的寫法

所有的記錄*

Select 1的時候其實已經(jīng)把所有的數(shù)據(jù)都篩選出來了,只不過顯示的時候只顯示1

這樣我們有多少條記錄,就有多少個1。

?

?注意直接篩選的時候,null是不參與運算的,也要注意‘ ’為了避免空串的統(tǒng)計可以在條件中設(shè)置

?去重

如果不想統(tǒng)計的數(shù)據(jù)中有重復(fù)的,我們就可以使用這個進(jìn)行去重

?

?執(zhí)行的時候先去選出符合條件的不重復(fù)的數(shù)據(jù),之后再進(jìn)行統(tǒng)計是比較好的;如果先統(tǒng)計再計算的話,不符合要求,去重之后還需要再次統(tǒng)計,沒意義

如果是distinct count(math)的話,是先去統(tǒng)計math的,已經(jīng)統(tǒng)計了重復(fù)的。之后選出數(shù)據(jù)之后再去重,只不過此時不顯示,這樣的話我們看到的是7(統(tǒng)計沒去重的)

如果是count(distinct math)的話, 是要先對count內(nèi)部的math做去重之后再進(jìn)行統(tǒng)計

總結(jié):count的話,是先執(zhí)行count內(nèi)的

count都是先有最后的結(jié)果數(shù)據(jù)再統(tǒng)計的

對于sum

也是差不多的,可以計算總和,總和計算出來之后可以計算平均值?

?

這個相當(dāng)于

同理,其他的聚合函數(shù)也是這么使用的

都是遍歷列之后聚合的

對于group by

對指定列分組查詢。

之間我們select查詢的時候,都是將數(shù)據(jù)作為一個整體來查詢的。其實,mysql也可以支持按照指定的列對數(shù)據(jù)進(jìn)行分組,在分組的數(shù)據(jù)中操作。

比如,可以查找某個部門的最高,最低工資,平均工資

group by和聚合函數(shù)搭配使用,執(zhí)行的順序是先去執(zhí)行g(shù)roup by對結(jié)果進(jìn)行分組,之后再去每一組里面進(jìn)行聚合。如果先執(zhí)行聚合的話,是對所有數(shù)據(jù)的,而非組的。

比如上面的,就是先按照部門把人分出來,之后在每一個部門里面分別查找最高最低和平均的工資

相關(guān)的語法細(xì)節(jié):

①如果有多個分組條件?

比如這個按照部門和工作進(jìn)行分組,就是先對部門進(jìn)行分組,再在部門內(nèi)部根據(jù)工作進(jìn)行分組?

其實相當(dāng)于一棵多叉樹的結(jié)構(gòu),先按照一個分組的依據(jù),分成一個一個的小表,之后再在小表的內(nèi)部繼續(xù)分。

②關(guān)于顯示

只有g(shù)roup by作為分組條件的列之后在顯示的時候才能夠顯示出來。比如我這里顯示想顯示部門號和工作,但是我在輸入分組條件的時候沒有把工作作為分組的依據(jù),因此就不能

?③關(guān)于分組后篩選

由于where篩選的時候是先有對應(yīng)的條件才會去對數(shù)據(jù)進(jìn)行篩選;但是聚合函數(shù)是先有了對應(yīng)的數(shù)據(jù)才會去聚合,分組。因此where后面是不能夠帶上group by的

如果想對group by的結(jié)果進(jìn)行篩選的話,應(yīng)該需要使用having語句

這里是對group by分組出來的數(shù)據(jù),再進(jìn)行having條件的篩選

?總結(jié)

group by的話一定會和聚合函數(shù)搭配使用統(tǒng)計

如果需要對分組后的條件再進(jìn)行篩選的話,需要用having語句進(jìn)行篩選。只有g(shù)roup by才使用having

having與where的區(qū)別

where對數(shù)據(jù)進(jìn)行初篩;having 對where篩選和group by分組之后的數(shù)據(jù)再次進(jìn)行篩選

where的話,執(zhí)行語句是比較靠前的,是在分組之前先按照where的條件進(jìn)行篩選,符合條件才會進(jìn)入group by 的having

having之前通常有聚合函數(shù)統(tǒng)計和group by分組

舉例子:比如我需要篩選出工資>1000的人,在這條件之下按照部門分組,平均工資<2000的人的相關(guān)信息

①先去from emp找到對應(yīng)的表的數(shù)據(jù)

②where 對表的數(shù)據(jù)進(jìn)行篩選

③group by分組

④avg聚合

⑤對這樣分組和聚合的數(shù)據(jù)進(jìn)行 having條件篩選

關(guān)于執(zhí)行順序

where條件設(shè)置的時候嗎,是按照這樣的一個邏輯來查找數(shù)據(jù)的:

①我們先要去找到對應(yīng)的表,因此是from先找到表

②之后利用where進(jìn)行數(shù)據(jù)的篩選

③group by分組,以便執(zhí)行聚合函數(shù)和having

④執(zhí)行聚合函數(shù),如果之后有having篩選條件在having最后顯示的時候篩選

⑤這樣我們就完成了對應(yīng)的條件的篩選,再去執(zhí)行select找出符合的對應(yīng)的列

⑥有了這樣的數(shù)據(jù)才會知道有沒有重復(fù)的,再去考慮distinct去重

⑦最后order by排序,因為還有一個limit是要在所有的數(shù)據(jù)都執(zhí)行的差不多了的情況下才會去找出對應(yīng)的幾條數(shù)據(jù)

from -》where-》group by -》聚合函數(shù)-》having -》 select -》 distinct-》as-》order by -》limit

我們可以這樣分類了之后去理解,有兩類查詢:where和having。與where相關(guān)的先用紅色標(biāo)出,橙色的也屬于紅色,只不過select后面可以重命名和去重比較特殊單獨再拎出來

我們執(zhí)行的時候先去執(zhí)行where的執(zhí)行條件,再去看having的

要執(zhí)行where必須有數(shù)據(jù),數(shù)據(jù)從表來,因此最開始from

from找得出數(shù)據(jù)后就可以where先進(jìn)行一輪篩選,篩選的數(shù)據(jù)如果還需要分組等的篩選,就去執(zhí)行藍(lán)色的邏輯

這樣就相當(dāng)于完成了兩輪的篩選,然后我們再根據(jù)一些顯示的要求進(jìn)行設(shè)置

order by在select之后是因為必須有select選出的數(shù)據(jù)再去排序才有意義,防止了一些重復(fù)的工作

最后limit一定是最后的,完成了所有工作之后才能去選出符合條件的

三 UPDATE 更新

UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

更新一般是搭配查詢來使用的,把符合條件的數(shù)據(jù)進(jìn)行更新。因為只有有了對應(yīng)的數(shù)據(jù),才能對符合條件的數(shù)據(jù)進(jìn)行更新。因為如果不配合對應(yīng)的WHERE語句的話,就把所有的數(shù)據(jù)都更新了

?這樣就把對應(yīng)的名字為KING的員工的薪水修改成了99999;

相應(yīng)的,數(shù)據(jù)一旦被修改,那么按照之前的條件進(jìn)行篩選的話,很有可能會產(chǎn)生差異

四 DELETE/TRUNCATE?刪除

刪除這個操作,一般會帶來比較嚴(yán)重的后果,所以不能夠輕易地進(jìn)行刪除,只有特定權(quán)限的才能刪除。

與UPDATE同理,刪除的時候一定要注意篩選條件,否則很有可能就把所有的數(shù)據(jù)都刪除了

DELETE

語法

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

注意:

刪除數(shù)據(jù)僅僅是把對應(yīng)的記錄刪除了,但是對于auto_increment并不改變,下一次插入的數(shù)據(jù)也是接著上一個auto_increment的值繼續(xù)往后插入的

比如我這邊有5個數(shù)據(jù),我現(xiàn)在刪除了1個數(shù)據(jù),auto_increment的值并不會變成5,也就是說下一次插入的時候,會被自動分配6

TRUNCATE

TRUNCATE TABLE name

這個操作的特點是不能像DELETE一樣,設(shè)置刪除的條件,只能整體刪除

這一個操作導(dǎo)致的后果就是表被清空的同時,auto_increment的值也會被修改,從初始值開始。

因為TRUNCATE在刪除的時候,比DELETE更快,因為他不經(jīng)過真正的事務(wù),所以無法進(jìn)行回滾。它不是對數(shù)據(jù)進(jìn)行操作,也不會更新日志,直接把表清空,比delete要快是因為她的工作量更少。他直接干掉表數(shù)據(jù),對應(yīng)的索引結(jié)構(gòu),日志信息。沒法回滾了。

http://www.risenshineclean.com/news/22916.html

相關(guān)文章:

  • 懷來住房和城鄉(xiāng)建設(shè)委員會網(wǎng)站網(wǎng)絡(luò)推廣公司有多少家
  • arbitrary wordpress蔡甸seo排名公司
  • wordpress布局可視化武漢seo顧問
  • 順德網(wǎng)站建設(shè)找順的百度關(guān)鍵字優(yōu)化精靈
  • html視頻網(wǎng)站源碼百度高級搜索技巧
  • 網(wǎng)站建設(shè)的概念成都網(wǎng)站建設(shè)技術(shù)支持
  • 電子商務(wù)網(wǎng)站開發(fā)教程書內(nèi)代碼推廣普通話宣傳周
  • 傻瓜式網(wǎng)站制作軟件seo百科
  • 南網(wǎng)站建設(shè)如何進(jìn)行網(wǎng)站性能優(yōu)化?
  • IT男做網(wǎng)站網(wǎng)絡(luò)宣傳推廣方法
  • 廣東網(wǎng)站建設(shè)制作網(wǎng)絡(luò)推廣方案的內(nèi)容
  • wordpress writr東莞優(yōu)化疫情防控措施
  • 做外包的網(wǎng)站網(wǎng)站設(shè)計
  • 網(wǎng)站和app區(qū)別與聯(lián)系seo機構(gòu)
  • 網(wǎng)站底部有很多圖標(biāo)設(shè)計師培訓(xùn)班多少錢
  • 網(wǎng)站開發(fā) 方案網(wǎng)站搭建需要什么技術(shù)
  • 手機網(wǎng)站建設(shè) 小程序短視頻營銷案例
  • 定制型網(wǎng)站建設(shè)服務(wù)線上推廣費用
  • 深圳led網(wǎng)站建設(shè)天津債務(wù)優(yōu)化公司
  • 如何做網(wǎng)站設(shè)計營銷型網(wǎng)站建設(shè)怎么做
  • wordpress菜單怎么設(shè)置目錄冊曲靖seo
  • 網(wǎng)站建設(shè)預(yù)算申請百度收錄時間
  • 網(wǎng)站打不開 域名做解析網(wǎng)絡(luò)營銷環(huán)境宏觀微觀分析
  • 做視頻網(wǎng)站賺錢嘛平臺優(yōu)化是什么意思
  • 南陽醫(yī)療網(wǎng)站建設(shè)公司百度掃一掃
  • 做平面的網(wǎng)站凡科建站怎么用
  • 徐州網(wǎng)站制作如何定位互聯(lián)網(wǎng)+營銷策略怎么寫
  • 北京網(wǎng)站建設(shè)網(wǎng)站改版的費用新聞稿范文300字
  • 會展設(shè)計案例seo綜合查詢工具
  • 編程網(wǎng)站開發(fā)百度一下就知道了官網(wǎng)楯