mySQL的安裝和基礎使用及語法指南
一、MySQL的安裝、配置及卸載
1、安裝
2、配置
3、mySQL5.1的完全卸載
4、MYSQL環境變量的配置
二、MySQL控制台doc窗口的操作命令
1、對倉庫databases的操作
2、對表格的操作
三、MySQL中數據類型和約束
1、數據類型
2、約束
四、MySQL客戶端的安裝
1、安裝
五、Navicat的基礎使用指南
1、連接到數據庫
2、對倉庫的操作:
3、對表格的操作
4、從excel導入數據到表格:
六、常用SQL語句:
(一)單表查詢
1、查詢語句基本格式:
2、基本用法:
3、模糊查詢(like, not like)
4、比較查詢(<,>,>=,<=,!=,<>)
5、邏輯查詢(and, or)
6、集合查詢(in,not in)
7、區間查詢(between…and…)
8、非空查詢(is null, is not null)
9、排序(order by)
10、去重(distinct)
11、分組(group by)
12、聚合函數(max(),min(),avg(),sum(),count(*))
(二)多表查詢
1、嵌套查詢
2、等值連接
3、內連接(inner join )
4、外連接
(三)數據的增、刪、改功能
1、增加表格的內容(insert into…values…)
2、刪除表格內容(delete)
3、修改表格內容(update)
4、SQL語法中的存儲過程及if語句的使用
一、MySQL的安裝、配置及卸載
1、安裝
我安裝的版本是mysql-essential-5.1.55-win32.msi;大部分選擇默認,繼續下一步即可,具體步驟可參見下圖:
選擇Typical典型安裝即可:
安裝路徑可默認也可自定義:
此處勾選上configure the MYSQL Server now可接着對MYSQL進行配置
2、配置
此處默認路經即可,也可自定義:
端口號如果選擇3306后報錯,可換下邊的其他端口號,但最好要記住自己的端口號,因為連接數據庫時需要。同時勾選上Add firewall exception for this port。
此處Character set選擇utf8:
此處為用戶密碼設置,如果后邊的Root選了就可以從其他電腦以root身份登錄
點擊上邊的Execute執行后至少要出現下圖的前三個勾,數據庫才能正常運行:
3、mySQL5.1的完全卸載
此主要給那些電腦上原本已經安裝過MYSQL后出現問題再重新安裝需對原來的安裝進行完全卸載的一個參考。
(1)、從控制面板里的卸載程序中對MYSQL的主體程序進行卸載;
(2)、刪除MySQL文件夾下的my.ini文件,如果備份好,可以直接將文件夾全部刪除
(3)、看看注冊表里這幾個地方刪除沒有
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQL 目錄刪除
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL 目錄刪除
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL 目錄刪除
(4)、刪除此用戶數據目錄下的文件
C:/Documents and Settings/All Users/Application Data/MySQL
如果這里還有MySQL的文件,必須要刪除
注意:Application Data這個文件夾是默認隱藏的,需要打開個文件夾選擇菜單欄工具→文件夾選項→查看→隱藏文件和文件夾 一項選上 顯示所有文件和文件夾 確定
4、MYSQL環境變量的配置
只有配置了環境變量,才能在DOC控制台對數據庫進行操作。
右鍵點擊計算機—>屬性—>高級設置—>環境變量—>在系統變量中找到Path,選擇—>編輯—>在變量值最前邊加上 C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin;
注意分號不能少,如果MYSQL安裝時選擇的是默認路徑即可用上邊給的路徑,如果自定義了路徑則需用自己的安裝路徑,並在最后加上\bin;
添加上后點擊確定。
接下來通過doc窗口進行驗證:
開始—>運行—>輸入cmd—>輸入mysql -uroot -p —>回車—>如果能出現Enter password: 提示,輸入密碼后出現如下提示即表示配置成功:
二、MySQL控制台doc窗口的操作命令
此主要給感興趣的一個參考,也有方便學習的循序漸進,如果只想學習通過客戶端對數據庫進行操作,可跳過此部分。
1、對倉庫databases的操作
查看所有的數據倉庫:show databases; (如下圖,新安裝的mysql一般都包含以下幾個倉庫,注意每個命令后的分號不可少)
新建倉庫: create database newname; (newname即為你自己創建的倉庫名)
刪除倉庫: drop database newname; (友情提示:系統自帶的三個倉庫最好不要刪,否則會有意想不到的事情發生)
進入倉庫:use newname; (即使用此倉庫)
2、對表格的操作
對表格進行操作時必須要先進入一個倉庫
查看倉庫內的所有表格:show tables;
創建新表格:create table xxb(xingming varchar(20) primary key, nianling int not null,xingbie varchar(10) not null);
創建表格的同時必須要創建至少一個列標題(xingming和nianling都是列標題),多個列標題之間以逗號分隔;創建每個列標題時可同時添加兩個參數用於限定這一列內容的格式或要求,這兩個參數依次為:數據類型、約束(具體解釋可見后文),也可不加參數,參數之間以空格分隔。所有參數以一個圓括號包圍。
刪除一個表格:drop table xxb;
查看一個表格的結構:desc xxb; (如果上一步執行刪除了請再建一個再查看…)
修改表格中某一列標題屬性:alter table xxb modify xingming int;(xxb為表名,modify后跟要修改的列標題及屬性)
給xxb表增加一列:alter table xxb add jiguan varchar(30) not null;
刪除表格中的某一列:alter table xxb drop jiguan;
三、MySQL中數據類型和約束
1、數據類型
常用的數據類型:整數(int),浮點數(float),字符串(char),可變字符串(varchar),時間(timestamp)。
創建列標題時一般在數據類型后邊加括號對數據類型進行修飾。上邊的數據類型除了varchar之外都可以不加修飾,因為它有默認修飾。
int(2)表示兩位整數;
float(3)表示精確到小數點后三位;
char(4)表示四位的字符串,如果不足四位則以空格充填;
varchar(10)表示最大10位的字符串,在10以內的都可以;
2、約束
約束主要對一個列進行屬性方面的修飾,常用的約束有:
主鍵(primary key),外鍵(foreign key),非空(not null),唯一(unique),范圍(enum),默認(defalt)
主鍵:唯一且不能為空,一般一個表格都需指定一個主鍵;
外鍵:主要用於和主鍵關鍵,有一個外鍵就必須在其他表存在一個相應的主鍵
非空:不能為空
唯一:可以為空,但有且最多只能有一個為空;
范圍:指定了輸入內容的范圍,如枚舉“男”、“女”;
默認:一般用於默認時間;
四、MySQL客戶端的安裝
1、安裝
此處示范的是navicat8客戶端工具的安裝。完全用默認的下一步即可,具體可參考下圖:
最后注冊時可試試此注冊碼:NAVJ-W56S-3YUU-MVHV。
五、Navicat的基礎使用指南
1、連接到數據庫
點擊右上角的connection,如上圖,連接名字與數據庫無關,自定;
IP處如果mysql安裝本機則用默認的localhost即可,如果用其他服務器上的數據庫則寫入相應的ip地址;
接口是安裝mysql時確定的,默認的為3306,如果安裝時作了修改則填自己修改的的接口號;
用戶名和密碼為當時自己設置的;
2、對倉庫的操作
創建新倉庫:
刪除倉庫:選中想要刪除的倉庫—>右鍵—>drop database即可
3、對表格的操作
新建:
選中想要使用的倉庫—>雙擊—>選中Tables—>右鍵—>new table,然后根據出現的圖形界面進行相應選項的設置,下圖紅框內的選項為對表格內容的操作,依次為:增加、插入、刪除;表格框架設置好之后點擊save保存即可
刪除:
選中想要刪除的表格—>右鍵—>delete table 即可。
4、從excel導入數據到表格
選中想要導入的表格—>右鍵—>import
選擇想要導入表格的格式,最好是2007以前的xslx格式的
選擇圖中位置進行excel表格的選擇,當然也可以直接輸入文件地址;后點擊next:
在圖在紅框位置選擇要導入的excel表格和表格內數據位置的sheet;
First row 表示從第幾格開始導入,一般excel第一行都是名字,所以一般從2開始
到這一步將excel表格內的數據依次對應到要導入數據庫的表格的項目列
點擊上圖的start后進行導入,如果出現下圖的Successfully提示則表示導入成功。
5、SQL語句的寫入和執行
在Tables下邊找到Queries—>選擇—>New Query
即可在出現的窗口中寫入SQL語句,此處前邊在控制台doc窗口的命令都可以執行。且可以只執行一部分命令,選中想要執行的語句—>右鍵—>Run Selected即可運行這部分語句(如果點擊的是左上角工具欄的Run則會運行所有的語句)
如果語句沒有錯誤,則會跳轉到另一個窗口提示運行結果(可參考下圖):
六、常用SQL語句
我創建了三個表:
學生表(xsb):學號(xh)(主鍵)、姓名(xm)、性別(xb)、籍貫(jg)、班級(bj)、身份證號(sfzh)、注冊日期(zcrq)
課程表(kcb):課程號(kch)(主鍵)、課程名(kcm)
成績表(cjb):課程號(kch)(外鍵)、學號(xh)(外鍵)、成績(cj)
(一)單表查詢
1、查詢語句基本格式:
Select 查找內容
from 查找源
where 查詢條件
group by 分組
having 對groupr的補充限定,可對分組后的結果進行條件篩選
order by 對結果進行排序
2、基本用法:
(注意語句中的所有標點都必須是在英文輸入狀態下的標點)
例:查詢張三的身份證號
select sfzh
from xsb
where xm=’張三’
語句中除了select 和from是必須的之外,其他選項都是可選的;查詢多個項目用逗號分隔(如:select xm,nl),也可以將sfzh寫為sfzh as 身份證號 來改變結果顯示時的列標題。sfzh可用入“*”代替,表示查詢符合條件的所有內容(如下圖):
限定條件中’張三’如果是char或者varchar類型的數據則需要用單引號包圍,如果是int類型則不需要;
3、模糊查詢(like, not like)
將like替換等號,用”%”進行模糊字段限定
如:查詢所有姓張的人的身份號和姓名;
select sfzh,xm
from xsb
where xm like ‘張%’
“%”也可以放在前邊(‘%張’)表示最后一個字為”張”的項,同樣也可以放在兩邊(’%張%’)表示含有‘張’字的項;
也可以用“_”來限定模糊查詢的字符數,如:’張_’,表示姓張且只有兩個字的名字;
同樣的not like表示不含有。
4、比較查詢(<,>,>=,<=,!=,<>)
主要用於對數據的判斷,!=和<>都表示不等於。
例:查詢所有年齡大於30的所有人的姓名和年齡:
select xm as 姓名,nl as 年齡
from xsb
where nl>30
5、邏輯查詢(and, or)
主要用於多個條件的同時使用,and表示必須同時成立,or表示至少有一個成立
例:查詢所有姓張和年齡小於30的人的姓名:
select xm
from xsb
where xm like ‘張%’ and nl<30
6、集合查詢(in,not in)
表示條件符合某個給定集合的結果,在一定程度上和or類似
例:查詢張三和李四的籍貫:
select jg,xm
from xsb
where xm in ('張三','李四')
7、區間查詢(between…and…)
一般用於限定兩個數據之間的條件,如between 30 and 60
8、非空查詢(is null, is not null)
條件為是否為空,如限定查詢年齡為空的項: nl is null
9、排序(order by)
排序放在語句的最后,by后跟以哪一項排序,可以再加上desc表示按降序排,同樣的asc表示升序,不過可以不定asc,因為排序默認的就是按升序排;
列:查詢所有人的姓名和年齡並按年齡的降序排列
select xm,nl
from xsb
order by nl desc
10、去重(distinct)
distinct 后接以什么項為標准進行去重,如果有多個項,以逗號分隔,且要那多個項同時都重復才執行去重;
例:將學生表中的所有人以班級項進行去重
select distinct bj
from xsb
11、分組(group by)
group by與distinct 功能類似,都是將所有相同的項放在一起,不過distinct 只保留這相同的同的一項,而group而保留了所有有項,以便於進行分組計數和操作,還有就是group by 所入的位置和distinct不同,放在了where 之后,具體可參考標准格式。
12、聚合函數(max(),min(),avg(),sum(),count(*))
max()找最大值,必須給定參數
min()找最小值,必須給定參數
avg()求平均值,必須給定參數
sum()求和,必須給定參數
count(*)統計項數,可不給定參數,而用*統計所有內容
例:找出3班中年齡最大人的姓名和年齡
select max(nl),xm
from xsb
where bj=’3班’
(二)多表查詢
多表查詢就是將具有主外鍵連接的多個表進行整合查詢
1、嵌套查詢
以另一個表的查詢結查為這個表的查詢限定條件,以主外鍵為橋梁。
例:查詢成績大於80的所有人的姓名:
select xm
from xsb
where xh in (
select xh from cjb
where cj>80)
上例中查詢的是xm,所以從xsb查找,不過條件來源於cjb
2、等值連接
將查詢所需要的表先用主外鍵連接起來(相當於合成一個大表),再進行查詢
同樣查詢上邊的例子:
select xm
from xsb,cjb
where xsb.xh=cjb.xh and cj>80
結果同上邊相同,多個表格來源都需要在from中體現,表格名字之間以逗號連接,主外鍵連接作為一個條件放在where中任意位置即可。
3、內連接(inner join )
主要用於區分外連接,就是只連接兩個表只都存在的項,合成的表格是兩個表格同時含有的主外鍵的交集;上邊的等值連接和嵌套連接的本質都是內連接;
同樣查詢上邊的例子:
select xm
from xsb inner join cjb
on xsb.xh=cjb.xh
where cj>80
如果還有第三個表的連接,則直接在xsb.xh=cjb.xh后邊加 inner join kcb on cjb.kch=kcb.kch
4、外連接
包括左連接(left join)和右連接(right join)
語法格式和內連接一樣,左連接就是以left join左邊表格的所有項為標准為進行連接,即使右邊的表格不存在左邊表格中的某一項,也會將值設置為null進行添加;同理,右連接就是以right join 右邊的表格為標准進行連接。
例:查詢所有沒有統計到成績的人的姓名和學號
select xm,xsb.xh
from xsb left join cjb
on xsb.xh=cjb.xh
where cj is null
如果查詢的結果項中含有兩個表都含有的相同名稱的主外鍵,則需在前邊加上表名進行查詢來源的限定,如上邊的xsb.xh。
(三)數據的增、刪、改功能
以倉庫和表格設計的修改語句可參考前邊doc窗口的命令,都是可以執行的
1、增加表格的內容(insert into…values…)
例:insert into xsb (xh,xm,xb,jg)
values(015,’趙四’,’女’,’江西’)
插入一條數據時,一個表中的約束為主鍵和非空約束的必須給定一個值,其他的則可選輸入;如查xsb后邊給了要插入參數的名字,這些名字可以是任意順序,之間以逗號分隔,下邊的值的順序要和自己自定義的數據順序一致。
前邊的xsb后邊也可以不跟列標題名,但插入的數據順序必須是表格從左到右依次的內容。如:insert into jcb
values(1,005,98)
2、刪除表格內容(delete)
從倉庫內刪除一個表格:drop table 表名
清空一個表格內的所有內容:delete from 表名
刪除其中的某幾項:delete from 表名 where 限定條件
3、修改表格內容(update)
update 表名 set 列標題名=修改值 where 查找限定條件;
4、SQL語法中的存儲過程及if語句的使用
此可興趣學習,可參考http://www.cnblogs.com/aland-1415/p/6628045.html
5、json查詢
mysql5.7以上支持json的操作,以及增加了json存儲類型,
查詢:select * from log where data->'$.id' = 142;
select * from logs where JSON_CONTAINS(data)

創建json json_array 創建json數組 json_object 創建json對象 json_quote 將json轉成json字符串類型 查詢json json_contains 判斷是否包含某個json值 json_contains_path 判斷某個路徑下是否包json值 json_extract 提取json值 column->path json_extract的簡潔寫法,MySQL 5.7.9開始支持 column->>path json_unquote(column -> path)的簡潔寫法 json_keys 提取json中的鍵值為json數組 json_search 按給定字符串關鍵字搜索json,返回匹配的路徑 修改json json_append 廢棄,MySQL 5.7.9開始改名為json_array_append json_array_append 末尾添加數組元素,如果原有值是數值或json對象,則轉成數組后,再添加元素 json_array_insert 插入數組元素 json_insert 插入值(插入新值,但不替換已經存在的舊值) json_merge 合並json數組或對象 json_remove 刪除json數據 json_replace 替換值(只替換已經存在的舊值) json_set 設置值(替換舊值,並插入不存在的新值) json_unquote 去除json字符串的引號,將值轉成string類型 返回json屬性 json_depth 返回json文檔的最大深度 json_length 返回json文檔的長度 json_type 返回json值得類型 json_valid 判斷是否為合法json文檔