您的位置:首页 > 数据库 > MySQL

MySQL学习笔记_2_MySQL创建数据表(上)

2014-01-22 14:10 405 查看

MySQL创建数据表(上)

一、创建数据表的SQL语句模型【弱类型】

CREATETABLE [IF NOT EXISTS]
表名称(
字段名1列的类型[属性][索引],
字段名2
列的类型[属性][索引],

字段名n列的类型[属性][索引],
)[表属性][表字符集];
【表名称,字段名需要自己来命名】
【SQL语句并不区分大小写,但是一个文件名:在Windows下不区分大小写,但是在
Linux/UNIX下是区分大小写的】
【命名规则: 1、有意义(英文,英文组合或英文缩写)
2、自己定的名称最好小写。
3、SQL语句最好大写。】

1、 CREATETABLE
users(
idINT,
nameCHAR(32)
);
2、 SHOWTABLES;
3、 DESCusers;
4、 SELECT*
FROM users;

二、数据值与列类型

都以空间大小来细分,能够存下即可!

1、数值型
整型(整数):
非常小整数型 1字节
-128~127 0~255(无符号)
TINYINIT
较小整数型 2字节
-32768~32767 SMALLINIT
中等大小整数型 3字节
0~16777215 MEDIUMIINT
标准整数型 4字节
-2147483648~2147483647 INT
大整数型 8字节
BIGINT
【可以添加属性:UNSIGNED】

浮点型(小数):
FLOAT(M,N)
4字节
【长度M,保留小数点后N位】
DOUBLE(M,N)
8字节
【五舍六入】
DECIMAL(M,N)
M+2字节
【定点数,以字符串形式存储数据,
更精确的保存数据,但是效率会有所折扣。】【四舍五入】
【浮点数会存在误差,因此在对数字敏感的时候,需要用定点数来存储!】

3、字符型
MySQL支持以单引号与双引号表示字符串类型。
如“MySQL”与
'MySQL'相同
char(M)
最大255
固定长度字符串
varchar(M)
最大255
可变长度字符串

char(4) varchar(4)//
永远比字符多一个字节
'' 4 '' 1字节
'a' 4 'a' 2字节
'abcd' 4 'abcd' 5字节
'abcdefg' 4 'abcdefgh' 5字节

char类型会截取尾部的空格;
示例: CREATETABLE
IF NOT EXISTS tab(v varchar(4),c char(4));
INSERTINTO tab(v,c) VALUES(“ab ”,”ab ”);
SELECTCONCAT(v,”#”),CONCAT(c,”#”) FROM tab;

最佳实践:
固定长度,推荐使用char类型(可能会浪费一定空间)。
可变长度,推荐使用varchar类型(可能会付出一些性能损耗)

text
文本数据:文章,日志
长度:2^16-1
MEDIUMTEXT
LONGTEXT

blob
二进制数据:照片,电影
长度:2^16-1
MEDIUMBLOB
LONGBLOB

【虽然没法通过SQL语句将照片,电影,压缩包等二进制文件插入到数据库中,
但是我们可以通过C++/Java等编程语言将二进制文件读成二进制数据流,然
后保存到数据库中】

ENUM
枚举 1~2字节
ENUM(“one”,”two”,”three”,”four”)~65535
一次只能有一个值

SET集合 1,2,3,4,8字节
SET(“one”,”two”,”three”,”four”)~64
一次可以有多个值,用“,”隔开。
4、日期型
DATE YYYY-MM-DD //如果位数充足,可以不用加‘-’
TIME hh:mm:ss //位数充足,可以忽略‘:’,位数不足,从后面截取
DATETIME YYYY-MM-DDhh:mm:ss
TIMESTAMP YYYYMMDDhhmmss //位数不足时,不可忽略前导0
YEAR YYYY

【创建数据表时,最好不要使用这些时间值,最好使用C++/Java等编程语言中的整数来保存
时间,这样更方便计算,如C++中的int,PHP中时间戳1970-1-10:0:0】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息