好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MySQL学习笔记_2_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 】


转载   http://blog.csdn.net/zjf280441589/article/details/18660509

如有版权问题,请联系QQ:858668791



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

标签:sql   数据库   mysql   编程语言   数据   

查看更多关于MySQL学习笔记_2_MySQL创建数据表(上)的详细内容...

  阅读:32次