MySQL数据库使用——MySQL字段管理

来源:互联网 发布:单片机控制方案 编辑:程序博客网 时间:2024/05/17 09:31

  • 添加字段ADD COLUMN
  • 查看字段DESC
  • 修改字段类型CHANGE COLUMN
    • 修改字段名
  • 删除字段 DROP COLUMN
  • 字段数据类型定义
    • 数值类型
    • 字符串类型
    • 时间类型
  • 表中的键值
  • 添加时间戳

字段就是在创建表的时候所添加的内容,比如id,name,password等关键信息,查看表中的字段在表中已经描述。
SQL命令:

SHOW COLUMNS FROM tablename;
mysql> SHOW COLUMNS FROM zusers;+-----------+-------------------+------+------+---------------------+----------------+| Field     | Type              | Null | Key  | Default             | Extra          |+-------------+-----------------+------+------+---------------------+----------------+| id        | int(10) unsigned  | NO   | PRI  | NULL                | auto_increment || vname     | varchar(20)       | YES  |      | NULL                |                || vpwd      | varchar(50)       | YES  |      | NULL                |                || add_time  | timestamp         | NO   |      | CURRENT_TIMESTAMP   |                |+-----------+-------------------+------+------+---------------------+----------------+4 rows in set

添加字段:ADD COLUMN

SQL命令:

ALTER TABLE <table name> ADD COLUMN <column name>;
mysql> ALTER TABLE zx_users ADD COLUMN phone int(20) UNSIGNED NULL DEFAULT NULL AFTER vpwd;Query OK, 0 rows affectedRecords: 0  Duplicates: 0  Warnings: 0mysql>

参数说明

ALTER TABLE zx_users    :在zx_users这个表上添加字段ADD COLUMN phone        :添加的字段名为phoneint(20)                 :字段类型为int型,长度为20UNSIGNED                :类型为无符号类型NULL                    :添加内容时允许值为空DEFAULT NULL            :默认为空AFTER vpwd              :添加到字段vpwd后面,不加的话默认添加到表的末尾

查看字段:DESC

在表管理中已经介绍过。
SQL命令:

SHOW COLUMNS FROM <tablename>;

或:

DESC <tablename>;
SHOW COLUMNS FROM zx_users;+-----------+-------------------+------+------+---------------------+----------------+| Field     | Type              | Null | Key  | Default             | Extra          |+-------------+-----------------+------+------+---------------------+----------------+| id        | int(10) unsigned  | NO   | PRI  | NULL                | auto_increment || vname     | varchar(20)       | YES  |      | NULL                |                || vpwd      | varchar(50)       | YES  |      | NULL                |                || add_time  | timestamp         | NO   |      | CURRENT_TIMESTAMP   |                |+-----------+-------------------+------+------+---------------------+----------------+4 rows in set

修改字段类型:CHANGE COLUMN

SQL命令:

ALTER TABLE <tablename> CHANGE COLUMN <columnname> …

修改字段名

SQL命令:

ALTER TABLE <tablename> CHANGE COLUMN <columnname> <new columnname>;

删除字段: DROP COLUMN

SQL命令:

ALTER TABLE <tagblename> DROP COLUMN <columnname>;
mysql> DESC zx_users;+-----------+-------------------+------+------+---------------------+----------------+| Field     | Type              | Null | Key  | Default             | Extra          |+-------------+-----------------+------+------+---------------------+----------------+| id        | int(10) unsigned  | NO   | PRI  | NULL                | auto_increment || vname     | varchar(20)       | YES  |      | NULL                |                || vpwd      | varchar(50)       | YES  |      | NULL                |                || add_time  | timestamp         | NO   |      | CURRENT_TIMESTAMP   |                || test      | int(10) unsigned  | YES  |      | NULL                |                |+-----------+-------------------+------+------+---------------------+----------------+5 rows in setmysql> ALTER TABLE zx_users DROP COLUMN test;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> DESC zx_users;+-----------+-------------------+------+------+---------------------+----------------+| Field     | Type              | Null | Key  | Default             | Extra          |+-------------+-----------------+------+------+---------------------+----------------+| id        | int(10) unsigned  | NO   | PRI  | NULL                | auto_increment || vname     | varchar(20)       | YES  |      | NULL                |                || vpwd      | varchar(50)       | YES  |      | NULL                |                || add_time  | timestamp         | NO   |      | CURRENT_TIMESTAMP   |                |+-----------+-------------------+------+------+---------------------+----------------+4 rows in set

字段数据类型定义

MySQL支持的类型

数值类型

TINYINT:对应char类型,占用1字节。取值范围:有符号:-127~127,无符号:0~255;INT:对应int类型,占用4字节。取值范围:有符号:-231 ~231-1,无符号:0 ~232-1;TINYBLOB:最大占用255字节BLOB:占用0~64K字节

字符串类型

m为值的长度

CHAR(m)    :占用m字节,m为字符串长度,m:0~255VARCHAR(m) :占用m字节,m为字符串长度,m:0~216-1TEXT(m)    :占用m字节,m为字符串长度,m:0~216-1LOGTEXT(m) :占用m字节,m为字符串长度,m:0~232-1

时间类型

DATE        :占用4字节,取值范围:1000-01-01 ~ 9999-12-31,格式:YYYY-MM-DDDATETIME    :占用8字节,取值范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,格式:YYYY-MM-DD HH:MM:SSTIME        :占用3字节,取值范围:-838:59:59 ~ 838:59:59,格式:HH:MM:SSYEAR        :占用1字节,取值范围:1901 ~ 2155 格式:YYYYTIMESTAMP   :占用4字节,取值范围:1970-01-01 00:00:00 ~ 2037-12-31 23:59:59格式:YYYY-MM-DD HH:MM:SS

TIMESTAMP主要用于插入时间戳

对时间类型的字段,可以调用系统的函数进行插入时间。

如之前创建表中,对类型为timestamp 的add_time字段的默认值设置为CURRENT_TIMESTAMP。因此在默认情况下插入值,该字段的值就默认为系统插入了一个时间戳。

例如:插入一个值

mysql> insert into zx_users(vname,vpwd) values ('user1',MD5('123456'));Query OK, 1 row affectedmysql> select * from zx_users where vname = 'user1';+----+-------+----------------------------------+--------+---------------------+| id | vname | vpwd                             | phone  | add_time            |+----+-------+----------------------------------+--------+---------------------+|  2 | user1 | e10adc3949ba59abbe56e057f20f883e | NULL   | 2017-11-05 10:32:15 |+----+-------+----------------------------------+--------+---------------------+1 row in setmysql> 

表中的键值

在创建表的时候有一段:

PRIMARY KEY (id)

键值为关系型数据库关联检索数据的关键,只有键值的数值是唯一的,只要键值不等,即使后面的数据相等,也不影响数据检索。
再插入一个值的结果

mysql> insert into zx_users(vname,vpwd,phone) values ('user1',MD5('123456'),10086);Query OK, 1 row affectedmysql> select * from zx_users where vname = 'user1';+----+-------+----------------------------------+--------+---------------------+| id | vname | vpwd                             | phone  | add_time            |+----+-------+----------------------------------+--------+---------------------+|  2 | user1 | e10adc3949ba59abbe56e057f20f883e | NULL   | 2017-11-05 10:32:15 ||  3 | user1 | e10adc3949ba59abbe56e057f20f883e | 10086  | 2017-11-05 10:49:28 |+----+-------+----------------------------------+--------+---------------------+2 row in setmysql>

键值绝对不可公开,仅仅允许后台和维护MySQL使用,前端只能利用vname字段和vpwd字段。

表与表之间的关联其实是通过每张表的键值关联,一张表要添加关联另一张表的信息,仅仅只能添加另一张表键值的字段,不能将另一张表的其他信息“复制”到另一张表上。

详细使用在8.2章。

添加时间戳

在创建表的时候有一段:

`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

为当前表添加一个时间戳字段,这样就可以查看值的创建时间,在时间数据类型中展示到,添加了用户名和密码之后,就会调用系统函数
CURRENT_TIMESTAMP创建一个时间戳