mysql 的列类型,增加更新表字段

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: #列类型 mysql 三大列类型 数值型 tinyint 占据空间 1字节 8个位 存储范围,-128-127,0-255 0-2^8 0-255 -2^7 2^7-1 smallint mediuint int bigint int系列声明时的参数 (M) unsigned zerofill 分析M参数 M表示补0宽度
#列类型

mysql 三大列类型
数值型
	tinyint
		占据空间 1字节 8个位 存储范围,-128-127,0-255
		0-2^8  0-255
		-2^7   2^7-1
	smallint
	mediuint
	int
	bigint
	
int系列声明时的参数
(M) unsigned zerofill
分析M参数  M表示补0宽度
M必须和zerofill配合才有意义, zerofill 表示的unsigned
alter table calss add snum smallint(5) zerofill not bull default 0;


小数(浮点型/定点型)

float(M,D)  decimal(M,D)
M 叫精度,代表总位数,而D 是标度,代表小数位(小数点右边的位数)
float(6,2) 表示 -9999.99到9999.99


字符串

char varchar text blob
char定长,和varchar变长
char(M) varchar(M) 中的M限制的是字符,不是字节
即char(2)charset utf8 ,是2个字符,如:'中国'

text 不用加默认值
blob 是二进制类型,用来存储图像,音频等二进制信息
意义:2进制,0-255都有可能出现




日期/时间类型

date
time

建表
SNS白领社交网站
会员表
create table snsmember (
id int unsigned primary key auto_increment,
username char(20) not null default '',
gender char(1) not null default '',
weight tinyint unsigned not null default 0,
birth date not null default '0000-00-00',
salary decimal(8,2) not null default 0.00,
lastlogin int unsigned not null default 0
)engine myisam charset utf8

/*有所优化,字段都是定长*/

#增加列或者删除列

alter table 表名 add 列名称 列类型 列参数

#在最前边增加一行
alter table 表名 add 列名称 列类型 列参数 first

#删除列
alter table 表名 drop 列名

#修改列

把char(1) 改为char(4)
alter table 表名 modify 列名 新类型 新参数

mysql> use test;
Database changed
mysql> create table test1(
    -> star varchar(20) not null default '',
    -> birth date not null default '0000-00-00'
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.23 sec)

mysql> insert into test1
    -> values
    -> ('lin1ingxia','1967-3-23');
Query OK, 1 row affected (0.05 sec)

mysql> select * from test1;
+------------+------------+
| star       | birth      |
+------------+------------+
| lin1ingxia | 1967-03-23 |
+------------+------------+
1 row in set (0.01 sec)

mysql> create table snsmember (
    -> id int unsigned primary key auto_increment,
    -> username char(20) not null default '',
    -> gender char(1) not null default '',
    -> weight tinyint unsigned not null default 0,
    -> birth date not null default '0000-00-00',
    -> salary decimal(8,2) not null default 0.00,
    -> lastlogin int unsigned not null default 0
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.11 sec)

mysql> create table m (
    -> id int unsigned primary key auto_increment
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.06 sec)

mysql> alter table m add username char(20) not null default '';
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from m;
Empty set (0.02 sec)

mysql> desc m;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| username | char(20)         | NO   |     |         |                |
+----------+------------------+------+-----+---------+----------------+
2 rows in set (0.08 sec)

mysql> alter table m drop username;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
+-------+------------------+------+-----+---------+----------------+
1 row in set (0.00 sec)

mysql> alter table m add username char(20) not null default '';
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table m add email char(28) not null default '';
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table m modify email varchar(30) not null default '';
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| username | char(20)         | NO   |     |         |                |
| email    | varchar(30)      | NO   |     |         |                |
+----------+------------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)

mysql> exit


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL
Mysql基础第十九天,使用不同类型的链接
Mysql基础第十九天,使用不同类型的链接
25 0
Mysql基础第十九天,使用不同类型的链接
|
2月前
|
存储 关系型数据库 MySQL
MySQL - 索引类型详解
MySQL - 索引类型详解
|
3月前
|
SQL 关系型数据库 MySQL
mysql使用default给列设置默认值的问题
mysql使用default给列设置默认值的问题
34 0
|
2月前
|
关系型数据库 MySQL Docker
MySQL 5.7 timestamp类型设置default value为'0000-00-00 00:00:00'报错的解决方法
MySQL 5.7 timestamp类型设置default value为'0000-00-00 00:00:00'报错的解决方法
|
1月前
|
弹性计算 安全 关系型数据库
rds网络类型选取
云数据库RDS的网络类型选择包括经典网络、专有网络(VPC)、公共网络和私有网络。推荐使用VPC以实现高安全隔离,私有网络增加安全性且节省公网费用。根据业务需求和安全策略选择,如需内部访问选择同一VPC,外部访问则需公网并配以严格安全措施。最新阿里云RDS建议使用VPC并结合安全组、网络ACL和白名单保障安全,通过CEN实现跨地域通信。
16 7
|
1月前
|
存储 关系型数据库 MySQL
MySQL中常见的存储引擎类型
【2月更文挑战第18天】
48 7
|
2月前
|
关系型数据库 MySQL
Mysql注入 -- 注入类型
Mysql注入 -- 注入类型
16 1
|
2月前
|
SQL 运维 关系型数据库
MySQL中常见的几种日志类型
MySQL中常见的几种日志类型
|
2月前
|
存储 关系型数据库 MySQL
如何修改MySQL列允许Null?
如何修改MySQL列允许Null?
48 1
如何修改MySQL列允许Null?
|
2月前
|
关系型数据库 MySQL 数据库
如何检查 MySQL 中的列是否为空或 Null?
如何检查 MySQL 中的列是否为空或 Null?
49 1
如何检查 MySQL 中的列是否为空或 Null?