MYSQL常用操作

此篇是為數(shù)據(jù)庫(kù)小白入門(mén)而寫(xiě)的,介紹使用數(shù)據(jù)庫(kù)的最基本也是最常用的一些操作。我也是在日常工作中東一點(diǎn)西一點(diǎn)學(xué)到的,難免不成體系,理解也有偏頗,歡迎批評(píng)指正。

目錄:

一、創(chuàng)建數(shù)據(jù)庫(kù)

二、創(chuàng)建表

三、數(shù)據(jù)導(dǎo)入導(dǎo)出

四、單表查詢

五、多表查詢

六、查詢優(yōu)化

默認(rèn)使用NAVICAT FOR MYSQL,安裝教程見(jiàn)MYSQL軟件安裝及配置

一、創(chuàng)建數(shù)據(jù)庫(kù)

右鍵單擊連接的MYSQL服務(wù)名稱(chēng),新建數(shù)據(jù)庫(kù),彈出以下界面,填寫(xiě)數(shù)據(jù)庫(kù)名(中英文都可以,建議英文),字符集選gbk,排序規(guī)則選gbk_chinese_ci,因?yàn)槲覀兲幚淼臄?shù)據(jù)大多是中文,這樣不會(huì)亂碼。

新建數(shù)據(jù)庫(kù)界面

二、創(chuàng)建表

MYSQL導(dǎo)入數(shù)據(jù)前必須先創(chuàng)建好一個(gè)表格,告訴數(shù)據(jù)庫(kù)這個(gè)表有哪些字段名稱(chēng)、數(shù)據(jù)是什么類(lèi)型等,創(chuàng)建的表的樣式必須與要導(dǎo)入的數(shù)據(jù)樣式一樣。

1、菜單操作創(chuàng)建表

雙擊創(chuàng)建的數(shù)據(jù)庫(kù),點(diǎn)擊下面的【表】,點(diǎn)擊【新建表】,填寫(xiě)字段名稱(chēng)、數(shù)據(jù)類(lèi)型、長(zhǎng)度。

創(chuàng)建表界面1
創(chuàng)建表界面2

(1) 數(shù)據(jù)類(lèi)型及長(zhǎng)度填寫(xiě)說(shuō)明

字段為字符串的,選擇varchar,如身份證號(hào)碼、手機(jī)號(hào)碼、姓名等,varchar需給定一個(gè)長(zhǎng)度,這個(gè)根據(jù)字段信息大概估一個(gè)值,注意如果過(guò)小的話,可能有些數(shù)據(jù)會(huì)讀取不到;

字段為數(shù)字的,選擇int或者float,int為整數(shù),float為浮點(diǎn)數(shù)。

(2)增加一些限制條件

創(chuàng)建表的時(shí)候,有時(shí)會(huì)增加一些限制條件,如是否允許空值啊,是否添加主鍵啊。講一下主鍵吧,比較常用。

主鍵(primary key)是表中的一個(gè)或多個(gè)字段,它的值用于唯一地標(biāo)識(shí)表中的某一條記錄,相當(dāng)于一個(gè)ID,它對(duì)應(yīng)的值必須是唯一的而且是非空的。

?一般會(huì)選擇唯一且非空、有ID性質(zhì)的字段添加主鍵,如用戶號(hào)碼。在導(dǎo)入數(shù)據(jù)的時(shí)候增加這個(gè)限制,可以保證我們導(dǎo)入的數(shù)據(jù)是唯一的而且是非空的。如果導(dǎo)入的數(shù)據(jù)不是唯一的,則導(dǎo)入時(shí)會(huì)報(bào)錯(cuò)。

主鍵除了作為限制外,還有別的用途,主鍵可以作索引用,增加查詢速度。

2、使用SQL語(yǔ)句創(chuàng)建表

雙擊創(chuàng)建的數(shù)據(jù)庫(kù),點(diǎn)擊下面的【查詢】,點(diǎn)擊【新建查詢】,進(jìn)入查詢編輯器,對(duì)應(yīng)以上菜單操作,其SQL語(yǔ)句如下:

CREATE TABLE my_table (

`身份證號(hào)碼`? varchar(18) ?,

`姓名`? varchar(10) ?,

`年齡`? int ?,

`身高`? float ,

PRIMARY KEY (`身份證號(hào)碼`));

三、數(shù)據(jù)導(dǎo)入導(dǎo)出

1、數(shù)據(jù)導(dǎo)入

load data local infile 'F:/XX.txt' into table XXX

fields terminated by '|'

lines terminated by '\r\n';

注1:數(shù)據(jù)路徑不能含有中文,必須是英文;

注2:換行符有'\r\n'、'\r'、'\n'三種,不同系統(tǒng)的換行符不同,'\r\n'是Windows系統(tǒng)的換行符,'\n'是Linux系統(tǒng)的換行符,'\r'是Unix系統(tǒng)的換行符,一般先試'\r\n',如果發(fā)現(xiàn)只能導(dǎo)入一行數(shù)據(jù),一般是換行符不正確,則再試試其他兩個(gè)換行符。

2、數(shù)據(jù)導(dǎo)出

select ?xxx ?from table_name

into outfile "F:/xx.txt"

fields terminated by '|'

lines terminated by '\r\n';

四、單表查詢

1、簡(jiǎn)單數(shù)據(jù)查詢

(1)查詢所有字段

select * from table_name;

(2)查詢指定字段

select field1, field2, ..., fieldn ?from ?table_name;

(3)使用關(guān)鍵字DISTINCT避免重復(fù)數(shù)據(jù)查詢

select ?DISTINCT field1, field2, ..., fieldn? from? table_name;

2、條件數(shù)據(jù)查詢

使用關(guān)鍵字WHERE對(duì)查詢的記錄進(jìn)行過(guò)濾,查詢結(jié)果只輸出滿足條件的數(shù)據(jù)。

select field1, field2, ..., fieldn? from? table_name

where 條件;

3、排序數(shù)據(jù)記錄查詢

查詢到的數(shù)據(jù)記錄在默認(rèn)情況下是按照數(shù)據(jù)記錄最初添加到表中的順序顯示,我們可以使用關(guān)鍵字ORDER BY 來(lái)設(shè)置查詢結(jié)果的順序。

select field1, field2, ..., fieldn? from? table_name

order by fieldm1 ASC;

在上述語(yǔ)句中,查詢結(jié)果按照字段fieldm1升序排序,參數(shù)ASC為升序,也可換成DESC降序排序。

4、限制數(shù)據(jù)記錄查詢

使用關(guān)鍵字LIMIT可限制查詢結(jié)果數(shù)量:

select field1, field2, ..., fieldn? from? table_name

limit 初始位置, 行數(shù);

5、統(tǒng)計(jì)函數(shù)和分組數(shù)據(jù)記錄查詢

(1)常用的統(tǒng)計(jì)函數(shù)有count(),avg(),sum(),max(),min()

select count(*) ?from? table_name;

select avg(fieldm) from table_name;

(2)使用關(guān)鍵字GROUP BY進(jìn)行分組查詢

select filedm, count(fieldn) from table_name

group by fieldm;

6、舉個(gè)例子

表3月長(zhǎng)市漫號(hào)碼有字段主套餐 | 品牌 | 用戶號(hào)碼 3個(gè)字段,查詢神州行品牌用戶數(shù)前10的主套餐及其對(duì)應(yīng)的用戶數(shù),SQL語(yǔ)句如下:

select 主套餐,count(distinct 用戶號(hào)碼) from 3月長(zhǎng)市漫號(hào)碼

where 品牌='神州行'

group by 主套餐

order by count(用戶號(hào)碼) desc

limit 1,10;

五、多表查詢

多表查詢涉及多個(gè)表的連接,兩個(gè)表的連接可使用內(nèi)連接(inner join)、左外連接(left join)、右外連接(right join),按照跑數(shù)邏輯選取。

select ?....

from table_name a

left join another_table_name b

on a.id = b.id;

注1:上述語(yǔ)句中a和b分別是table_name和another_table_name的別名,因?yàn)楸淼拿忠话惚容^長(zhǎng),為了簡(jiǎn)化(偷懶),給它們各自取個(gè)簡(jiǎn)單的別名,可避免重復(fù)輸入長(zhǎng)長(zhǎng)的表名。

注2:on后面是連接條件a.id = b.id。

注3:如果兩個(gè)連接的表不在同一個(gè)數(shù)據(jù)庫(kù)下,則使用該表需加它的數(shù)據(jù)庫(kù)名作為前綴。比如表1在database1數(shù)據(jù)庫(kù)中,表2在database2數(shù)據(jù)庫(kù)中,查詢?cè)赿atabase1中進(jìn)行,則使用表2的方式如下:database2.表2。

六、查詢優(yōu)化

?多表查詢時(shí),當(dāng)數(shù)據(jù)量上千萬(wàn)級(jí)別,跑數(shù)通常長(zhǎng)達(dá)幾個(gè)小時(shí),這時(shí)對(duì)查詢語(yǔ)句進(jìn)行優(yōu)化顯得非常重要。最常用的查詢優(yōu)化方法就是加索引:索引類(lèi)似于書(shū)的目錄,主要是為了提高從表中檢索數(shù)據(jù)的速度。索引的創(chuàng)建有利有弊,創(chuàng)建索引可以提升查詢速度,但過(guò)多的索引則會(huì)占據(jù)許多磁盤(pán)空間。

1、 什么情況下適合創(chuàng)建索引呢?

(1)用于兩表連接的字段;

(2)經(jīng)常被查詢的字段,即在WHERE子句中出現(xiàn)的字段;

(3)在分組的字段,即在GROUP BY子句中出現(xiàn)的字段;

(4)設(shè)置唯一完整性約束的字段,主鍵就是這種。

2、怎樣創(chuàng)建索引呢?

(1)創(chuàng)建表時(shí)創(chuàng)建普通索引

create table 2月長(zhǎng)市漫號(hào)碼 (

用戶號(hào)碼 varchar(11),

品牌 varchar(50),

主套餐 varchar(50),

index index_用戶號(hào)碼(用戶號(hào)碼));

(2)在已經(jīng)存在的表上創(chuàng)建普通索引

create index index_name on table_name(字段名);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是SQL數(shù)據(jù)庫(kù): SQL是Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言)的縮寫(xiě)。SQL是...
    西貝巴巴閱讀 2,002評(píng)論 0 10
  • 1. 查看數(shù)據(jù)庫(kù):show databases; 2. 創(chuàng)建數(shù)據(jù)庫(kù):create database kuname;...
    Yajulia閱讀 317評(píng)論 0 1
  • SQL SELECT 語(yǔ)句 一、查詢SQL SELECT 語(yǔ)法 (1)SELECT 列名稱(chēng) FROM 表名稱(chēng) (2...
    有錢(qián)且幸福閱讀 6,005評(píng)論 0 33
  • 可惜朱歆終歸拿捏作的經(jīng)驗(yàn)太少,最后沒(méi)作出什么名堂,倒是把沈逸程惹得快要發(fā)火。 沈逸程先是百般溫柔詢問(wèn)她怎么了。在總...
    琥琥妞閱讀 572評(píng)論 0 1
  • 當(dāng)只有我和兒子在家那天開(kāi)始,我就動(dòng)了想要養(yǎng)一只寵物的念頭。每天想著想著,突然腦子里閃過(guò)一個(gè)信息,我的微信好友...
    攸冉11言玫閱讀 247評(píng)論 0 0

友情鏈接更多精彩內(nèi)容