数据表的操作
- 查看当前数据库中所有表
mysql> show tables; -- 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
+------------------+
| Tables_in_demo |
+------------------+
| bm_list |
| rhs_users |
+------------------+
2 rows in set (0.00 sec)
- 创建表
-- auto_increment表示自动增长
-- 创建一个学生的数据表(id、name、age、high、gender、cls_id)
-- create table 数据表名字 (字段 类型 约束[, 字段 类型 约束]); -- [] 表示可有可无
-- 多个约束 不分先后顺序
-- enum 表示枚举
-- 最后一个字段不要添加逗号
-- unsigned: 无符号, 不能够存储负数
-- 创建students表
mysql> create table students(
-> id int unsigned primary key auto_increment not null,
-> name varchar(10) not null,
-> age tinyint unsigned default 0,
-> high decimal(5,2) default 0.0, -- 180.88
-> gender enum("男", "女", "中性", "保密") default "保密",
-> cls_id int unsigned not null
-> );
Query OK, 0 rows affected (0.02 sec)
- 查看表的创建语句
mysql> mysql> show create table students;
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`age` tinyint(3) unsigned DEFAULT '0',
`high` decimal(5,2) DEFAULT '0.00',
`gender` enum('男','女','中性','保密') DEFAULT '保密',
`cls_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 查看表结构
mysql> desc students; -- show columns form students;也可以 -- 使用频率非常高
+--------+-------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | 0.00 | |
| gender | enum('男','女','中性','保密') | YES | | 保密 | |
| cls_id | int(10) unsigned | NO | | NULL | |
+--------+-------------------------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
- 查看数据表的详细索引信息
show index from students;
image
- 修改表结构
-- add -添加字段
-- 用法: alter table 表名 add 列名 类型/约束;
-- 给students表添加‘birthday‘字段,默认值为"2011-11-11 11:11:11"
mysql> alter table students add birthday date default "2011-11-11";
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 结果
mysql> desc students;
+----------+-----------------------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------------------+------+-----+------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | 0.00 | |
| gender | enum('男','女','中性','保密') | YES | | 保密 | |
| cls_id | int(10) unsigned | NO | | NULL | |
| birthday | date | YES | | 2011-11-11 | |
+----------+-----------------------------+------+-----+------------+----------------+
7 rows in set (0.00 sec)
-- modify -修改表字段值 不重命名版
-- 用法: alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date default "2011-11-11";
-- change -修改表字段 重命名版
-- 用法: alter table 表名 change 原列名 新列名 类型及约束;
mysql> alter table students change birthday birth date default "2011-11-11";
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc students;
+--------+------------------------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------------------+------+-----+------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | 0.00 | |
| gender | enum('男','女','中性','保密') | YES | | 保密 | |
| cls_id | int(10) unsigned | NO | | NULL | |
| birth | date | YES | | 2011-11-11 | |
+--------+------------------------------+------+-----+------------+----------------+
7 rows in set (0.00 sec)
-- 删除字段
-- 用法: alter table 表名 drop 字段名
alter table students drop birth;
-- 删除表
-- 用法: alter table 表名
drop table students;
网友评论