欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
聽(tīng)說(shuō)這是史上最簡(jiǎn)單的 MySQL 教程(內有圣誕節福利)

今晚是圣誕節,大家收到禮物或送出嗎?反正小編是沒(méi)有的~!

數據庫

1 定義

數據庫,可以簡(jiǎn)單的解釋為:高效的存儲和處理數據的介質(zhì)(主要分為磁盤(pán)和內存兩種)。

關(guān)系型數據庫

1 定義

關(guān)系型數據庫,是一種建立在關(guān)系模型(數學(xué)模型)上的數據庫。

至于關(guān)系模型,則是一種所謂建立在關(guān)系上的模型,其包含三個(gè)方面,分別為:

  • 數據結構:數據存儲的形式,二維表(行和列);

  • 操作指令集合:所有的 SQL 語(yǔ)句;

  • 完整性約束:表內數據約束(字段與字段)和表與表之間的約束(外鍵)。小編推薦大家加一下這個(gè)群:103456743這個(gè)群里好幾千人了!大家遇到啥問(wèn)題都會(huì )在里面交流!而且免費分享零基礎入門(mén)料資料web開(kāi)發(fā) 爬蟲(chóng)資料一整套!是個(gè)非常好的學(xué)習交流地方!也有程序員大神給大家熱心解答各種問(wèn)題!很快滿(mǎn)員了。欲進(jìn)從速哦!各種PDF等你來(lái)下載!全部都是免費的哦!只為幫助大家快速入門(mén),所以小編在群里等你們過(guò)來(lái)一起交流學(xué)習呢!

4 SQL

SQL:Structured Query Language,結構化查詢(xún)語(yǔ)言(數據以查詢(xún)?yōu)橹鳎?9% 都是在進(jìn)行查詢(xún)操作)。

SQL 主要分為三種:

  • DDL:Data Definition Language,數據定義語(yǔ)言,用來(lái)維護存儲數據的結構(數據庫、表),代表指令為create、drop和alter等。

  • DML:Data Manipulation Language,數據操作語(yǔ)言,用來(lái)對數據進(jìn)行操作(表中的內容)代表指令為insert、delete和update等,不過(guò)在 DML 內部又單獨進(jìn)行了一個(gè)分類(lèi),即 DQL(Data Query Language),數據查詢(xún)語(yǔ)言,代表指令為select.

  • DCL:Data Control Language,數據控制語(yǔ)言,主要是負責(用戶(hù))權限管理,代表指令為grant和revoke等。

SQL 是關(guān)系型數據庫的操作指令,是一種約束,但不強制,類(lèi)似于 W3C,因此這意味著(zhù):不同的數據庫產(chǎn)品(如 Oracle 和 MySQL)內部可能會(huì )有一些細微的區別。

服務(wù)器對象

由于沒(méi)辦法完全了解服務(wù)器內部的結構,因此只能粗略的分析數據庫服務(wù)器的內部結構。

一般來(lái)說(shuō),將 MySQL 數據庫服務(wù)器的內部對象分為四層,分別為:數據管理系統(DBMS)–> 數據庫(DB)–> 表(Table)–> 字段(Filed).

2 查詢(xún)數據庫

查看全部 –> 基本語(yǔ)法:show databases;

查看部分(模糊查詢(xún))–> 基本語(yǔ)法:show databases like 'pattern';

其中,pattern是匹配模式,有兩種,分別為:

  • %:表示匹配多個(gè)字符;

  • _:表示匹配單個(gè)字符。

此外,在匹配含有下劃線(xiàn)_的數據庫名稱(chēng)的時(shí)候,需要在下劃線(xiàn)前面加上反斜線(xiàn)\_進(jìn)行轉義操作。

示例:show databases like 'TBL%';表示匹配所有TBL開(kāi)頭的數據庫。

查看數據庫的創(chuàng )建語(yǔ)句 –> 基本語(yǔ)法:show create database + 數據庫名稱(chēng);

在這里,查看的結果有可能與咱們書(shū)寫(xiě)的 SQL 語(yǔ)句不同,這是因為數據庫在執行 SQL 語(yǔ)句之前會(huì )優(yōu)化 SQL,系統保存的是優(yōu)化后的結果。

3 更新數據庫

在這里,需要注意:數據庫的名字不可以修改。

數據庫的修改僅限庫選項,即字符集和校對集(校對集依賴(lài)字符集)。

基本語(yǔ)法:alter database + 數據庫名稱(chēng) + [庫選項];

  • charset/character set[=] 字符集;

  • collate[=] 校對集;

示例:alter database TBL_ERROR_CODE charset gbk;表示修改此數據庫的字符集為gbk.

4 刪除數據庫

基本語(yǔ)法:drop database + 數據庫名稱(chēng);

在這里,需要注意:在刪除數據庫之前,應該先進(jìn)行備份操作,因為刪除為不可逆操作,所以不要隨意刪除數據庫。

表操作

1 新增表

基本語(yǔ)法:

create table [if not exists] + 表名( 字段名稱(chēng) 數據類(lèi)型, …… 字段名稱(chēng) 數據類(lèi)型 /* 最后后一行,不需要加逗號 */)[表選項];

其中,if not exists表示

如果表名不存在,就執行創(chuàng )建代碼;如果表名存在,則不執行創(chuàng )建代碼。

表選項則是用來(lái)控制表的表現形式的,共有三種,分別為:

  • 字符集設定:charset/ character set+ 具體字符集,用來(lái)表示數據存儲的編碼格式,常用的字符集包括GBK和UTF8等。

  • 校對集設定:collate+ 具體校對集,表示數據比較的規則,其依賴(lài)字符集。

  • 存儲引擎:engine+具體存儲引擎,默認為InnoDB,常用的還有MyISAM.

由于任何表都歸屬于某個(gè)數據庫,因此在創(chuàng )建表的時(shí)候,都必須先指定具體的數據庫。在這里,指定數據庫的方式有兩種,分別為:

  • 第 1 種:顯式的指定表所屬的數據庫,示例

create table if not exists test.student( name varchar(10), age int, /* 整型不需要指定具體的長(cháng)度 */ grade varchar(10) /* 最后后一行,不需要加逗號 */)charset utf8;

  • 第 2 種:隱式的指定表所屬的數據庫,示例

use test; /* use + 數據庫名稱(chēng),表示切換到指定的數據庫,這句命令其實(shí)不加分號也可以,但不建議這么做 */create table if not exists student( name varchar(10), age int, /* 整型不需要指定具體的長(cháng)度 */ grade varchar(10) /* 最后后一行,不需要加逗號 */)charset utf8;

2 查詢(xún)表

查看全部 –> 基本語(yǔ)法:show tables;

查看部分(模糊查詢(xún))–> 基本語(yǔ)法:show tables like 'pattern';

其中,pattern是匹配模式,有兩種,分別為:

  • %:表示匹配多個(gè)字符;

  • _:表示匹配單個(gè)字符。

此外,在匹配含有下劃線(xiàn)_的表名的時(shí)候,需要在下劃線(xiàn)前面加上反斜線(xiàn)\_進(jìn)行轉義操作。

示例:show tables like '%t';表示匹配所有以t結尾的表。

查看表的創(chuàng )建語(yǔ)句 –> 基本語(yǔ)法:show create table + 表名;

在這里,咱們也可以用\g和\G代替上述語(yǔ)句中的;分號,其中\g等價(jià)于分號,\G則在等價(jià)于分號的同時(shí),將查的表結構旋轉90度,變成縱向結構。

查看表中的字段信息 –> 基本語(yǔ)法:desc/describe/show columns from + 表名;

3 更新表

在這里,需要注意:表的修改,分為修改表本身和修改表中的字段。

第 1 類(lèi):修改表本身

  • 修改表名,基本語(yǔ)法:rename table 舊表名 to 新表名;

  • 修改表選項,基本語(yǔ)法:alter table + 表名 + 表選項[=] + 值;

第 2 類(lèi):修改表中的字段,新增、修改、重命名和刪除

  • 新增字段,基本語(yǔ)法:alter table + 表名 + add + [column] + 字段名 + 數據類(lèi)型 + [列屬性][位置];

    其中,位置表示此字段存儲的位置,分為first(第一個(gè)位置)和after + 字段名(指定的字段后,默認為最后一個(gè)位置).

    示例:alter table student add column id int first;

  • 修改字段,基本語(yǔ)法:alter table + 表名 + modify + 字段名 + 數據類(lèi)型 + [列屬性][位置];

    其中,位置表示此字段存儲的位置,分為first(第一個(gè)位置)和after + 字段名(指定的字段后,默認為最后一個(gè)位置).

    示例:alter table student modify name char(10) after id;

4 刪除表

基本語(yǔ)法:

/** 可以一次刪除多張表 */drop table + 表1, 表2 ... ;

在這里,需要注意:此刪除為不可逆操作,希望大家謹慎使用。

數據操作

1 新增數據

對于數據的新增操作,有兩種方法。

第 1 種:給全表字段插入數據,不需要指定字段列表,但要求數據的值出現的順序必須與表中的字段出現的順序一致,并且凡是非數值數據,都需要用引號(建議使用單引號)括起來(lái)。

基本語(yǔ)法:insert into + 表名 + values(值列表)[,(值列表)];

示例:insert into test valus('charies',18,'3.1');

第 2 種:給部分字段插入數據,需要選定字段列表,字段列表中字段出現的順序與表中字段的順序無(wú)關(guān),但值列表中字段值的順序必須與字段列表中的順序保持一致。

基本語(yǔ)法:insert into + 表名(字段列表) + values(值列表)[,(值列表)];

示例:insert into test(age,name) valus(18,'guo');

2 查詢(xún)數據

查看全部 –> 基本語(yǔ)法:select * from + 表名 + [where 條件];

示例:select * from test;

查看部分 –> 基本語(yǔ)法:select + 字段名稱(chēng)[,字段名稱(chēng)] + from + 表名 + [where 條件];

示例:select name,age,grade from test where age = '18';

3 更新數據

基本語(yǔ)法:update + 表名 + set + 字段 = 值 + [where 條件];

示例:update test set age = 20 where name = 'guo';

在這里,建議盡量加上where條件,否則的話(huà),操作的就是全表數據。

此外,判斷更新操作是否成功,并不是看 SQL 語(yǔ)句是否執行成功,而是看是否有記錄受到影響,即affected的數量大于1時(shí),才是真正的更新成功。

4 刪除數據

基本語(yǔ)法:drop from + 表名 + [where 條件];

示例:drop from test where grade = '3.1';

在這里,需要注意:此刪除為不可逆操作,希望大家謹慎使用。

中文數據問(wèn)題

中文數據問(wèn)題的本質(zhì)就是字符集的問(wèn)題。

由于計算機僅識別二進(jìn)制數據,而且人類(lèi)則更傾向于識別字符(符號),因此就需要一個(gè)二進(jìn)制與字符的對應關(guān)系,也就是字符集。

在咱們通過(guò) MySQL 數據庫的客戶(hù)端向服務(wù)器插入中文數據的時(shí)候,有可能失敗,原因則可能是客戶(hù)端和服務(wù)器的字符集設置不同導致的,例如:

  • 客戶(hù)端的字符集為gbk,則一個(gè)中文字符,對應兩個(gè)字節;

  • 服務(wù)器的字符集為utf8,則一個(gè)中文字符,對應三個(gè)字節。

這樣顯然會(huì )在編碼轉換的過(guò)程中出現問(wèn)題,從而導致插入中文數據失敗。

由于所有的數據庫服務(wù)器表現的一些特性都是通過(guò)服務(wù)器端的變量來(lái)保持的,因此系統會(huì )先讀取自己的變量,看看具體的表現形式。這樣的話(huà),咱們就可以通過(guò)以下語(yǔ)句查看服務(wù)器到底識別哪些字符集:

-- 查看服務(wù)器識別的全部字符集show character set;

通過(guò)以上查詢(xún),咱們會(huì )發(fā)現:服務(wù)器是萬(wàn)能的,其支持所有字符集。

既然服務(wù)器支持這么多字符集,總會(huì )有一種是服務(wù)器默認的和客戶(hù)端打交道的字符集。因此,咱們可以通過(guò)以下語(yǔ)句查看服務(wù)器默認的對外處理的字符集:

-- 查看服務(wù)器默認的對外處理的字符集show variables like 'character_set%';

  • 標注1:服務(wù)器默認的客戶(hù)端傳來(lái)的數據字符集為utf8;

  • 標注2:連接層字符集為utf8;

  • 標注3:當前數據庫的字符集為utf8;

  • 標注4:服務(wù)器默認的對外處理的字符集utf8.

通過(guò)以上查詢(xún),咱們會(huì )發(fā)現:服務(wù)器默認的對外處理的字符集是utf8.

那么反過(guò)來(lái),咱們在通過(guò)客戶(hù)端的屬性查看客戶(hù)端支持的字符集:

顯然,咱們已經(jīng)找到了問(wèn)題的根源,確實(shí)是:客戶(hù)端支持的字符集為gbk,而服務(wù)器默認的對外處理的字符集為utf8,因此產(chǎn)生矛盾。

既然問(wèn)題已經(jīng)找到了,那么解決方案就是:修改服務(wù)器默認接收的字符集為gbk.

-- 修改服務(wù)器默認接收的字符集為 GBK(不區分大小寫(xiě))set character_set_client = gbk;

這樣的話(huà),咱們再插入中文數據的時(shí)候,就會(huì )插入成功啦!But,在咱們查看數據的時(shí)候,又發(fā)現了一個(gè)問(wèn)題,就是之前咱們插入的中文數據顯示亂碼啦!不過(guò)這也正常,因為查詢(xún)的時(shí)候,數據的來(lái)源是服務(wù)器(utf8),解析數據的是客戶(hù)端,而客戶(hù)端僅識別gbk格式的數據,顯示亂碼也就在意料之中啦!

因此,解決方案就是:修改服務(wù)器給客戶(hù)端的數據字符集為gbk.

-- 修改服務(wù)器給客戶(hù)端的數據字符集為 GBK(不區分大小寫(xiě))set character_set_results = gbk;

如上圖所示,向服務(wù)器插入中文數據的問(wèn)題已經(jīng)解決啦!

此外,咱們之前使用的 SQL 語(yǔ)句:

-- 修改的只是會(huì )話(huà)級別,即當前客戶(hù)端當次連接有效,關(guān)閉后失效set 變量 = 值;

這樣的話(huà),每當咱們重啟客戶(hù)端的時(shí)候,都要依次重新進(jìn)行設置,比較麻煩,因此咱們可以使用快捷的設置方式,即:

set names 字符集;

例如,

/*** 恒等于 set character_set_client = gbk;* 恒等于 set character_set_results = gbk;* 恒等于 set character_set_connection = gbk;*/set names gbk;

表示上述一條語(yǔ)句,將同時(shí)改變三個(gè)變量的值。其中,connection為連接層,是字符集轉換的中間者,如果其和client和results的字符集一致,則效率更高,不一致也沒(méi)有關(guān)系。

校對集問(wèn)題

校對集,其實(shí)就是數據的比較方式。

校對集,共有三種,分別為:

  • _bin:binary,二進(jìn)制比較,區分大小寫(xiě);

  • _cs:case sensitive,大小寫(xiě)敏感,區分大小寫(xiě);

  • _ci:case insensitive,大小寫(xiě)不敏感,不區分大小寫(xiě)。

查看(全部)校對集 –> 基本語(yǔ)法:show collation;

如上圖所示,MySQL 數據庫支持百多種校對集。

接下來(lái),咱們在一起看看校對集的應用,因為只有當數據進(jìn)行比較的時(shí)候,校對集才會(huì )生效。在這里,咱們用utf8的_bin和_ci兩種校對集進(jìn)行比較:

-- 創(chuàng )建兩張使用不同校對集的表create table my_collate_bin( name char(10))charset utf8 collate utf8_bin;create table my_collate_ci( name char(10))charset utf8 collate utf8_general_ci;

如上圖所示,咱們創(chuàng )建了兩張表,分別為my_collate_bin和my_collate_ci,其校對集分別為_(kāi)bin和_ci. 然后,分別向這兩張表中添加數據:

-- 向表中添加數據insert into my_collate_bin values ('a'),('A'),('B'),('b');insert into my_collate_ci values ('a'),('A'),('B'),('b');

再分別查看兩張表中的數據:

-- 查看表中的數據select * from my_collate_bin;select * from my_collate_ci;

下面,咱們根據表中的某個(gè)字段(在這里my_collate_bin和my_collate_ci都僅有一個(gè)字段)進(jìn)行排序,其基本語(yǔ)法為:

order by + 字段名 + [asc/desc];

其中,asc表示升序,desc表示降序,默認為升序。執行如下 SQL 語(yǔ)句:

-- 排序比較select * from my_collate_bin order by name;select * from my_collate_ci order by name;

如上圖所示,顯然校對集生效啦!

此外,咱們需要特別注意的是: 校對集必須在沒(méi)有數據之前聲明好,如果有了數據之后,再進(jìn)行校對集的修改,則修改無(wú)效。

如有侵權請聯(lián)系小編刪除哦!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
熬夜肝了 | 值得收藏!一篇數據庫規范,你應該用得上
使用SQL語(yǔ)句操作MYSQL字符編碼
關(guān)于MySQL如何修改character
MySQL+PHP亂碼原理與解決 - 51CTO.COM
修改MYSQL數據庫,數據表,字段的編碼(解決JSP亂碼)
升級遷移:利用DMU修改數據庫字符集
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久