MySQL数据表的基础知识及表结构的常用操作

数据表 (TABLE)

数据库实际上就是多个表组成的,表中存储着数据。
数据表也是数据库最重要的组成部分之一,我们绝大多数情况下都是在跟表打交道。
例如从表里查找一些数据,删除表中的某些数据,更新表中的某些数据等等。

数据表由行(row)列(column)组成,是一个二维的网格结构,每个列都是一个字段。
字段由字段名称和字段的数据类型以及一些约束条件组成
表中至少要有一列,可以有多行或0行,表名要唯一


MySQL的数据类型

本章我们先对数据类型有个简单的认识,大概知道有哪几种数据类型即可,详细的数据类型在下一篇博客再来讲解。

跟编程语言一样,数据库也有不同的数据类型,用于存储不同类型的数据。

MySQL支持多种类型的SQL数据类型:数值,日期和时间类型,字符串(字符和字节)类型,空间类型和 JSON数据类型等
数据类型描述使用以下约定:

  • M表示整数类型的最大显示宽度。对于浮点和定点类型, M是可以存储的总位数(精度)。对于字符串类型, M是最大长度。允许的最大值M取决于数据类型。
  • D适用于浮点和定点类型,并指示小数点后面的位数。最大可能值为30,但不应大于 M-2。
  • [ ]表示类型定义的可选部分。

在MySQL中常用数据类型主要分为以下几类
1. 数值类型
2. 字符串类型
3. 日期时间类型


数值类型

数值类型分为整数型浮点型定点型

整数型(精确值)

  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • BIGINT

浮点型(近似值)

  • FLOAT
  • DOUBLE

定点型(精确值)

  • DECIMAL

字符串类型

  • CHAR
  • VARCHAR
  • BINARY
  • VARBINARY
  • BLOB
  • TEXT
  • ENUM
  • SET

日期时间类型

  • TIME
  • DATE
  • DATETIME
  • TIMESTAMP
  • YEAR

约束条件

约束条件就是在给字段加一些约束,使该字段存储的值更加符合我们的预期。

扫描二维码关注公众号,回复: 2642596 查看本文章

比如年龄,一般人的年龄是0-150岁这个区间就足够了,年龄的字段类型我们可以使用TINYINT类型,但是不能使用有符号的值,因为年龄不能为负数,所以我们需要给年龄这个字段增加约束,让其只能是无符号值。

常用约束条件有以下这些

  • UNSIGNED :无符号,值从0开始,无负数
  • ZEROFILL:零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
  • NOT NULL:非空约束,表示该字段的值不能为空
  • DEFAULT:表示如果插入数据时没有给该字段赋值,那么就使用默认值
  • PRIMARY KEY:主键约束,表示唯一标识,不能为空,且一个表只能有一个主键。一般都是用来约束id
  • AUTO_INCREMENT:自增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
  • UNIQUE KEY:唯一值,表示该字段下的值不能重复,null除外。比如身份证号是一人一号的,一般都会用这个进行约束
  • FOREIGN KEY:外键约束,目的是为了保证数据的完成性和唯一性,以及实现一对一或一对多关系

数据表的相关操作

首先我们要先进入数据库,才能操作表

USE dbName;

创建表

建表语句,默认的存储引擎是InnoDB,8.x版本的MySQL的默认编码方式是utf8

CREATE TABLE [IF NOT EXISTS] tabName(
    字段名称 字段类型 [约束条件],
    字段名称 字段类型 [约束条件],
    ...
)ENGINE=存储引擎 CHARSET=编码方式;

下面我们以创建一个简单的用户表为例
一般用户表中都会有用户的账号(account)、密码(pwd)、姓名(name)、年龄(age)、性别(gender)等数据

账号肯定是唯一值且不能为空,密码肯定也不能为空,姓名可以重复,年龄肯定是大于0的数,性别有男,女,或保密

下面我们来创建表

#创建一个user表
CREATE TABLE IF NOT EXISTS user(
id INT,
account VARCHAR(50) NOT NULL,
name VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED,
gender ENUM('男','女','保密') DEFAULT '保密'
);

这样一个简单的user表就创建完毕了

查看当前数据库下的所有表

SHOW TABLES;

这里写图片描述

查看表结构
下面三种方法都可以

#查看数据库下的所有表
DESC user;
DESCRIBE user;
SHOW COLUMNS FROM user;

这里写图片描述

删除表

#删除表
DROP TABLE user;

表结构相关操作

添加字段

FIRST:放到表的首位
AFTER:放到某个字段后面

ALTER TABLE tabName
ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]

示例

#添加字段
ALTER TABLE user ADD addr VARCHAR(50);

这里写图片描述

删除字段

ALTER TABLE tabName
DROP 字段名称

示例:

#删除字段
ALTER TABLE user DROP addr;

这里写图片描述
给字段添加默认值

ALTER TABLE tabName
ALTER 字段名称 SET DEFAULT 默认值;

示例:

#给字段添加默认值
ALTER TABLE user ALTER name SET DEFAULT '喻志强';

这里写图片描述

删除默认值

ALTER TABLE tabName
ALTER 字段名称 DROP DEFAULT

示例

#删除默认值
ALTER TABLE user ALTER name DROP DEFAULT;

这里写图片描述

修改字段类型和字段属性(MODIFY)

ALTER TABLE tabName
MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]

示例:

#修改字段的字段类型和字段属性
ALTER TABLE user  MODIFY id INT  AUTO_INCREMENT KEY;

这里写图片描述

修改字段名称、字段类型、字段属性(CHANGE)

跟MODIFY相比CHANGE可以修改字段的名称

ALTER TABLE tabName
CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]

示例:

#修改字段名称,字段类型,字段属性
ALTER TABLE user CHANGE name username CHAR(20) NOT NULL FIRST;

这里写图片描述

添加主键

ALTER TABLE tabName
ADD PRIMARY KEY(字段名称)

示例:

#添加主键
ALTER TABLE user ADD PRIMARY KEY(id);

这里写图片描述

删除主键

ALTER TABLE tableName
DROP PRIMARY KEY;

示例:

#删除主键(需要注意的是改字段的约束不能使自增长  否则无法删除)
ALTER TABLE user DROP PRIMARY KEY;

添加唯一

默认INDEX(索引)的名称跟字段名一致。

ALTER TABLE tableName
ADD UNIQUE KEY|INDEX [indeName] (字段名称)

示例:

#添加唯一
ALTER TABLE user ADD UNIQUE KEY(account);#添加唯一,默认index的名称是字段名称
ALTER TABLE user ADD UNIQUE KEY  uni_account(account);#添加唯一 指定account字段的索引名称为uni_account
ALTER TABLE user ADD UNIQUE INDEX uni_account(account);#添加唯一 指定account字段的索引名称为uni_account

这里写图片描述

删除唯一约束

ALTER TABLE tabName
DROP index_name;

示例

#删除唯一
ALTER TABLE user DROP INDEX account;

这里写图片描述

修改表名称

ALTER TABLE tabName
RENAME [TO|AS] newTabName

或者
RENAME TABLE tabName TO newTabName;

示例:

#修改表名称
RENAME TABLE user TO user1;

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yuzhiqiang_1993/article/details/81360320