Mysql01伺服器概述、資料庫伺服器、建立資料庫、建立資料表
Mysql資料庫 day01
資料庫
儲存資料
MySQL、oracle、sql server、db2、sqlite…
關係型資料庫
資料以表格形式存放
No sql
Mysql
開源免費資料庫
在網際網路領域,是最常用的資料庫
被 sun 以10億美金收購,一年後,sun被oracle收購
Mysql被oracle收購後,存在閉源風險
各大開源社群,已經不再支援mysql
Mysql的創始人,繼續開發一個mysql 的分支版本,mariadb
開源社群都轉向支援mariadb的開發
阿里投資maradb 3000萬
阿里把自己開發的資料庫新功能,免費貢獻給 mariadb
下載安裝mysql
Mysql有收費版本,也有免費開源的社群版本
下載開源社群版
安裝 mysql或mariadb都可以
Mysql使用
Mysql資料庫服務,是一個後臺程序
使用客戶端來連線mysql
Mysql命令列客戶端:mysql
mysql -uroot -p –h192.168.121.90 –P3306(這是登入別人的伺服器時用的)
Mysql官方視窗客戶端:workbench
Navicat、sqlyog、mysqlfront…
Mysql命令列客戶端
連線、登入mysql伺服器
mysql –uroot –p 登入本機伺服器
退出客戶端,斷開與伺服器的連線
exit
\q
顯示資料庫列表
show databases;
show schemas;
schema -就是資料庫
進入資料庫
use test;
檢視資料庫中資料表的列表
show tables;
mysql使用者
mysql使用者由“使用者名稱+ip地址”來標識
建立使用者
create user ‘root’@’192.168.121.%’ identified by ‘1234’
對使用者授權
grant all privileges on . to ‘root’@’192.168.121.%’
使用者表 use mysql; 進入mysql庫 select * from user; 查系統使用者表資料 select * from user\G 縱向檢視結果 刪除使用者 drop user ‘使用者名稱’@’主機地址’
庫管理
建立庫
create database 庫名 charset=utf8;
檢視庫
show databases;
show schemas;
use db1
修改庫
對資料庫只能修改它的預設字元編碼
alter database db1 charset gbk;
.
刪除庫
刪除資料庫,會把內容所有資料表全部刪除,且不可恢復
drop database db1;
資料表
建立表
create table tb1(
id int,
name varchar(20),
money decimal(8,2)
) engine=innodb charset=utf8;
查看錶
show tables;
desc tb1;
show create table tb1\G
刪除表
刪除表不可恢復(三思而後行)
drop table tb1;
截斷表(重建表)
先刪除,再重建,資料不可恢復
truncate table tb1;
修改表
修改表名rename table A to B
rename table tb1 to tb2;
修改表的引數(引擎、編碼)
alter table tb2
engine=myisam charset=gbk;
新增欄位
first - 加到最前面
after - 指定加到哪個欄位之後
alter table tb2
add gender varchar(4) first;
alter table tb2
add height int after name;
alter table tb2 add(
weight int,
tel varchar(20)
);
desc tb2;
show create table tb2\G
修改欄位名
alter table tb2
change gender sex varchar(4);(注意change與modify之間的區別)
修改欄位型別
alter table tb2
modify height decimal(3,2);
修改欄位位置
alter table tb2
modify sex varchar(4) after name;
alter table tb2
modify name varchar(20) first;
刪除欄位
整列資料會被刪除,不可恢復
alter table tb2
drop column weight;(刪除weight列)
欄位位元組量總合,不超過65535個位元組
create table tb3(
id int, – 4位元組
price double, – 8位元組
name varchar(65520) – 65520+2
)charset=latin1;
create table tb4(
id int not null, -- 4位元組
price double not null, -- 8位元組
name varchar(65521) not null -- 65521+2
)charset=latin1;
(注意:如果有空字元的話也算一個位元組)
create table tb5(
id int not null, – 4位元組
price double not null, – 8位元組
s tinyint not null, – 1位元組
name varchar(21840) not null – 21840*3+2
) charset=utf8;
varchar型別
如果長度小於等於255,前面有一個位元組,表示位元組長度
如果長度大於255,前面有兩個位元組,表示位元組長度
如果表中欄位,只要有允許 null 值的欄位,那麼需要有額外的一個位元組來表示
sql
結構化的查詢語言
用來訪問資料庫
DDL(database definition language) - 資料定義語言,建庫建表
DML(database manipulation language) - 資料操作語言,增刪改
DQL (data query language) - 資料查詢語言,select
Insert插入資料
insert into 表 values(值1, 值2…)
update修改資料
update 表 set 欄位1=值1, 欄位2=值2, 欄位3=值3 where ……
delete刪除
delete from 表 where ……
select查詢
select * from 表
select 欄位1, 欄位2, 欄位3 from 表
資料庫儲存引擎
innodb
預設推薦引擎
支援事務
支援外來鍵
提供行級鎖
表文件:
tb1.frm 儲存表結構
tb1.ibd 儲存資料、索引
myisam
不支援事務
不支援外來鍵
資料訪問效率更高
只提供表級鎖
表文件:
tb2.frm 儲存表結構
tb2.MYD 儲存資料
tb2.MYI 儲存索引資料
memory 記憶體表
…