MySQL学习简明文档
1.操作命令
查看当前MySQL中有哪几个数据库:show databases;
创建一个数据库:create database dbName;
如果防止数据库重名:create database if existsdbName;
删除一个数据库:drop database dbName;
如果防止删除不存在的数据库:drop database ifexists dbName;
进入一个数据库:use dbName;
查看当前这个数据库中有哪几个表:show tables;
查看某一个表的表结构:desc tablename;
2. 数据类型:
(1)数值型:
A. 整形:
类型 |
大小 |
范围(有符号) |
范围(无符号) |
tinyInt |
1个字节 |
-28---28-1 |
0----28 |
smallInt |
2个字节 |
-216---216-1 |
0----216 |
mediumInt |
3个字节 |
-224----224-1 |
0----224 |
int |
4个字节 |
-232-----232-1 |
0----232 |
bigInt |
8个字节 |
-264-----264-1 |
0-----264 |
在MySQL中整形类型后可以跟一个整数,这个整数时显示宽度指示器,当从数据库中检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为int(6),就可以保证所包含的数字少于6位的时候自动在前面补0。
对于应用无符号整形时,在字段约束中加unsigned,这时所用的就是无符号整形。
如果加入zerofill约束,当位数不够时,默认以0补充。所以如果加了这个约束,就必须添加正整数的值。
B.浮点型:
类型 |
大小 |
范围 |
范围 |
用途 |
float |
4个字节 |
|
|
单精度浮点值 |
Double或real Double precision |
8个字节 |
|
|
双精度 浮点数值 |
Decimal或 Dec numeric |
decimal(m,d) 如果M>D为 M+2,否则为D+2 |
|
|
小数值 |
当定义浮点型值时,也可以用附加参数:一个显示宽度指示器和一个小数点指示器。例如,Float(5,2)规定显示的值不会超过5位数字,小数点后带有2位数。
如果小数点后面的数字个数超出了允许的数目的值,系统会自动将它四舍五入为最接近它的值,然后插入。如果插入的值长度超过了设置,则会报错。例如,如果插入1234,789,则小数点后会保留2位,单是总长度超过,会报错。小数点后不足的位数补0。
注意:如果前一个值小于后一个值则会报错,所以,M必须大于D;
Decimal 数据类型用于要求非常高的精确度的计算中。这种类型允许指定数值的精确度和计数法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的个数。例如,decimal(5,2)规定了存储的值将不会超过5位数字,并且小数点后面有2位数字。
注意:MySQL在内部把数据存储为字符串,更精确地保留它们的值。
忽略decimal数据类型的精确度和技术方法修饰符将会使MySQL把所有标识为这个类型的字段的精度默认为10,计算方法默认为0。
Unsigned和zerofill修饰符也可应用在float,double,decimal类型。
C. 字符串类型
MySQL字符串类型 |
||
类型 |
大小 |
用途 |
char |
0~28-1字节 |
定长字符串 |
varchar |
? |
变长字符串 |
tinyBlob |
0~28-1字节 |
不超过255个字符的二进制字符串 |
tinyText |
0~28-1字节 |
短文本字符串 |
Blob |
0~216-1字节 |
二进制形式长文本数据 |
Text |
0~216-1字节 |
长文本数据 |
MediumBlob |
0~224-1字节 |
二进制形式的中等长度文本数据 |
MediumText |
0~224-1字节 |
中等长度文本数据 |
LongBlob |
0~232-1字节 |
二进制形式的极大文本数据 |
LongText |
0~232-1字节 |
极大文本数据 |
(1)Char和Varchar类型:
Char 类型:用于定长字符串,必须在其后的括号中给出长度参数。例如,char(5):该字段长度为5个字符,如果不足5个则用空格从后面补充;如果超出5个则会报错。这个长度参数的大小,最大是255。
Varchar类型:可变长字符串,也必须在其后的括号中给出长度参数。
Char和varcha类型的区别是:char类型把这个值作为准确值;varchar把它视为最大值,并且只使用了存储字符串的实际上需要的字节数(增加一个额外的字节记录长度)。如果存储的值超过了长度参数的值,会报错。
(2) Text和Blob类型:
Blob类型区分大小写;Text类型是不区分大小写。
D. 日期和时间类型:
MySQL日期类型 |
|||||
类型 |
大小 |
范围 |
格式 |
用途 |
|
Date |
3字节 |
1000-01-01~ 9999-12-31 |
YYYY-MM-DD |
日期型 |
|
Time |
3字节 |
|
HH:MM:SS |
|
|
DateTime |
8字节 |
1000-01-01 00:00:00~ 9999-12-31 23:59:59
|
YYYY-MM-DD HH:MM:SS |
|
|
Year |
1字节 |
1901~2155 |
YYYY |
|
|
TimeStamp |
8字节 |
1970-01-01 00:00:00~ 2037年 |
YYYYMMDDHHMMSS |
|
|
E. 枚举类型:
Enum类型允许从集合中选择单个值时,通常用于互斥的数据值。
用法如下:
Create table test(
Id int(5) primary key,
Gender Enum('M',F')
);
Insert into test values(1,'M');
Insert into test values(1,'F');
Set类型:不同于Enum的是它允许从列表中选择多个值。
Create table test(
Id int(5) primary key,
Gender Set('A' , 'B' ,'C', 'D', 'E' , 'F')
);
Insert into test values(1,'A,B,C');
Insert into test values(1,'F');
Insert into test values(1,'A, E');
3. 字段约束:
not null 和 null
表示这个字段是否可以为空,默认是可以为空;
default
表示这个字段的默认值是什么,如,default ‘hh’;
如果没有指定这个字段默认值是多少,则会根据情况:
如果这个字段可以为空,则会赋值为null;
如果这个字段不可以为空,则会根据情况赋值默认值:
(1) 如果这个字段是数值类型,则会赋值为0;
(2) 如果这个字段是字符类型,则会赋值为空字符串;
(3) 如果这个字段是时间类型,则会赋值为当前的日期和时间
(4) 如果这个字段是枚举类型,则会赋值为枚举组的第一条
Auto_increment
只适用于int 类型,表示这个字段会根据插入记录的条数自动递增。
这对于主键是非常有用的,如果主键设为Auto_increment,则在插入数
据时,可以省略主键的插入值。
Primary key
设置主键。不能为空且其值表中唯一。
Eg1:
create table tableName(
Id int(10) Auto_increment primary key,
Name varchar(50) not null
);
Eg2:
create table tableName(
Id int(10) Auto_increment,
Host int(10) Auto_increment,
Name varchar(50) not null,
primary key(Id,Host)
);
对于eg1,这种格式的主键设置方式,只能设置这一个字段为主键;
对于eg2, 这种格式的主键设置方式,可以设置多个字段为联合主键;