书接上文,本文主要MariaDB的数据类型和数据库DDL语言的使用
数据类型的功用:
1.存储的值的类型
2.占据的存储空间大小
3.定长,变长
4.如何被索引及排序
5.是否能够能够被索引
数据字典:依赖于系统编目(花名册):system catalog,里面保存的为数据库服务器上的元数据
元数据:
关系的名字
每个关系的各字段的名字
各字段的数据类型和长度
约束
每个关系上的视图的名字及视图的定义
授权用户的名字
用户的授权和账户信息
统计类的数据
每个关系字段的个数
每个关系中行数
每个关系的存储方法
保存元数据的数据库
information_schema
mysql
performance_schema
数据类型的分类
字符型
数值型
精确数值型
整型:
十进制数据:
近似数值型
单精度浮点型
双精度浮点型
日期时间型
日期型
时间型
日期时间型
时间戳
year类型
布尔型
内建类型
enum(枚举)
set(集合)
数值型分为:
TINYINT
SMALLINT
MENDIUMINT
INT
BIGINT
DECIMAL
FLOAT
DOUBAL
字符型分为:
CHAR
VARCHAR
TINYTEXT
TEXT
MENDIUMTEXT
LONGTEXT
BINARY
VARBINARY
TINYBLOB
BLOB
MENDIUMBLOB
LONGBLOB
日期时间型
DATE
TIME
DATETIME
TIMESTAMP
YEAR
内建类型
ENUM
SET
字符型(char、varchar和text)常用的属性修饰符
NOT NULL:非空约束
NULL:允许为空
DEFAULT ‘string’:默认值,不适用于text类型
character set 字符集:修改字符集
查看默认的字符集
MariaDB [(none)]> show global variables like ‘%char%‘; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+
查看当前数据库支持的字符集
MariaDB [(none)]> show character set; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +----------+-----------------------------+---------------------+--------+
查看排序规则
MariaDB [(none)]> show collation;
修改排序规则
MariaDB [(none)]> collation ‘eucjpms_bin‘
binary,varbinary和blob字符常用的属性修饰符
NULL
NOT NULL
DEFAULT 不适用于blob
整型常用的属性修饰符
AUTO_INCERMENT:自动增长
前提:非空,且唯一,支持索引
LEST_INSERT_ID():可以查看上次增长的数值,当插入多行时,至记录第一行
UNSIGNED:无符号
NULL
NOT NULL
DEFAULT
TRUNCATE用来清空表中数据
浮点型常用的修饰符
NULL
NOT NULL
UNSIGEND
DEDAULT
使用g,f来定义总共有多少个数字和小数点后面有多少数字
日期时间型常用的修饰符
NULL
NOT NULL
DEFAULT
ENUM和SET常用的修饰符
NULL
NOT NULL
DEFAULT ‘‘
MariaDB有内置的SQL模型SQL_MODE:用来定义字符超出的操作和模仿别的数据库的类型,通过修改全局变量来修改
常用的模式有:
TRADITIONAL 使用传统模式
STRICT_TRANS_TABLES 仅对支持事务的表使用严格模式
STRICT_ALL_TABLES 对所有表使用严格模式
设定服务器变量的值:通常仅用于支持动态的变量
支持修改的服务器变量
动态变量:可以在mysql运行时修改
静态变量:与配置文件中修改其值,并重启后方能生效
服务器变量从其生效范围来讲,分两类:
全局变量:服务器级别,修改之后仅对新建立的会话有效
会话变量:会话级别,仅对当前会话有效
会话在建立时,会从全局变量中继承各变量
查看服务器变量
第一种方法 show [{global|session}] variables [like ‘‘]; 第二种方法 select @@{global|session}.variable_name 第三种 select * from information_schema.{global|session}_variables where variables_name=‘some_variables_name‘
修改变量:
前提:默认只有管理员有权限修改全局变量
set {global|session} variable_name=‘value‘
注意:无论是全局还是会话变量级别的动态变量修改,在重启mysql后都会失效,想永久生效,可以定义在配置文件中的相应段[mysqld]
MariaDB中字符大小写
1.SQL关键字及函数不区分大小写
2.数据库、表及视图名称的大小写区分与否取决于底层OS和FS
3.存储过程、存储函数及时间调度器的名字不区分大小写,但触发器区分大小写
4.表别名区分大小写
5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写
本文出自 “IT民工--小枫” 博客,请务必保留此出处http://wangfeng7399.blog.51cto.com/3518031/1393557