天天看點

MySQL的資料類型和表結構

MySQL的資料類型和表結構

DB,DataBase

-資料庫:依照某種資料模型進行組織并存放到存儲器的資料集合。

DNMS,DataBase Management System

-資料庫管理系統:用來操縱和管理資料庫的大型服務軟體。

DBS,DataBase System

-資料庫系統:即DB+DBMS,指帶有資料庫并整合了資料庫管理軟體的計算機系統。

Oracle(甲骨文):Oracle Database 、 MySQL

Microsoft(微軟):SQL Server 、Access

IBM: DB2

Sybase: Sybase

MySQL主要特點:

-關系型資料庫

-支援Linux/Unix、Windows等多種作業系統

-使用C和C++編寫,可移植性強

-通過API支援Python/Java/Perl/PHP等語言

應用環境:

-LAMP平台,與Apache HTTP Server組合

-LNMP平台,與Nginx組合

關系型資料庫服務軟體(RDBMS):按照規定的結果存儲資料,并且資料(values)之間可以做關聯操作。

例:Oracle MySQL DB2 SQL Server

非關系型資料庫軟體(NOSQL):以鍵值對的形式,一一對應,資料(values)之間沒有關聯。

例:Redis mongdb

一、安裝MySQL

yum -y install perl-Data-Dumper Perl-JSON perl-Time-HiRes #依賴包

tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar

rpm -Uvh mysql-conmmunity-*.rpm #U更新安裝,可替換沖突文檔案。

二、啟動服務

/usr/lib/systemd/system/mysqld.service

systemctl start mysql 

systemctl enable mysql

三、登入

預設的資料庫管理者賬号root,允許從localhost通路。

首次登入密碼在安裝時随機生成,存儲在錯誤日志檔案裡。

grep 'temporary password' /var/log/mysql.log

.....@localhost: matoa>AV<PSDK #随機密碼

mysql -uroot -p"matoa>AV<PSDK"

mysql>

四、修改密碼

0 or LOW 長度

1 or MEDIUM(預設) 長度,數字,小寫/大寫,和特殊字元

2 or STRONG 長度,數字,小寫/大寫和特殊字元,字典檔案

通過用戶端工具mysql連接配接本地伺服器,使用alter user重設定密碼。

mysql>set global validate_password_policy=0; #隻驗證密碼長度

mysql>set global validate_password_length=6; #修改密碼長度為6個字元,預設是8個字元。

mysql>alter user user() identified by "123456"; #修改登入密碼

mysql>quit #退出

mysql -uroot -p123456 #使用新密碼登入

要想實作永久生效需修改配置檔案:

vim /etc/my.cnf

.....

validate_password_policy=0

validate_password_length=6

服務相關檔案

/etc/my.cnf 配置檔案

/var/lib/mysql 資料庫目錄

預設端口 3306

程序名 mysqld

傳輸協定 TCP

程序所有者 mysql

程序所屬組 mysql

使用mysql指令:

mysql -h伺服器ip -u使用者名 -p密碼 [資料庫庫名]

指令類型:

MySQL指令:環境切換,看狀态,退出等控制

SQL指令:資料庫定義/查詢/操縱/授權語句

DDL 資料定義語言(create alter drop)

DML 資料操作語言(insert updata delect)

DCL 資料控制語言(grant revoke)

DTL 資料事物語言(commit rollback savepoint)

基本注意事項:

1.指令不區分大小寫(密碼、變量值除外)

2.每條SQL指令以";"結束或分隔。

3.c\可廢棄目前編寫錯的指令。

指令:

show databases; 檢視所有的庫

use 庫名; 進入到指定庫

show tables; 列出目前庫内的所有表

describe 表名; 檢視表的字段結構

create datebases 庫名; 建立指定庫

select database(); 檢視目前所在的庫

drop databas 庫名; 删除指定的庫

create table 庫名.表名( #建立指定的表

字段名1 字段類型(寬度) 限制條件;

字段名2 字段類型(寬度) 限制條件;

...........

);

drop table 庫名.表名; 删除指定庫下的表

insert into 庫名.表名 values(值清單); #插入表記錄

select * from 庫名.表名; 檢視表的所有記錄 

delete from 庫名.表名; 删除表的所有記錄

常見類型的資訊

數值型:體重、身高、成績、工資、價格等

字元型:姓名、工作機關、位址等

枚舉型:興趣愛好、性别等

日期時間型:出生日期、注冊時間等

1.數值型

類型 大小 範圍(有符号) 範圍(無符号) 用途

TINYINT 1位元組 -128~127 0~255 微小整數

SMALLINT 2位元組 -32768~32767 0~65535 小整數

MEDUIMINT 3位元組 -(2^23)~(2^23)-1 0~(2^24)-1 中整數

INT 4位元組 -(2^31)~(2^31)-1 0~(2^32)-1 大整數

BIGINT 8位元組 -(2^63)~(2^63)-1 0~(2^64)-1 極大整數

FLOAT 4位元組 單精度浮點數

DOUBLE 8位元組 雙精度浮點數

DECIMAL 對DECIMAL(M,D),其中M為有效位數、D為小數位數,M應大于D,占用M+2字元

1.1整數型

使用UNSIGED修飾時,對應的字段隻儲存正數(無符号)。

數值不夠指定寬度時,預設是在左邊填空格補位。

寬度僅是顯示寬度,存資料值的大小有類型決定。

使用關鍵字ZEROFILL時,填0代替空格補位。

數值超出範圍時,報錯。

1.2浮點型

定義格式:float(總寬度,小數位數)

當字段值與類型不比對時,字段值作為0處理。

數值超出範圍時,僅儲存最大/最小值。

浮點型:根據存儲數值的範圍分為 單精度 雙精度

單精度float(n,m)

雙精度double(n,m)

n表示總位數

m表示小數位的位數

2.字元類型

2.1定長:char(字元數)

最大長度255字元。

不夠指定字元數時預設在右邊用空格補齊。

字元數超出時,無法寫入資料。

2.2變長:varchar(字元數)

按資料實際大小配置設定存儲空間。

缺點:每次都要計算,消耗資源。

2.3大文本類型:text/blob

字元數大于655535存儲時使用。

3.日期時間類型

3.1日期時間,DATETIME

占用8個位元組。

範圍:1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999

例:2017-12-31 23:59:59

3.2日期時間,TIMESTAMP

占用4個位元組。

範圍:1970-01-01 00:00:00.000000 ~ 2038-01-19 03:14:07.999999

3.3日期,DATE

範圍:0001-01-01 ~ 9999-12-31

3.4年份,YEAR

占用1個位元組。

範圍:1901~2155

3.5時間,TIME

占用3個位元組。

格式:HH:MM:SS

關于日期時間字段,當未給TIMESTAMP字段指派時,自動以目前系統時間指派,而DATETIME字段預設值為NULL。

YEAR年份的處理,預設用4位數字表示,當隻用2位數字指派時,01~69視為2000~2069,而70~99視為1970~1999。

時間函數:

now() 擷取調用此函數時的系統日期

sysdate() 執行時間動态獲得系統時間

sleep(N) 休眠N秒

curdate() 擷取目前的系統時間

curtime() 擷取目前的系統時刻

month() 擷取指定時間中的月份

date() 擷取指定時間中的日期

time() 擷取指定時間中的時刻

4.枚舉類型

4.1從給定值集合中選擇單個值,ENUM。

格式:enum(值1,值2,值N)

4.2從給定值集合中選擇一個或多個值,SET。

格式:set(值1,值2,值N)

限制條件

Null 允許為空,預設設定

NOT NULL 不允許為空

key 索引類型

Default 設定預設值,預設為NULL

修改表的字段

基本用法:

ALTER TABLE 表名 執行動作;

執行動作:

1.添加新字段

ADD 字段名 類型(寬度) 限制條件;

ADD 字段名 類型(寬度) 限制條件 FIRST; //添加字段到最前面

ADD 字段名 類型(寬度) 限制條件 AFTER 字段名2; //添加字段到字段2後面

2.修改字段類型

MODIFY 字段名 類型(寬度) 限制條件;

3.修改字段名

CHANGE 源字段名 新字段名 類型(寬度) 限制條件;

4.删除指定字段

DROP 字段名;

<code>&gt;kuki varchar(5) not null ;</code>

<code></code>

<code>本文轉自夜流璃雨 51CTO部落格,原文連結:</code>http://blog.51cto.com/13399294/2065672,如需轉載請自行聯系原作者