MySQL數據類型及sql模型

MySQL數據類型及sql模型

存儲引擎,也被稱爲表類型:
MyISAM表: 無事務,表鎖
    .frm: 表結構定義文件
    .MYD: 表數據
    .MYI: 索引

InnoDB表:事務,行鎖
    .frm: 表結構
    .ibd: 表空間(數據和索引)
    所有表共享一個表空間文件;
    建議:每表一個獨立的表空間文件;(修改配置文件在[mysqld]項下加入innodb_file_per_table = 1)

MySQL: 
    在默認的mysql數據庫中默認的存儲引擎爲MyISAM
    其他新建的數據庫的存儲引擎取決於默認的存儲引擎設定值    

SHOW ENGINES    
SHOW TABLE STATUS [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]    
    
程序語言連接數據的方式:
    動態SQL:通過函數或方法與數據庫服務建立連接,
    嵌入式SQL:    
    
客戶端組件:mysql、mysqladmin、mysqldump、mysqlimport、mysqlcheck
服務器組件:mysqld, mysqld_safe, mysqld_multi    
    
my.cnf

/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somefile --> ~/.my.cnf

[mysqld]
[mysqld_safe]
[client]
host = 
[mysql]
絕大數配置選項都能在命令行下直接指定
# mysqld --help --verbose    

在指定datadir = /mydata/data後,在指定的目錄下有名爲hostname.err: 錯誤日誌

MySQL啓動失敗的原因:
1、此前服務未關閉;
2、數據初始化失敗;
3、數據目錄位置錯誤;
4、數據目錄權限問題;

DBA: 
    開發DBA:數據庫設計、SQL語句、存儲過程、存儲函數、觸發器
    管理DBA:安裝、升級、備份、恢復、用戶管理、權限管理、監控、性能分析、基準測試
    
數據類型:
    數值型
        精確數值
            int
            decimal
        近似數值
            float
            double
            real
    字符型
        定長:CHAR(#)、BINARY
        變長:VARCHAR(#)、VARBINARY
        text, blob

        ENUM, SET

    日期時間型
        date, time, datetime, timestamp    
        
數據類型:
1、存入的值類型;
2、佔據的存儲空間;
3、定長還變長;
4、如何比較及排序;
5、是否能夠索引;

數據類型總結:
整型:
類型          字節       最小值                          最大值
TINYINT        1         有符號-128,無符號0             有符號127,無符號255
SMALLINT       2         有符號-32768,無符號0           有符號32767,無符號65535
MEDIUMINT      3         有符號-8388608,無符號0         有符號8388607,無符號1677215
INT和INTEGER   4         有符號-2147483648,無符號0      有符號2147483647,無符號4294967295
BIGINT         8         有符號-9223372036854775808,無符號0 有符號9223372036854775807,無符號18446744073709551615

浮點型:
類型          字節       最小值                          最大值
FLOAT          4         
DOUBLE         8
說明:當需要精確到小數點後10位以上,使用DOUBLE類型

定點數:
類型          字節       最小值                          最大值
DEC(M,D)和DECIMAL(M,D)  M+2
說明:有效取值範圍由M和D確定,浮點型存儲的是近似值,定點數型存儲的是字符串

位類型:
類型          字節       最小值                          最大值
BIT(M)         1-8        BIT(1)                          BIT(64)
說明:字節數是M,取值範圍爲1-8

日期時間型:
類型          字節       最小值                          最大值
DATE           4         1000-01-01                      9999-12-31
DATETIME       8         1000-01-01 00:00:00           9999-12-31 23:59:59
TIMESTAMP      4         19700101080001                  2038年某個時刻
TIME           3         -835:59:59                      838:59:59
YEAR           1          1901                             2155

字符串類型:
CHAR系列:
類型          字節      描述
CHAR(M)        M        M爲0-255的整數
VARCHAR(M)     M         M爲0-65535的整數  
說明:VARCHAR長度可變
TEXT類型:
類型          字節            描述
TINYTEXT      0-255           值的長度爲+2個字節
TEXT          0-65535         值的長度爲+2個字節
MEDIUMTEXT    0-167772150     值的長度爲+3個字節
LOANGTEXT     0-4294967295    值的長度爲+4個字節
說明:用於存儲大量字符串
BINARY系列:
類型          字節            描述
BINARY(M)          M              允許長度爲0-M
VARBINARY(M)     M              允許長度爲0-M
說明:存儲二進制數據,VARBINARY長度可變
BLOB系列:
類型          字節       
TINYBLOB      0-255
BLOB          0-2^16    
MEDIUBLOB     0-2^24
LOANGBLOB     0-2^32
說明:存儲大量的二進制數據

mysql> SHOW CHARACTER SET;       查看當前服務器支持的所有字符集
mysql> SHOW COLLATION;             查看當前服務器支持的所有排序規則

修飾符:
AUTO_INCREMENT  自動增長(對於整型)默認從一開始,步長爲一。不能爲空
AUTO_INCREMENT
    整型
    非空
    無符號(只能爲正數)UNSIGNED
    主鍵或惟一鍵
mysql> SELECT LAST_INSERT_ID();顯示上一次自動增長數值


SQL模型
    常用:
    ANSI QUOTES -—A double quote (") is now treated as an identifier quote (`).
                    Strings can only be quoted with a single quote (’)
    IGNORE_SPACE—-This sql_mode allows a space between a built-in function and the open parenthesis
    STRICT_ALL_TABLES—-When this sql_mode is not set, invalid data values are allowed, 
                        usually converted to valid data by using zero values or truncating the value. 
                        When this sql_mode is set, invalid data values are rejected, and an error is thrown.
    STRICT_TRANS_TABLES -- invalid data values in a transactional table are rejected, and an error is thrown
    TRADITIONAL—-Syntax and behavior closely match traditional expectations
    
查詢sql模型:
mysql>show global variables like 'sql_mode';    

MySQL服務器變量
    按作用域,分爲兩類:
        全局變量
            SHOW GLOBAL VARIABLES
        會話變量
            SHOW [SESSION] VARIABLES
    
    按生效時間,分爲兩類:
        動態:可即時修改
        靜態:
            寫在配置文件中
            通過參數傳遞給mysqld(或mysqld_safe)進程

    動態調整參數的生效方式:
        全局:對當前會話無效,只對新建立會話有效;
        會話:即時生效,但只對當前會話有效;


    服務器變量:@@變量名
        顯示:SELECT  @@global.sql_mode
        設定:SET GLOBAL|SESSION 變量名='value'


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章