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】

MySQL学习笔记_2_MySQL创建数据表(上)的更多相关文章

  1. MySQL学习笔记_3_MySQL创建数据表(中)

    MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...

  2. MySQL学习笔记_4_MySQL创建数据表(下)

    MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...

  3. MySQL学习(三): 初识数据表

    打开数据库: USE db_name : 打开数据库. 创建数据表: 查看数据表: 查看数据表结构: 数据简单的插入与查找: 插入:INSERT [INTO] tbl_name [(col_name) ...

  4. mysql学习(八)数据表类型-字符集

    数据存储引擎: MyISAM:强化快速读取操作. 也有缺点.一些功能不支持 InnoDB:支持一些MyIASM一些不支持的功能                 缺点:占用空间大 对比          ...

  5. MySQL学习(一) 数据表基本操作

    创建数据库:create database db_name 查看数据库结构:show create database db_name 删除数据库:drop database db_name 查看数据库 ...

  6. MySQL学习笔记_9_MySQL高级操作(上)

    MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1;               #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...

  7. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  8. MySQL学习笔记十一:数据导入与导出

    数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...

  9. MySQL学习笔记2(多表操作)

    外键:使两张表之间存在关联 特点: 1.从表外键的值是对主表主键的引用 2.从表外键类型,必须与主表主键类型一致 示例: 创建两个表并准备数据: USE mybase; CREATE TABLE ca ...

随机推荐

  1. 我的android学习经历19

    怎样在标题栏中显示进度条 import android.app.Activity;import android.os.Bundle;import android.view.Window; public ...

  2. 【leetcode❤python】198. House Robber

    class Solution(object):    def rob(self, nums):        """        :type nums: List[in ...

  3. iOS - Socket 网络套接字

    1.Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 Socket.Socket 又称 "套接字",应用程序通常通过 "套接字& ...

  4. c++ IO的继承结构

    #include <stdio.h> #include <iostream>//cin,cout #include <sstream>//ss transfer. ...

  5. c++ string的实现。

    第三次做了.只是做个复习.偶然发现之前的版本有内存泄露.基本功还是不过关.这次应该没有内存泄漏了.虽然是个简单版本. 1)了解堆,栈,值copy. 2)几个常用的c的字符函数和c中的char 如何表示 ...

  6. [转载] 跟着实例学习zookeeper 的用法

    原文: http://ifeve.com/zookeeper-curato-framework/ zookeeper 的原生客户端库过于底层, 用户为了使用 zookeeper需要编写大量的代码, 为 ...

  7. mysql 事件调度器

    1.mysql事件调度器,也就是计划任务,计划做某事,有两种方式: 2.在某个时间点做某事,AT TIMESTAMP [+ INTERVAL INTERVAL] 某个时间点加上偏移. 3.定时地做某事 ...

  8. java中String的常用方法

    java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len= ...

  9. numpy库的常用知识

    为什么有numpy这个库呢?准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2, ...

  10. iOS开发之 获取手机的网络的ip地址

    首先在使用的地方导入 #include <ifaddrs.h> #include <arpa/inet.h> 然后直接调用 - (NSString *)getIPAddress ...