数据表(Table)

数据表是数据库的基本组成元素,以记录(行)和字段(列)组成的二位结构用于储存数据。数据库由表结构和表内容组成,先建立表结构,然后才能输入数据。数据表结构设计主要包括字段名称,字段类型和字段属性的设置。在关系数据库中,为了确保数据的一致性和完整性,在创建表时除了必须指定字段名称、字段类型和字段属性外,还需要使用约束(constraint)、索引(index)、主键(primary key)和外键(foreign key)等功能属性。

数据值和列类型

对MuSQL中数据值的分类,有数值型、字符型、日期型和控制等,这和一般的编程语言的分类差不多。另外,MySQL数据库的表是一个二维表,由一个或多个数据列构成。每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整形数值存放在字符型的列中,MySQL则会把它当成字符串处理。MySQL中的列类型有三种:数值型、字符串类和日期/时间类。从大类来看列类型和数值类型一样,都是只有三种,但每一种列类型都还可细分。下面对各种列类型进行详细介绍。

数值类的数据列类型

| 数据列类型 | 存储空间 | 说明 | 取值范围 |

|: ----------------- |:-------------|: --------------------|----------------------|

| TINTINT | 1字节 | 非常小的整数 | 带符号值: -128 ~ 127

无符号值:0 ~ 256|

|SMALLINT | 2字节 | 较小的整数 |带符号值:-32 768 ~ 32768

无符号值:0 ~ 65535 |

| MEDIUMINT| 3字节 | 中等大小的整数 | 带符号值:-8 388 608 ~ 8 388 607

无符号值:0 ~ 16 777 215|

| INT| 4字节 | 标准整数 | 带符号值:-2 147 483 648 ~ 2 147 483 647

无符号值:0 ~ 4 294 967 295|

| BIGINT| 8字节 | 大整数 | 带符号值:-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

无符号值:0 ~ 18 446 744 073 709 551 615|

| FLOAT| 4 或 8字节 | 单精度浮点数 | 最小非零值:±1.175494351E-38

最大非零值:±3.402823466E+38|

| DOUBLE| 8字节 | 双精度浮点数 | 最小非零值:±2.2250738585072014E-308

最大非零值:±1.7976931348623157E+308|

| DECIMAL| 自定义 | 以字符串形式表示的浮点数 | 取决于储存单元字节数|

为了节省存储空间和提高数据库处理效率,我们应根据应用数据的取值范围来选择一个最合适的数据列类型。如果把一个超出数据列取值范围的数存入该列,则MySQL就会截断该值,如:我们把99999存入 SMALLINT(3)数据列里,因为SAMLLINT(3)的取值范围是-32 768 ~ 32768,所以就会截断成32767存储。显示宽度3 不会影响数值的存储,只影响显示。

字符串类数据列类型

字符串可以用老表示任何一种值,所以它是最基本的类型之一。

| 数据列类型 | 存储空间 | 说明 | 最大长度 |

|: ----------------------- |:-----------------|: --------------------|----------------------|

| CHAR[(M)] | M字节 | 定长字符串 | M字节 |

| VARCHAR[(M)] | L + 1字节 | 可变字符串 | M字节 |

| TINYBLOD,TINYTEXT | L + 1字节 | 非常小的BLOB(二进制大对象) 和文本串 | 2^6 - 1字节 |

| BLOB,TEXT | L + 2字节 | 小BLOB和文本串 | 2^16 - 1字节 |

| MEDIUMBLOB,DEDIUMTEXT | L + 3字节 | 中等BLOB和文本串 | 2^24 - 1字节 |

| LONGBLOB,LONGTEXT | L + 4字节 | 大BLOB和文本串 | 2^32 - 1字节 |

| ENUM('value1','value2',....) | 1或2 字节 | 枚举:可赋予某个枚举成员 | 65535个成员 |

| SET('value1','value2',....) | 1,2,3,4,8, 字节 |集合:可赋予某个集合成员 | 64个成员 |

字符串类数据列类型

| 数据列类型 | 存储空间 | 说明 | 最大长度 |

|: ----------------------- |:-----------------|: --------------------|----------------------|

| DATE | 3字节 | "YYYY-MM-DD"格式表示的日期值 | 1000-01-01 ~ 9999-12-31 |

| TIME | 3字节 | "hh:mm:ss"格式表示的时间值 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 |

| TIMESTAMP | 4字节 | "YYYYMMDDhhmmss"格式表示的时间戳 | 19700101000000 ~ 2037年的某个时刻 |

| YEAR | 1字节 | "YYYY"格式的年份值 | 1901 ~ 2155 |

NULL值

NULL 值可能使你感到奇怪,直到你习惯它。概念上,NULL意味着没有值或未知值,且它被看成与众不同的值。可以将NULL值插入到数据表中并从表中检索它们,也可以测试某个值是否为NULL,但不能对NULL值金像算术运算,如果对NULL值进行算数运算,其结果仍旧是NULL。在MySQL中,0或NULL都意味着假而其他意味着真。布尔运算的默认真值是1.

数据字段属性

1.UNSIGNED

该属性只能修饰数值类型,不允许数列出现负数。

2.ZEROFILL

该属性也只能用于设置数值类型,在数值类型前自动用0补足位数。

3.AUTO_INCREMENT

该属性用于设置字段的自动增量属性,当数值类型的字段设置为自增量属性时,每增加一条新的记录,该字段的值就自动加1,而且此字段的值不允许重复

4.NULL和NOT NULL

默认为NULL,即插入值时没有在此字段插入值,默认为NULL值,如果指定了NOT NULL , 则必须在插入值在此字段填入值。

5.DEFAULT

可以通过此属性来指定一个默认值,如果没有在此列添加值,那么默认添加此值。例如,在用户表user中可以将性别字段默认设置成“男”。

数据表对象管理

创建表

创建数据表的主要是定义表结构,包括数据表的名称,字段名,字段类型,约束和索引等。其基本语法如下

CREATE TABLE [IF NOT EXISTS] 表名称(

字段名1 列类型 [属性] [索引]

字段名2 列类型 [属性] [索引]

)[表类型] [表字符集]

修改表

修改表是指修改表的结构,在实际的应用中,当发现某个表的结构不满足要求时,可以用ALTER TABLE 语句来修改表的结构,包括添加新的字段、删除原有的字段、修改列的类型、属性、及索引,甚至可以修改表的目名称等。修改表的语法如下:

ALTER TABLE 表名 ACTION; ------------ #修改表的语法格式

ALTER TABLE 表名 ADD 字段名 [FIRST | AFTER 列名] #为指定的表添加新列

mysql> ALTER TABLE users ADD name VARCHAR(30) NOT NULL FIRST;

mysql> ALTER TABLE users ADD height DOUBLE NOT NULL AFTER userpass;

为指定的数据表为了更改原有字段的类型,可使用CHANGE或MODIFY 子句。如果原列的名字和新列的名字相同,则change和Modify的作用相同。语法格式如下

>```

ALTER TABLE 表名CHANGE(MODIFY) 列表 #为指定的表修改列类型

mysql> ALTER TABLE users CHANGE telno phone INT UNSIGNED DEFAULT '0';

修改表名

ALTER TABLE 旧表名 RENAME AS 新表名 #为指定的数据表重新命名

删除表

DROP TABLE 旧表名 RENAME AS 新表名 #删除不再使用的数据表

mysql设计功能设置表_MySQL数据表的设计相关推荐

  1. mysql建立班级表_mysql数据表设计-班级表 学生表 老师表 课程表 成绩表

    mysql数据表设计- 班级表 学生表 老师表 课程表 成绩表 image.png /* Navicat Premium Data Transfer Source Server : localhost ...

  2. mysql range代表什么意思_MySQL数据表range分区例子

    某些行业数据量的增长速度极快,随着数据库中数据量的急速膨胀,数据库的插入和查询效率越来越低.此时,除了程序代码和查询语句外,还得在数据库的结构上做点更改:在一个主读辅写的数据库中,当数据表数据超过10 ...

  3. python数据库建表_mysql数据表如何创建

    在 MySQL 中,可以使用 CREATE TABLE 语句创建表.其语法格式为:CREATE TABLE <表名> ([表定义选项])[表选项][分区选项]; 其中,[表定义选项]的格式 ...

  4. mysql 目录武沛齐_MySQL数据表中的数据操作

    1.插入数据 insert into t_user (username,password,nickname) values ('foye','123','佛爷'); 以下方式必须写出所有的字段 ins ...

  5. MySQL学习笔记-约束以及修改数据表

    MySQL学习笔记-约束以及修改数据表 约束: 按功能划为: NOT NULL , PRIMARY KEY , UNIQUE KEY , DEFAULT , FOREIGN KEY 按数据列的数目划为 ...

  6. mysql为什么行数据库_关系数据表中的行称为什么?

    在一个二维表中,水平方向的行称为元组,每一行是一个元组:元组对应表中的一个具体记录. 数据元组也称为记录.一个数据表中的每一个记录均有一个惟一的编号(记录号).一个记录也就是数据表中的一行. 元组(t ...

  7. MYSQL数据库(九)- 修改数据表名称、列名称

    目录 一.修改列定义(modify col_name) 二.修改列类型(modify col_name) 三.修改列名称(change col_name) 三.修改表名称(rename table a ...

  8. MySQL学习第二天—操作数据库\数据表命令

    文章目录 一.登录数据库 二.基本数据库操作命令 1. 操作数据库 1.1 创建数据库 1.2 删除数据库 1.3 查看数据库 1.4 使用数据库 1.5 其他操作 2.操作数据表 2.1 创建数据表 ...

  9. MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)

    MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...

最新文章

  1. eclipse如何卸载adt插件
  2. 关于Latex一个简单例子
  3. SqlServer判断数据库、表、存储过程、函数是否存在
  4. 《jQuery知识点总结》(一)
  5. 【二分】数列分段(ybtoj 二分-1-1)
  6. 超级有用的15个mysqlbinlog命令
  7. 叶修手速900什么概念_什么是数学?数学是探索的过程
  8. 10款常用Java测试工具
  9. Part3.Android基础知识 - 四大基本组件与常用控件完全解析
  10. Leetcode 刷题笔记(十八) —— 二叉树篇之二叉搜索树的修改与构造
  11. 安装nltk,textacy库
  12. 工作效率低如何解决?
  13. android 主题颜色意义
  14. Matlab中hold on与hold off的用法
  15. deactivate不能关闭venv
  16. 城市名字 按a-z排序
  17. 案例2:丙类仓库建筑防火案例分析
  18. [KITTI] EVO评价前端里程计精度
  19. 寒武纪笔试题——12小时制转24小时制(C\C++实现)
  20. Python定时爬取上证指数

热门文章

  1. 初识Python(1)__Python基础
  2. 如何调试栈破坏之类的问题
  3. Aspose.Cells使用总结大全
  4. SwiftUI3优秀文章 NavigationLink图片和文字显示蓝色或者图片无显示
  5. IOS之Label画一条删除线
  6. 切换用户_Mac如何在多个用户间快速切换?
  7. linux修改ip广播地址,Linux设置查看静态IP之ifconfig命令
  8. opencv 阈值分割_CVPR2019实例分割Mask Scoring RCNN
  9. iphone闪退修复工具_iOS14到底怎么样?汇总2866部iPhone的升级体验
  10. Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他