MySQL学习简明文档
1.操作命令
查看当前MySQL中有哪几个数据库:show databases;
创建一个数据库:create databasedbName;
如果防止数据库重名: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 tabletest(
Id int(5) primary key,
Gender Enum('M',F')
);
Insert intotest values(1,'M');
Insert intotest values(1,'F');
Set类型:不同于Enum的是它允许从列表中选择多个值。
Create tabletest(
Id int(5) primary key,
Gender Set('A' , 'B' ,'C', 'D', 'E' , 'F')
);
Insert intotest values(1,'A,B,C');
Insert intotest values(1,'F');
Insert intotest 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 tabletableName(
Id int(10)Auto_increment primary key,
Name varchar(50)not null
);
Eg2:
create tabletableName(
Id int(10)Auto_increment,
Host int(10)Auto_increment,
Name varchar(50)not null,
primary key(Id,Host)
);
对于eg1,这种格式的主键设置方式,只能设置这一个字段为主键;
对于eg2, 这种格式的主键设置方式,可以设置多个字段为联合主键;