Mysql教程(Windows)
一.
資料庫分類
https://www.cnblogs.com/xyabk/p/8967990.html
1. 網路資料庫
2. 層級資料庫
3. 關係資料庫
另一種區分方式:基於介質
儲存介質分為兩種:磁碟和記憶體
關係型資料庫:儲存在磁碟中
非關係型資料庫:儲存在記憶體中
關係型資料庫
關係資料結構:資料以什麼方式儲存(二維表)
關係操作集合:關聯和管理對應的儲存資料(SQL指令)
關係完整性約束:資料內部有對應的關聯關係,資料與資料之間也有對應的關聯聯絡
表內約束:對應的具體列只能放對應的資料(不能亂放)
表間約束:(外來鍵)
典型關係型資料庫:
小型:Microsoft Access,SQLite
中型:SQL Server,Mysql
大型:Oracle,DB2
二.SQL介紹
1. 資料查詢語言DQL 專門用於查詢資料select/show
2. 資料操作語言DML 專門用於寫資料 insert/update/delete
3. 事務處理語言TPL 專門用於事務安全處理transaction/
4. 資料控制語言DCL 專門用於許可權管理grant/revoke
5. 資料定義語言DDL 專門用於結構管理create/drop(alter)
三.Mysql
啟動和停止MySQL服務
C/S結構 客戶端 服務端
服務端對應的軟體Mysqld.exe
1. 通過命令列的形式cmd
net start 服務(Mysql):開啟服務
net stop Mysql:關閉服務
2. 系統服務方式
前提:安裝MySQL時將其新增到Windows的服務中
(計算機--管理--服務)或命令列 service.msc
找到mysql開啟服務
登入和退出MySQL服務
通過客戶端mysql與伺服器進行連線認證,就可以操作
通常:客戶端與服務端不在一臺電腦上
登入
1. 找到MySQL.exe(通過cmd如果安裝時指定了mysql.exe所在路徑為環境變數,就可以直接訪問;如果沒有,進入到mysql所在路徑)
2. 輸入對應的伺服器地址 -h:host -h[IP 地址/域名]
3. 輸入伺服器中mysql監聽的埠 -P:port -P:3306
4. 輸入使用者名稱
5. 輸入密碼 -p:password -p:root
連線認證基本語法:
mysql.exe/mysql -h主機地址 -P3306 -u使用者名稱 -p密碼
例:mysql.exe -hlocalhost -P3306 -uroot -proot
注意:通常埠都可以預設:mysql預設3306
密碼的輸入可以先輸入-p,直接換行,然後以密文方式輸如密碼
例:mysql -hlocalhost -uroot -p
Enter password:****
退出
斷開與伺服器的連線
建議使用SQL提供的指令
exit;
\q
quit:
MySQL服務端架構
以下幾層:
1. 資料庫管理系統(最外層)DBMS 專門管理服務端的所有內容
2. 資料庫(第二層):DB 專門用於存取資料的倉庫(可以有多個)
3. 二維資料表(第三層):Table 專門用於儲存具體實體的資料
4. 欄位(第四層)fileld 具體儲存某種型別的資料(實際儲存單元)
資料庫中常用的關鍵字
row:行
column:列(field)
資料庫基本操作
-- xxxx (註釋)
建立資料庫
基本語法:create datebase資料庫名字【庫選項】
庫選項:資料庫的相關屬性
字符集:charset 字符集 代表當前資料庫下的所有表儲存的資料預設指定的字符集(如果不指定,採用DBMS預設的UTF-8)
create database 資料庫名稱 charset 字符集名稱;
create database myfatabase charset gbk;
校對集:collate 校對集 隨字符集
顯示資料庫
每當使用者通過sql指令建立一個數據庫,系統就會產生一個對應的儲存資料的資料夾(通常儲存在安裝目錄是data下)
並且每個資料庫資料夾下都有一個opt檔案,儲存的數對應的資料庫選項
顯示全部
基本語法:show databases;
顯示部分、、
基本語法:show databases like ‘匹配模式’;
_:匹配當前位置單個字元
%:匹配指定位置多個字元
顯示資料庫建立語句
基本語法:show create database 資料庫名字;
看到的指令並非原始指令,已經被系統加工過
選擇資料庫
如果要操作資料必須要進入到對應的資料庫才行
基本語法:use 資料庫名字
修改資料庫
修改資料庫 庫選項(字符集和校對集)
基本語法:alter database 資料庫名字 charset=字符集
mysql5.5之前rename 可修改資料庫名字,5.5後不行
刪除資料庫
基本語法:drop database 資料庫名字;
刪除雖簡單,不要輕易刪,做好安全操作,確保資料沒問題。
對應的資料夾和opt檔案都被刪除了
資料表操作
建立資料表
普通建立表
基本語法:create table 表名(欄位名 欄位型別[欄位屬性],欄位名 欄位型別[欄位屬性], .....)[表選項];
表必須放在資料庫下,兩種方式將表放在指定資料庫下
1. 在資料表名字前面加上資料庫名字,用“.”連線 資料庫.資料表
create table mydatabase.class(name varchar(10));
2.在建立資料表前進入到某個具體資料庫 use 資料庫名字;
use database;
create table newtable(name varchar(10));
預設建立到當前所在資料庫
表選項,與資料庫選項類似
engine:儲存引擎,MySQL提供的具體的儲存資料方式,預設innodb(5.5以前預設myisam)
charset:字符集,只對當前自己表有效(級別比資料庫高)
collate:校對集,只對當前自己表有效
複製已有表結構
從已經存在的表複製(只複製結構,表中有資料不復制)
基本語法:create table新表名 like 表名; 只要使用資料庫.表名,就可以在任何資料庫下訪問其他資料庫的表名
use test;(進入test資料庫)
create table teacher like mydatabase.teacher;
alter user ‘root’@’localhost’ identified with mysql_native_password by ‘password’
顯示資料表
.frm檔案代表結構檔案(結構檔案來自於innodb儲存引擎)
ibdata儲存所有innodb儲存引擎所對應的表資料
顯示所有表
基本語法:show tables;
匹配顯示錶
基本語法:show tables like ‘匹配模式’;
show tables like’c%’;
顯示錶結構
本質含義:顯示錶中包含的欄位資訊(名字,型別,屬性等)
describle 表名
desc 表名
show columns from 表名
顯示錶建立語句
檢視資料表建立時的語句(看到的語句已經不是使用者之前輸入的)
基本語法:show create table 表名;
mysql結束語句
;
\g (前兩個欄位在上排橫著,下面跟對應的資料)
\G (欄位在左側,資料在右側)有時候更直觀
設定表屬性
表屬性指的就是;engine引擎 ,charset字符集 , collate校對集
基本語法:alter table 表名 表選項 [=]可有可無 所做的修改;
注意:如果資料庫已經-確定了,裡面有很對資料了,不要輕易修改表選項(字符集影響不大)
修改表結構
修改表名:rename table 舊錶名 to 新表名; (資料庫中資料表名字通常有字首,取資料名前兩個字母加下劃線 例:my_表名)
修改表選項:alter table 表名 表選項 [=] 新值;
新增欄位:alter table 表名 add [column] 新欄位名 列型別[列屬性] [位置first/after 欄位名] (預設加到表的最後面)
欄位位置:欄位想要存放的位置。
first:在某某之間(最前面),第一個欄位
after 欄位名:放在某個具體的欄位後(預設的)
修改欄位名
alter table 表名 change 舊欄位名 新欄位名 欄位型別[列屬性] [位置屬性] (修改名字需要修改欄位型別)
修改欄位型別(屬性):
alter table 表名 modify 欄位名 新型別 [新屬性] [新位置]
刪除欄位:alter table 表名 drop 欄位名;
刪除表結構
基礎語法:drop table 表名[,表名2....]; 可同時刪除多個表
資料基礎操作
插入操作
本質:將資料以SQL的形式儲存到指定的資料表(欄位)裡面。
基本語法(向表中指定欄位插入):insert into 表名[(欄位列表)] values(對應欄位列表)
例:insert into test_mysql1 (name,age) values (‘jack’,11);
注意:後面values中 ,對應的值列表只需與前面的欄位列表相對應即可(不一定與表結構完全一致)
欄位列表不一定非要有所有的表中欄位
向表中所有欄位插入:insert into 表名 values (對應表結構) //值列表必須與欄位列表一致
查詢操作
查詢表中全部資料:select * from 表名; *表示匹配表中所有欄位
查詢表中部分資料:select 欄位列表 from 表名; 欄位列表使用‘ , ’隔開
簡單條件查詢:select 欄位列表/* from 表名 from 表名 where 欄位名=值
例:select name from test_mysql1 where age =33; (mysql中沒有==)
刪除操作
基本語法:delete from 表名 [where條件] 如果沒有where條件,意味著系統會自動刪除該表所有資料(慎用)
更新操作
將資料進行修改(通常是修改部分欄位資料)
基本語法:update 表名 set 欄位名 = 新值 [where條件];
如果沒有where 那麼 表中所有資料對應欄位都會被修改成統一值。
字符集
字元編碼
字元在計算機中對應的編碼(二進位制)
字符集
多個字元集合,常見的有:ASCII字符集,GB2312字符集,Unicode字符集
設定客戶端所有字符集
如果直接通過cmd 下的mysql.exe來操作msqld.exe 可能會出錯。
原因:
1.使用者通過mysql.exe來操作mysqld.exe
2.真正SQL執行是mysqld.exe來執行
3.mysql.exe 將資料傳入mysqld.exe 的時候,沒有告知其對應的符號規則(字符集),而mysqld也沒有能力自己判斷,就會使用預設的(字符集)
解決方案:mysql.exe 客戶端在進行資料操作之前將自己所使用的字符集告訴mysqld
cmd 下的mysql.exe預設都只有一個字符集:GBK
mysql如何告知mysqld對應字符集的型別是GBK?
快捷方式:set names 字符集;
重新進行資料插入:GBK;
深層原理:客戶端,服務端,連線層
mysql.exe 與mysqld.exe 之間關係分為三層:
客戶端傳入資料給服務端:client:character_set_client
服務端返回資料給客戶端:server:character_set_results
客戶端與服務端之間的連線:connection(中間層):character_set_connection
set names 字符集 本質:一次性打通三層關係的字符集 ,變得一致。
在系統中有三個變數來記錄著這三個關係對應的字符集:show variables like ‘character_set_%’;
修改伺服器端對應的值: set 變數名=值;
set charaset_set_client=gbk;
而connection 只是為了方便客戶端與服務端進行字符集轉換而設,不修改也沒有關係。
只要讓client:character_set_client 與server:character_set_results字符集一致就可以了
set names gbk;
1.set charaset_set_client=gbk; 為了讓伺服器識別客戶端傳來的資料
2.set charaset_set_connection=gbk; 更好的幫助客戶端與服務端進行字符集轉換
3.set charaset_set_results=gbk; 為了告訴客戶端服務端所有的返回的資料字符集
校對集
資料比較的方式
校對集有三種格式:
_bin:binary, 二進位制比較,取出二進位制位,一位一位的比較,區分大小寫
_cs:case sensitive,大小寫敏感,區分大小寫
_ci:case insensitice ,大小不寫敏感,不區分大小寫
檢視資料庫所支援的校對集:
show collation;
校對集應用
只有當資料產生比較的時候,校對集才會生效
預設校對集ci
對比: 使用utf-8的_bin和_ci來驗證不同的校對集的效果
1. 建立不同校對集對應的表
create table my_collate_bin(name char(1)) charset utf8 collate utf8_bin;
create table my_collate_ci(name char(1)) charset utf8 collate utf8_general_ci;
2.插入資料:insert into my_collate_bin values (‘a’),(‘b’),(‘c’),(‘d’);
insert into my_collate_ci values (‘a’),(‘b’),(‘c’),(‘d’);
3.比較:根據某個欄位進行排序:order by 欄位名[asc|desc]
select *from my_collate_bin order by name;
select*from my_collate_ci order by name;
ci不區分大小寫,排序不會變化
校對集:必須在有資料之前宣告好,有了資料再進行校對集修改,修改無效。
亂碼問題
列型別
整型(整數型別)
tinyint迷你整形,系統採用一個位元組來儲存的整型 一個位元組=8bit 最大0-255(-128-127)
smallint小整形,系統採用兩個位元組來儲存的整型,0-65535
mediunint中整型,系統採用三個位元組來儲存的整型
int整型,系統採用四個位元組來儲存的整型
bigint,系統採用八個位元組來儲存的整型
1.建立資料表
mysql> create table my_int(int_1 tinyint,int_2 smallint,int_3 mediumint,int_4 in
t,int_5 bigint) charset utf8;
2. 插入資料(tinyint255錯誤的,超出範圍)
3. 並非沒有那麼大的空間,而是mysql預設為整型增加負數,實際為-128-127
實際中:根據對應資料範圍來選定對應的整形型別,通常使用比較多的是tinyint和int
無符號標識設定
無符號表示:存出資料在當前欄位中沒有負數(只有整數,區間0-255)
基本語法:在型別後加一個unsigned
tinyint(3)unsigned:表示最長可以顯示3位(unsigned 0-255永遠不會超過3個長度)
tinyint(4):表示最長可以顯示4位(-128-127)
(顯示長度)代表了資料是否可以達到指定長度,但不會自動滿足到指定長度,如果想要資料顯示的時候,保持最高位顯示長度,那麼還需要給欄位增加一個zerofill屬性。
zerofill:從左側開始填充0,(左側不會改變數值大小),所以負數時不能使用zerofill ,
一旦使用zerofill就相當於確定該欄位為unsigned
資料顯示時,zerofill會在左側填充0到指定位,如果不足三位,那麼填充到3位,如果已經夠了或超出那麼不填充。
tinyint(2)
可以指定顯示長度,超出長度(不超出範圍)不會影響,只會對不夠長度的進行補充(顯示長度)
小數型別
專門用來儲存小數的
浮點型和定點型
浮點型
浮點型能存較大的數,但不精確,利用儲存資料的位來存指數
又稱精度型別,有可能丟失精度的資料型別,資料有可能不那麼準確,尤其是在超出精度長度範圍時。
float:有稱單精度型別,系統提供4個位元組儲存資料,但表示的資料範圍比整型大,大概10^38,但只能保證大概7個精度以內,超過7位不準確。
double: 雙精度,8個位元組儲存資料,10^308,精度15位左右。
float:表示不指定小數位的浮點數
float(M,D):一共儲存M位的有效數字,小數位為D位
float(10,2):整數位8,小數位2
如果插入資料超出精度,精度丟失那麼浮點型按四捨五入計算。
使用者不能插入資料直接超過指定的整數部分長度,但如果是系統自動進位導致,系統可以承擔。
浮點數可以用科學計數法來儲存資料。 例:10e5 =10^5
浮點數應用:儲存一些數量大,大到可以不用那麼精確的資料。
Double:又稱雙精度,系統用8個位元組儲存資料,10^308, 但精度只有15位。
定點數
能夠保證資料精確的小數(小數部分可能不精確,超出長度四捨五入),整數部分一定精確
decimal:定點數,系統自定根據儲存的資料來分配儲存的空間。每大概9個數會分配4個位元組來進行儲存,同時整數和小數部分是分開的。
decimal(M,D):M表示總長度,最大值不能超過65,D代表小數部分長度,最長不能超過30。
定點數如果整數進位超過長度也會報錯。
應用:如果涉及到錢的時候有可能使用定點數
日期時間型別
1.date
日期型別:系統使用三個位元組來儲存資料,對應的格式為:YYY-mm-dd :能表示的範圍是1000-01-01到9999-12-12
2.Time
時間型別,能表示某個指定時間,系統提供3個位元組來儲存 HH:ii:ss 但mysql中 time能表示的範圍大得多,從-838:59:59-838:59:59,在mysql中具體的用處是用來描述時間段。
3.datetime
日期時間型別:將前面的data和time合併起來,表示的時間 ,使用8個位元組儲存資料,YYY-mm-dd HH:ii:ss ,表示的區間1000-01-01 00:00:00 到9999-12-12 23:59:59
可以為0值 0000-00-00 00:00:00
4.timestamp
時間戳型別,表示從格林威治時間開始,格式仍然是:YY-mm-dd HH:ii:ss
5.year
年型別:佔用一個位元組來儲存,能儲存1900-2155年,但year有兩種資料插入方式:0-99和四位數的具體年。
相關推薦
Mysql教程(Windows)
一.資料庫分類https://www.cnblogs.com/xyabk/p/8967990.html1. 網路資料庫2. 層級資料庫3. 關係資料庫另一種區分方式:基於介質儲存介質分為兩種:磁碟和記憶體關係型資料庫:儲存在磁碟中非關係型資料庫:儲存在記憶體中關係型資料庫關係
MySQL最新版5.7.12安裝教程(windows)
一、從官網下載ZIP Archive檔案 網址:http://dev.mysql.com/downloads/mysql/ 二、解壓 把下載好的壓縮包解壓到你想要安裝的地方 三、配置ini檔案 開啟
Git安裝教程(windows)
nbsp 配置文件 分享 不同 情況 ros ges 便是 版本控制 Git是當今最流行的版本控制軟件,它包含了許多高級工具,這裏小編就講一下Git的安裝。 首先如下圖:(點擊next) 第二步:文件位置存儲,可根據自己盤的情況安裝 第三步:安裝配置文件,自己需要
XMind8激活為Pro教程(Windows)
其他 xmind div 網絡防火墻 min exe 阻止 ini文件 默認 本教程用於激活XMind(思維導圖制作軟件),僅限於個人學習使用。 目前本人激活的版本是xmind8-up6版本,其他更高版本不保證能適用。 步驟: 1、英文官網下載客戶端並安裝(不能用於中文
MySQL教程(四) SQL連接查詢
條件 右外連接 自動 for 過濾 efault mysql教程 全外連接 fec 更多情況下,我們查詢的數據來源於多張表,所有有必要了解一下MySQL中的連接查詢。 SQL中將連接查詢分成四類:交叉連接,內連接,外連接和自然連接。 數據準備 student表
2 數據庫開發--MySQL下載(windows)
type def password ear inter statement inf 方式 mini Windows:(mysql) 操作: 0.下載安裝mysql www.mysql.org downloads->進入社區communi
Redis 教程(windows)
Redis 教程(windows) Redis 下載 https://github.com/MSOpenTech/redis/releases 下載完成後,解壓到C盤目錄,將資料夾重新命名為redis。 開啟cmd視窗,輸入cd C:\redis 進入redis目錄,執行 redis
MongoDB 壓縮版安裝教程(Windows)
下載MongoDB安裝包 MongoDB 下載 解壓到“D:\Program Files\MongoDB\Server\3.4”目錄下 當前檔案建立配置檔案mongo.conf dbpath=D:\Program Files\MongoDB\Serve
Apollo入門教程(Windows)
簡介 Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。 本地快速部署 下載安裝包https://github.com/no
Python3+mitmproxy安裝使用教程(Windows)
一、安裝 1.1 安裝mitmproxy 直接使用pip安裝即可 pip install mitmproxy pip本質上會一是安裝mitmproxy庫的相關程式碼,二是安裝mitmproxy.exe/mitmdump.exe/mitmdump.exe三個可執行程式。 可執行程式被安裝在$
史上最簡單的 MySQL 教程(十)「列型別 之 日期時間型」
溫馨提示:本系列博文已經同步到 GitHub,地址為「mysql-tutorial」,歡迎感興趣的童鞋Star、Fork,糾錯。 列型別(資料型別) 所謂的列型別,其實就是指資料型別,即對資料進行統一的分類,從系統的角度出發是為了能夠使用統一的方式進
區塊鏈(2)以太坊開發框架Truffle教程(Windows)
概述 上一篇部落格介紹瞭如何搭建一個私有鏈的以太坊開發環境,並部署一個簡單“hello world”智慧合約到區塊鏈上,詳情請前往區塊鏈開發環境搭建。 本文進一步介紹區塊鏈的一個主流開發框架Truffle 環境搭建 使用 Truffle
MySQL最新版Windows安裝教程(轉)
成功 download 註意 目錄 font 刪掉 可以登錄 margin 工具 下載 第一步 去官網下載社區版本(GPL版本) 第二步 不登錄,直接選下方的跳過 下載解壓後 配置系統環境變量 復制解壓後的mysql到C盤或者
MySQL安裝(windows版本)
leg copy name 簡單 p s ucc generate create 下載 1.下載.MySQL http://dev.mysql.com/downloads/mysql/ 下載windows的zip包,解壓後,添加path路徑bin, 系統環境變量
Python Kivy 中文教程:安裝(Windows)
速度 超越 入門 ret 加速 平臺 ads 運行 打包工具 Kivy 是一套用於跨平臺快速應用開發的開源框架,只需編寫一套代碼,便可運行於各大桌面及移動平臺上(包括 Linux, Windows, OS X, Android, iOS, 以及 Raspberry Pi)
Windows上安裝配置SSH教程(7)——幾種方式對比
由於 客戶端 方案 body open ins 下使用 上傳下載 直接 服務端:Windows XP 客戶端:Windows 10 由於Cygwin也可以安裝OpenSSH,所以客戶端其實可以直接使用Cygwin安裝OpenSSH,那麽在Windows下使用SCP(安全拷貝
mysql的下載及安裝(windows)
block 復制粘貼 分享圖片 b2c open 客戶 ast tps get 1:下載MySql 官網下載地址:https://dev.mysql.com/downloads/mysql/ 選擇對應的下載文件。(我電腦是64位,所以這下載的是64位的下載文件)
ARKit For Unity windows開發教程(一)
windows開發 安裝步驟 html vmware 黑蘋果 ios1 。。 土豪 war 現在常常看見網上有一些ARKit教程,本人也是新人小白一枚,如果寫錯了,請見諒指正。。。。QQ:362057738 閑話不多說,如果你想了解ARkit框架,自行度娘去就行,網
伺服器遠端連線/ssh方式連線教程(windows雲主機遠端登入)
windows主機如何遠端登入 1.點本地電腦開始》執行,或者按"window+R"》輸入mstsc點確定 2.在彈出的遠端連線框中輸入相應的IP進行連線 如果伺服器遠端埠不是預設的3389而是其他埠例如13140,請在上面輸入:ip:13140 例如:16
Golang 入門基礎教程(三)Windows下安裝GOlang基礎環境
GO對於Windows平臺的使用者提供了兩種安裝方法,原始碼安裝和安裝程式安裝。 安裝程式安裝 官方下載MSI安裝程式,執行 msi 安裝程式,跟著提示一步一步就可以講Go基礎環境安裝到系統中了。預設安裝路徑為:C:/Go。 原始碼安裝 官方下載原始碼檔案,解壓縮到任意目