天天看點

Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment

目錄

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;

Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment

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;

Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment

--改字段類型

alter table user

modify sex char(2);

desc user;

Mysql - 011. 資料庫2.MySql3. MySql用戶端工具4. 遠端登入MySql伺服器5. 中文問題6.資料庫管理7. 資料表的管理8.SQL9.技術術語10. 存儲引擎11.mysql資料類型12. default和comment

--改字段順序

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 '....';

);