您好,登錄后才能下訂單哦!
1.數(shù)據(jù)類型
【1】整型:
數(shù)據(jù)類型 | 存儲(chǔ)范圍 | 字節(jié) | |
TINYINT | 有符號(hào)型:-128~127(-2^7~2^7 -1),無符號(hào)型0~255(0~2^8 -1) | 1 | |
SMALLINT | 有符號(hào)型:-2^15~2^15 -1,無符號(hào)型0~2^16 -1 | 2 | |
MEDIUMINT | 有符號(hào)型:-2^23~2^23 -1,無符號(hào)型0~2^24 -1 | 3 | |
INT | 有符號(hào)型:-2^31~2^31 -1,無符號(hào)型0~2^32 -1 | 4 | |
BIGINT | 有符號(hào)型:-2^63~2^63 -1,無符號(hào)型0~2^64 -1 | 8 | |
【2】浮點(diǎn)型
數(shù)據(jù)類型 | 存儲(chǔ)范圍 | 字節(jié) | |
FLOAT[(M,D)] | -3.402823466E+38~-1.175494351E-38、0和 1.175494351E-38 ~3.402823466E+38 | 4 | |
DOUBLE[(M,D)] | 2.2250738585072014E-308~ 1.7976931348623157E+308 | 8 | |
【注】M是數(shù)字總位數(shù),D是小數(shù)點(diǎn)后面的位數(shù)。如果M和D被省略,根據(jù)硬件允許的限制來保值。單精度浮點(diǎn)數(shù)值精確到大約7位小數(shù)位。E+38 表示10^38
【3】日期時(shí)間型
列類型 | 字節(jié) | 存儲(chǔ)范圍 | |
YEAR | 1 | YEAR[(2|4)] 缺省為4位格式,4位格式取值范圍為1901 - 2155, | |
TIME | 3 | -838:59:59~838:59:59 | |
DATE | 3 | 1000-1-1~9999-12-31 | |
DATETIME | 8 | 日期時(shí)間, 1000-1-1 00:00:00~9999-12-31 23:59:59 | |
TIMESTAMP | 4 | 時(shí)間戳,1970-1-1 00:00~2037年的某個(gè)時(shí)刻 | |
【注】實(shí)際開發(fā)中“日期時(shí)間型”用得比較少,因?yàn)榭紤]到跨時(shí)區(qū)的問題,一般會(huì)用數(shù)字類型取代
MySQL本身Y2K安全的,但是呈交給MySQL的輸入值可能不是。一個(gè)包含2位年份值的任何輸入是由二義性的,因?yàn)槭兰o(jì)是未知的。這樣的值必須被解釋成4位形式,因?yàn)镸ySQL內(nèi)部使用4位存儲(chǔ)年份。
對(duì)于DATETIME, DATE, TIMESTAMP和YEAR類型,MySQL使用下列規(guī)則的解釋二義性的年份值:
-在范圍00-69的年值被變換到2000-2069。
-在范圍70-99的年值被變換到1970-1999。
記得這些規(guī)則僅僅提供對(duì)于你數(shù)據(jù)的含義的合理猜測(cè)。如果MySQL使用的啟發(fā)規(guī)則不產(chǎn)生正確的值,你應(yīng)該提供無二義的包含4位年值的輸入。
【4】字符型
列類型 | 存儲(chǔ)需求 | |
CHAR(M) | (定長(zhǎng),不足用空格自動(dòng)補(bǔ)全)M個(gè)字節(jié),0<=M<=255 | |
VARCHAR(M) | (變長(zhǎng),輸入多少就是多少)L+1個(gè)字節(jié),其中L<=M,0<=M<=65535 | |
TINYTEXT | L+1個(gè)字節(jié),其中L<2^8 (1個(gè)字節(jié)表示最大存儲(chǔ)范圍,下同) | |
TEXT | L+2個(gè)字節(jié),其中L<2^16 | |
MEDIUMTEXT | L+3個(gè)字節(jié),其中L<2^24 | |
LONGTEXT | L+4個(gè)字節(jié),其中L<2^32 | |
ENUM('value1','value2',…) | (最終選擇其中的一個(gè)value)1或2個(gè)字節(jié),取決于枚舉值的個(gè)數(shù)(最多65535個(gè)) | |
SET ('value1','value2',…) | (集合,可在其中做任意的排列組合)1、2、3、4或者8個(gè)字節(jié),取決于set成員的 | |
CHAR(M) :定長(zhǎng)類型,定義數(shù)據(jù)為5個(gè)字節(jié),當(dāng)需要存儲(chǔ)abc3個(gè)字節(jié)的時(shí)候,會(huì)以2個(gè)空格的形式補(bǔ)滿5個(gè)字節(jié)。
VARCHAR(M) :變長(zhǎng)類型,輸入abc3個(gè)字節(jié)就存儲(chǔ)3個(gè)字節(jié),不會(huì)存儲(chǔ)多余的數(shù)據(jù)。
2.數(shù)據(jù)表操作
【1】概述
數(shù)據(jù)表(或稱表)是數(shù)據(jù)庫(kù)最重要的組成部分之一,是其他對(duì)象的基礎(chǔ)。
【2】命令
USE 打開數(shù)據(jù)庫(kù):
mysql> USE <數(shù)據(jù)庫(kù)名稱>;
顯示當(dāng)前用戶所打開的數(shù)據(jù)庫(kù):
mysql> SELETE DATABASES;
創(chuàng)建數(shù)據(jù)庫(kù)表
CREATE TABLE [IF NOT EXISTS] table_name (column_name列名稱 data_type數(shù)據(jù)類型,....) 例:創(chuàng)建數(shù)據(jù)庫(kù)表:列名稱為username和age和salary mysql> USE t1; mysql> CREATE TABLE IF NOT EXISTS t1( -> username VARCHAR(20), -> age TINYINT UNSIGNED, -> salary FLOAT(8,2) UNSIGNED -> );
查看數(shù)據(jù)表列表
mysql> SHOW TABLES;
查看其他數(shù)據(jù)庫(kù)的數(shù)據(jù)表列表,例查看mysql數(shù)據(jù)庫(kù)
mysql> SHOW TABLES FROM mysql;
查看數(shù)據(jù)表的結(jié)構(gòu)
mysql> SHOW TABLES FROM mysql;
3.MySQL記錄的插入與查找
記錄插入:
INSERT [INTO] tbl_name [(col_name,...0] VALUES (val,...)
例:
mysql> INSERT t1 VALUES('Tom',25,7863.25);
記錄查找:
SELECT expr,... FROM tbl_name
例:
SELECT * FROM t1;
4.MySQL空值與非空
*** NULL ,字段值可以為空
*** NOT NULL ,字段值禁止為空
例:
mysql> USE t2; mysql> CREATE TABLE IF NOT EXISTS tb2( -> username VARCHAR(20) NOT NULL, -> age TINYINT UNSIGNED NULL, -> salary FLOAT(8,2) UNSIGNED -> );
5.MySQL主鍵約束
*** 主鍵約束
*** 每張數(shù)據(jù)表只能存在一個(gè)主鍵
*** 主鍵保證記錄的唯一性
*** 主鍵自動(dòng)為NOT NULL
6.MySQL自動(dòng)編號(hào) AUTO_INCREMENT
*** 自動(dòng)編號(hào),且必須與主鍵組合使用
*** 默認(rèn)情況下,起始值為1,每次的增量為1
例,創(chuàng)建自動(dòng)編號(hào)表:
mysql> CREATE TABLE tb3( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(30) NOT NULL -> ); mysql> SHOW COLUMNS FROM tb3; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | | NULL | | +----------+----------------------+------+-----+---------+----------------+
例,插入記錄,查看表:
mysql> INSERT tb3(username) VALUES('Tom') mysql> INSERT tb3(username) VALUES('John') mysql> INSERT tb3(username) VALUES('Rose') mysql> INSERT tb3(username) VALUES('Dimitar') mysql> SELECT * FROM tb3; +----+----------+ | id | username | +----+----------+ | 1 | Tom | | 2 | John | | 3 | Rose | | 4 | Dimitar | +----+----------+
7.MySQL唯一約束 UNIQUE KEY
*** 唯一約束
*** 唯一約束可以保證記錄的唯一性
*** 唯一約束的字段可以為空值(NULL)
*** 每張數(shù)據(jù)表可以存在多個(gè)唯一約束
例:
創(chuàng)建數(shù)據(jù)表tb4:
mysql> CREATE TABLE tb4( -> id SMALLINT AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(20) NOT NULL UNIQUE KEY, -> age TINYINT UNSIGNED -> ); mysql> SHOW COLUMNS FROM tb4; +----------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+----------------+ | id | smallint(6) | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | UNI | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | +----------+---------------------+------+-----+---------+----------------+
插入記錄:
mysql> INSERT tb4(username,age) VALUES('Tom',25); Query OK, 1 row affected (0.00 sec)
再插入一條username同時(shí)‘Tom'的記錄,提示重復(fù):
mysql> INSERT tb4(username,age) VALUES('Tom',23); ERROR 1062 (23000): Duplicate entry 'Tom' for key 'username'
8.MySQL默認(rèn)約束
*** 默認(rèn)值
*** 當(dāng)插入記錄時(shí),如果沒有明確為字段賦值,則自動(dòng)賦予默認(rèn)值
例:
創(chuàng)建數(shù)據(jù)表tb6,設(shè)置sex列的默認(rèn)值為3:
mysql> CREATE TABLE tb6( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(20) NOT NULL UNIQUE KEY, -> sex ENUM('1','2','3') DEFAULT '3' -> ); mysql> SHOW COLUMNS FROM tb6; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | UNI | NULL | | | sex | enum('1','2','3') | YES | | 3 | | +----------+----------------------+------+-----+---------+----------------+
插入記錄,不給sex賦值:
mysql> INSERT tb6(username) VALUES('Tom'); mysql> INSERT tb6(username) VALUES('John'); mysql> INSERT tb6(username) VALUES('Mimiter');
查看數(shù)據(jù)表,sex自動(dòng)為默認(rèn)值3:
mysql> SELECT * FROM tb6; +----+----------+------+ | id | username | sex | +----+----------+------+ | 1 | Tom | 3 | | 2 | John | 3 | | 3 | Mimiter | 3 | +----+----------+------+
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。