溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL學(xué)習(xí)筆記 數(shù)據(jù)類型與操作數(shù)據(jù)表

發(fā)布時(shí)間:2020-07-30 20:53:27 來源:網(wǎng)絡(luò) 閱讀:172 作者:謝育政 欄目:數(shù)據(jù)庫(kù)

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 -12
MEDIUMINT有符號(hào)型:-2^23~2^23 -1,無符號(hào)型0~2^24 -13
INT有符號(hào)型:-2^31~2^31 -1,無符號(hào)型0~2^32 -14
BIGINT有符號(hào)型:-2^63~2^63 -1,無符號(hào)型0~2^64 -18




    【2】浮點(diǎn)型

數(shù)據(jù)類型存儲(chǔ)范圍字節(jié)
FLOAT[(M,D)]-3.402823466E+38~-1.175494351E-38、0和 1.175494351E-38 ~3.402823466E+384
DOUBLE[(M,D)]2.2250738585072014E-308~ 1.7976931348623157E+3088





【注】M是數(shù)字總位數(shù),D是小數(shù)點(diǎn)后面的位數(shù)。如果M和D被省略,根據(jù)硬件允許的限制來保值。單精度浮點(diǎn)數(shù)值精確到大約7位小數(shù)位。E+38 表示10^38    

    【3】日期時(shí)間型

列類型字節(jié)存儲(chǔ)范圍
YEAR1YEAR[(2|4)] 缺省為4位格式,4位格式取值范圍為1901 - 2155,
TIME3-838:59:59~838:59:59
DATE31000-1-1~9999-12-31
DATETIME8日期時(shí)間, 1000-1-1 00:00:00~9999-12-31 23:59:59
TIMESTAMP4時(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
TINYTEXTL+1個(gè)字節(jié),其中L<2^8 (1個(gè)字節(jié)表示最大存儲(chǔ)范圍,下同)
TEXTL+2個(gè)字節(jié),其中L<2^16
MEDIUMTEXTL+3個(gè)字節(jié),其中L<2^24
LONGTEXTL+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    |
+----+----------+------+


向AI問一下細(xì)節(jié)

免責(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)容。

AI