书接上文,本文主要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 字符集:修改字符集
查看默认的字符集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
MariaDB [(none)]> show global
var
iables 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/ |
+--------------------------+----------------------------------+
|
查看当前数据库支持的字符集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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
|
+----------+-----------------------------+---------------------+--------+
|
查看排序规则
|
1
|
MariaDB [(none)]> show collation;
|
修改排序规则
|
1
|
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运行时修改
静态变量:与配置文件中修改其值,并重启后方能生效
服务器变量从其生效范围来讲,分两类:
全局变量:服务器级别,修改之后仅对新建立的会话有效
会话变量:会话级别,仅对当前会话有效
会话在建立时,会从全局变量中继承各变量
查看服务器变量
|
1
2
3
4
5
6
|
第一种方法
show [{global|session}]
var
iables [like
''
];
第二种方法
select @@{global|session}.
var
iable_name
第三种
select * from information_schema.{global|session}_
var
iables where
var
iables_name=
'some_variables_name'
|
修改变量:
前提:默认只有管理员有权限修改全局变量
|
1
|
set
{global|session}
var
iable_name=
'value'
|
注意:无论是全局还是会话变量级别的动态变量修改,在重启mysql后都会失效,想永久生效,可以定义在配置文件中的相应段[mysqld]
MariaDB中字符大小写
1.SQL关键字及函数不区分大小写
2.数据库、表及视图名称的大小写区分与否取决于底层OS和FS
3.存储过程、存储函数及时间调度器的名字不区分大小写,但触发器区分大小写
4.表别名区分大小写
5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写
本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1393557,如需转载请自行联系原作者