目錄
1. 資料庫
2.MySql
3. MySql用戶端工具
3.1 連接配接登入伺服器
3.2 檢視資料庫
3.3 進入資料庫
3.4 檢視資料表
3.5 退出用戶端
4. 遠端登入MySql伺服器
5. 中文問題
6.資料庫管理
6.1建立資料庫
6.2 檢視資料庫
6.3 修改資料庫
6.4 删除資料庫
7. 資料表的管理
7.1 建立表
7.2 檢視表
7.3 修改表
8.SQL
8.1 insert 插入資料
8.2 update 修改資料
8.3 delete 删除資料
8.4 select 查詢資料
9.技術術語
10. 存儲引擎
10.1innodb
10.2 myisam
11.mysql資料類型
11.1 字元串
char
varchar
text
11.2 數字
11.3 日期
datetime
date
time
timestamp
12. default和comment
1. 資料庫
存儲資料的倉庫有:
Oracle MySql
DB2 Sybase
Sql Server Sqlite
No Sql資料庫 Redis
MongoDB
2.MySql
創始人是一個芬蘭人,把MySql公司,以10億美金,賣給Sun公司,一年後,Sun被Oracle收購,MySql被Oracle收購之後,Oracle不重視MySql的開發,收縮了MySql的開發社群,隻允許幾個大的廠商參與開發,還推出收費版MySql
主流開源社群,認為MySql存在閉源風險,開源社群已經不支援MySql,而是轉向支援MariaDB資料庫
MariaDB資料庫
MySql創始人從MySql新開了一個新的分支,起個名叫MariaDB,繼續開發
阿裡向Ma也riaDB貢獻代碼
3. MySql用戶端工具
MySql指令行用戶端有:
Workbench Navicat Sqlyog MySql Front...
3.1 連接配接登入伺服器
c:\program files\mysql5.5\bin
mysql -uroot -p
登入本機伺服器,連接配接3306端口
mysql -uroot -p -hxxx.xx.xx.xxx -P3306
登入指定ip位址的伺服器,連接配接指定的端口
mysql -uroot -p
password:****
3.2 檢視資料庫
show databases;
show schemas;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPR9keJRkTzUFVNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNyMTN0kjM1EDNygDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
3.3 進入資料庫
use mysql;
use test;
3.4 檢視資料表
show tables;
3.5 退出用戶端
quit
\q
4. 遠端登入MySql伺服器
4.1 MySql使用者
MySql使用者用 使用者名@網絡位址 來辨別
例如:
'root'@'localhost'
'root'@'192.168.122.8'
'root'@'192.168.122.%'
'root'@'%'
使用者授權:
可以設定一個使用者通路資料庫的權限,比如允許通路哪些庫,哪些表,哪些字段,允許執行哪些操作
讓root使用者可以在遠端連接配接,需要兩步:
1.建立使用者:
create user 'abc'@'localhost' identified by '123456'
create user 'abc'@'192.168.0.68' identified by ''
create user 'abc'@'192.168.0.%' identified by ''
create user 'abc'@'%' identified by ''
2.對使用者授權:
grant select,insert,update,delete on test.* to 'abc'@'%'
grant create,alter,drop on db1.* to 'abc'@'localhost'
grant all privileges on *.* to 'abc'@'%'
grant select,insert on db1.t1 to 'abc'@'%'
grant select(id, name) on db1.t1 to 'abc'@'%
建立遠端通路的root使用者
建立使用者
create user 'root'@'192.168.31.%'
identified by 'root';
對使用者授權
grant all on *.* to
'root'@'192.168.31.%';
連接配接遠端伺服器(需要關閉防火牆)
mysql -uroot -p -hxxx.xx.xxx.xx -P3306
5. 中文問題
資料庫端存儲的字元編碼,與用戶端字元編碼可能不一緻
GBK
中 d6 d0
UTF-8
中 e4 b8 ad
伺服器要做正确的編碼轉換,必須知道用戶端發送的是什麼編碼
用戶端必須告訴伺服器,自己的編碼是什麼編碼
windows指令行的字元編碼,就是gbk編碼
通知伺服器,用戶端的編碼是gbk
set names gbk;
6.資料庫管理
6.1建立資料庫
create database db1
charset utf8;
6.2 檢視資料庫
show databases;
檢視建庫語句
show create database db1\G
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment
6.3 修改資料庫
隻能修改資料庫的預設字元編碼
alter database db1
charset gbk;
show create database db1\G
6.4 删除資料庫
删除資料庫,所有的表,所有的資料都會被删除,不可恢複
drop database db1;
show databases;
7. 資料表的管理
7.1 建立表
create database db1
charset utf8;
use db1;
-- 建立表
create table tb1(
name varchar(10),
gender char(1)
) engine=innodb charset=utf8;
7.2 檢視表
show tables;
檢視表結構
desc tb1;
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment 檢視建表語句
show create table tb1\G
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment
7.3 修改表
--改表名
rename table tb1 to user;
show tables;
--改表屬性
修改存儲引擎(innodb或myisam)
修改字元編碼(gbk或utf8)
alter table user
engine=myisam charset=gbk;
show create table user\G
--添加字段
first 第一個
after 指定字段之後
alter table user add
id int first;
desc user;
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment alter table user add
email varchar(100) after name;
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment alter table user add(
age int,
height int
);
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment
--改字段名
alter table user
change gender sex char(1);
desc user;
--改字段類型
alter table user
modify sex char(2);
desc user;
--改字段順序
first
after
alter table user
modify age int after name;
desc user;
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment
--删除字段
删除字段,這個字段中所有的資料也會被删除,不可恢複
alter table user
drop column height;
desc user;
删除表
删除表,會删除表中說有的資料,不可恢複
drop table user;
如果存在的話,才執行删除
drop table if exists user;
show tables;
--截斷表 (truncate)
删除表并重新建立,兩步合并成一步執行
truncate table user;
8.SQL
結構化的查詢語言 Structured Query Language
DDL 資料定義語言
建庫、建表...
DML 資料操作語言
增删改
DQL 資料查詢語言
select
8.1 insert 插入資料
use db1;
建立user表
create table user(
id int,
name varchar(10)
)engine=innodb charset=utf8;
通知伺服器,用戶端使用的是什麼編碼
set names gbk;
插入資料
insert into user values(1,'張三');
insert into user values
(2,'李四'),(3,'王五'),(4,'趙六');
8.2 update 修改資料
update user set
id=5,name='錢七'
where id=1;
select * from user;
8.3 delete 删除資料
delete from user
where id>3;
8.4 select 查詢資料
select * from user;
select name from user;
select name,id from user;
9.技術術語
database
schema
mysql中都指的是資料庫
table 表
row
record
一行資料
一條記錄
column
field 列 字段
10. 存儲引擎
innodb (預設)
myisam
memory
10.1innodb
支援事務
支援外鍵
支援行級鎖
有較多修改操作
10.2 myisam
不支援事務
不支援外鍵
隻有表級鎖
大量查詢,很少修改的表,可以使用myisam,查詢效率更高
11.mysql資料類型
11.1 字元串
char
定長字元串
char(20)
定長20個字元
不足20個字元,補空格
超出20個字元,可能出錯或截斷
最大長度,不能超過255個字元
所有該字段的字元串資料,都是連續存儲
varchar
變長字元串
varchar(20)
最長不能超過20個字元
不足20個字元,直接存儲;
超出20個字元,可能出錯或截斷;
存儲的最大位元組量,不能超過65535
gbk編碼,字元數65535/2
utf8編碼,字元數65535/3
位元組量<=255,需要一個額外位元組,表示字元串的位元組長度
位元組量>255,需要兩個額外位元組,表示字元串的位元組長度
char 和 varchar
char類型效率更高,定長字元串盡量使用char類型
text
最大存儲65535位元組的字元串
11.2 數字
unsigned 無符号,隻有正數
zerofill
用0填充配合int(6)格式設定使用
1234 --> 001234
12 --> 000012
1234567 --> 沒有影響
tinyint 1位元組
smallint 2位元組
int 4位元組
bigint 8位元組
float 4位元組
double 8位元組
運算可能會産生不精确的結果
decimal(m,n)
一共m位,小數n位,
位元組量:m+2
表示金額,一般使用decimal
11.3 日期
datetime
年月日時分秒
date
年月日
time
時分秒
timestamp
時間戳
修改一行資料時,第一個timestamp字段,會自動更新成系統目前時間
最大隻能到2031年
資料類型測試
use db1;
drop table if exists tb1;
create table tb1(
a int(6) unsigned zerofill,
b timestamp,
c timestamp
)engine=innodb charset=utf8;
insert into tb1(a) values
(12),(123),(1234567);
select * from tb1;
insert into tb1(a) values(-123);
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment 修改其他字段,第一個timestamp字段會自動更新
update tb1 set a=999
where a=12;
select * from tb1;
![]()
Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment
12. default和comment
default 設定字段的預設值
插入一行資料時,一個字段中,不插入資料,自動填入指定的預設值
comment 在建表語句中,添加注釋資訊,會存儲在伺服器中
create table a(
a int comment '....';
);