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

字段就是在创建表的时候所添加的内容,比如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 affected
Records: 0  Duplicates: 0  Warnings: 0
mysql>

参数说明

ALTER TABLE zx_users    :在zx_users这个表上添加字段
ADD COLUMN phone        :添加的字段名为phone
int(20)                 :字段类型为int型,长度为20
UNSIGNED                :类型为无符号类型
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 set

mysql> ALTER TABLE zx_users DROP COLUMN test;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
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   |                |
+-----------+-------------------+------+------+---------------------+----------------+
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~255
VARCHAR(m) :占用m字节,m为字符串长度,m:0~216-1
TEXT(m)    :占用m字节,m为字符串长度,m:0~216-1
LOGTEXT(m) :占用m字节,m为字符串长度,m:0~232-1

时间类型

DATE        :占用4字节,取值范围:1000-01-01 ~ 9999-12-31,格式:YYYY-MM-DD
DATETIME    :占用8字节,取值范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,格式:YYYY-MM-DD HH:MM:SS
TIME        :占用3字节,取值范围:-838:59:59 ~ 838:59:59,格式:HH:MM:SS
YEAR        :占用1字节,取值范围:1901 ~ 2155 格式:YYYY
TIMESTAMP   :占用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 affected
mysql> 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 set

mysql> 

表中的键值

在创建表的时候有一段:

PRIMARY KEY (id)

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

mysql> insert into zx_users(vname,vpwd,phone) values ('user1',MD5('123456'),10086);
Query OK, 1 row affected
mysql> 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 set

mysql>

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

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

详细使用在8.2章。

添加时间戳

在创建表的时候有一段:

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

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

猜你喜欢

转载自blog.csdn.net/zxng_work/article/details/78827186