mysql資料類型 和 sql_mode

來源:互聯網
上載者:User

標籤:mysql資料類型 sql_mode




#####################################################################

開發DBA:資料庫設計(E-R關係圖)、SQL開發、內建函數、儲存常式(預存程序和儲存函數)、觸發器、事件調度器(event scheduler)

管理DBA:安裝、升級,備份、恢複,使用者管理、許可權管理,監控、分析、基準測試,語句最佳化(SQL語句),資料字典,按需要設定管理員(伺服器變數:MyISAM, InnoDB, 緩衝, 日誌)


SQL語言群組成部分:

DDL: 

DML: 

完整性定義語言:DDL的一部分功能

主鍵、外鍵、惟一鍵、條件、非空、事務

視圖定義:虛表,儲存下來的SELECT語句

事務控制:

嵌入式SQL和動態SQL:

DCL:授權


資料類型的功用:

1、儲存的實值型別;

2、佔據的礁儲存空間;

3、定長,變長;

4、如何被索引及排序;

5、是否能夠被索引;


資料字典:系統編目(system catalog)

儲存資料庫伺服器上的中繼資料


中繼資料:

關係的名字

每個關係的各欄位的名字

各欄位的資料類型和長度

約束

每個關係上的視圖的名字及視圖的定義


授權使用者的名字

使用者的授權和帳戶資訊


統計類的資料:

每個關係欄位的個數;

每個關係中行數;

每個關係的儲存方法;


儲存中繼資料的資料庫:

information_schema

mysql

performance_shcema


資料類型:

字元型

char

varchar

binary

varbinary

text

blob

數值型

精確數值型

整型

十進位資料:decimal

近似數值型

單精確度浮點型

雙精確度浮點型

日期時間型

日期型

時間型

日期時間型

時間戳記

布爾型


內建類型

ENUM, SET


數值型:

TINYINT

SMALLINT

MEDIUMINT

INT

BIGINT

DECIMAL

FLOAT

DOUBAL


BIT


字元型:

CHAR

VARCHAR

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT


BINARY

VARBINARY

TINYBLOB

BLOB

MEDIUMBLOB

LONGBLOB


ENUM

SET


日期時間型:

DATE

TIME

DATETIME

TIMESTAMP

YEAR


CHAR、VARCHAR和TEXT幾種字元型常用的屬性修飾符:

NOT NULL:非空約束

NULL:允許為空白

DEFAULT ‘string‘:預設值,不適用於TEXT類型

CHARACTER SET ‘字元集‘

mysql> SHOW VARIABLES LIKE ‘%char%‘;

mysql> SHOW CHARACTER SET

COLLATION ‘規則‘: 定序

mysql> SHOW COLLATION;


BINARY、VARBINARY和BLOB幾種字元型常用的屬性修飾符:

NOT NULL

NULL

DEFAULT: 不適用於BLOB


整型的常用屬性修飾符:

AUTO_INCREMENT:自動成長

前提:非空,且惟一;支援索引,非負值;

UNSIGNED:無符號

NULL

NOT NULL

DEFAULT 


浮點型常用修飾符:

NOT NULL

NULL

DEFAULT

UNSIGNED


日期時間型的修飾符:

NOT NULL

NULL

DEFAULT


ENUM和SET的修飾符:

NOT NULL

NULL

DEFAULT ‘‘


MySQL SQL_MODE: SQL模式

TRADITIONAL, STRICT_TRANS_TABLES, or STRICT_ALL_TABLES



設定伺服器變數的值:(僅用於支援動態變數)

支援修改的伺服器變數:

動態變數:可以MySQL運行時修改

靜態變數:於設定檔中修改其值,並重啟後方能生效;


伺服器變數從其生效範圍來講,有兩類:

全域變數:伺服器層級,修改之後僅對建立立的會話有效;

會話變數:會話層級,僅對當前會話有效;

會話建立時,從全域繼承各變數;


查看伺服器變數:

mysql> SHOW [{GLOBAL|SESSION}] VARIABLES [LIKE ‘‘];mysql> SELECT @@{GLOBAL|SESSION}.VARILABLE_NAME;mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME=‘SOME_VARIABLE_NAME‘;mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME=‘SOME_VARIABLE_NAME‘;


修改變數

前提:預設僅管理員有許可權修改全域變數

mysql> SET {GLOBAL|SESSION} VARIABLE_NAME=‘VALUE‘;

注意:無論是全域還是會話層級的動態變數修改,在重啟mysqld後都會失效;想永久有效,可定義在設定檔中的相應段中[mysqld];




建立資料庫

mysql> CREATE DATABASE mydb;mysql> USE mydb;

建立表:整形 非空 唯一 非負 AUTO_INCREMENT

UNSIGNED 無符號 就是不支援負數

mysql> CREATE TABLE t1 (ID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,Name CHAR(30));mysql> DESC t1;+-------+------------------+------+-----+---------+----------------+| Field | Type             | Null | Key | Default | Extra          |+-------+------------------+------+-----+---------+----------------+| ID    | int(10) unsigned | NO   | PRI | NULL    | auto_increment || Name  | char(30)         | YES  |     | NULL    |                |+-------+------------------+------+-----+---------+----------------+mysql> SELECT * FROM t1;mysql> insert into t1 (Name) VALUES (‘TOM‘),(‘Jerry‘);mysql> SELECT * FROM t1;+----+-------+| ID | Name  |+----+-------+|  1 | TOM   ||  2 | Jerry |+----+-------+2 rows in set (0.00 sec)

顯示最後一次修改記錄

mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                1 |+------------------+1 row in set (0.02 sec)mysql> insert into t1 (Name) VALUES (‘lily‘),(‘haha‘);mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                3 |+------------------+

清空表

mysql> DELETE FROM t1;mysql> insert into t1 (Name) VALUES (‘lucy‘);Query OK, 1 row affected (0.11 sec)mysql> SELECT * FROM t1;+----+------+| ID | Name |+----+------+|  5 | lucy |+----+------+mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                5 |+------------------+1 row in set (0.00 sec)


LAST_INSERT_ID()只記錄上次的第一個插入的資料,即使delete清空表記錄也一樣存在

##########################################################

TRUNCATE 清空


mysql> HELP TRUNCATEmysql> TRUNCATE t1;Query OK, 0 rows affected (0.06 sec)mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                5 |+------------------+1 row in set (0.00 sec)mysql> SELECT * FROM t1;Empty set (0.00 sec)mysql> insert into t1 (Name) VALUES (‘lucy‘);Query OK, 1 row affected (0.07 sec)mysql> SELECT * FROM t1;+----+------+| ID | Name |+----+------+|  1 | lucy |+----+------+1 row in set (0.00 sec)mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                1 |+------------------+1 row in set (0.00 sec)


########################################################


超出字元長度,預設會被截取


mysql> create table t2 (name CHAR (3));Query OK, 0 rows affected (0.14 sec)mysql> INSERT INTO t2 VALUES (‘jerry‘);Query OK, 1 row affected, 1 warning (0.10 sec)mysql> SHOW WARNINGS;+---------+------+-------------------------------------------+| Level   | Code | Message                                   |+---------+------+-------------------------------------------+| Warning | 1265 | Data truncated for column ‘name‘ at row 1 |+---------+------+-------------------------------------------+mysql> SELECT * from t2;+------+| name |+------+| jer  |+------+


###############################################

mysql> SHOW GLOBAL VARIABLES LIKE ‘sql_mode‘;+---------------+-------+| Variable_name | Value |+---------------+-------+| sql_mode      |       |+---------------+-------+










mysql資料類型 和 sql_mode

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.