2.MySQL数据库表结构管理
原创
©著作权归作者所有:来自51CTO博客作者行走的皮卡丘的原创作品,请联系作者获取转载授权,否则将追究法律责任
2.MySQL数据库表结构管理
一、约束条件
- null 允许为空(默认设置)
- not null 不允许为null(空)
- Null列下显示YES是表示可以赋空值,NO时表示不可以赋空值
- key 建值类型
- default 设置默认值,缺省为null
mysql> create table t1 ( name char(10) , age int );
Query OK, 0 rows affected (0.00 sec)
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into t1 values (null ,null); --向表内插入空值
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1; --查看表内容
1.1、查看约束条件
1.2、设置约束条件
- 新建t1表
name不能为空,age不能为空,并设置默认值为19,sex默认可以为空,并设置枚举单选
mysql> drop table t1; --删除原t1表
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
mysql> create table db2.t1 (name char(10) not null ,age int not null default 19 , sex enum ("boy" , "girl" ) );
Query OK, 0 rows affected (0.01 sec)
--新建t1表,name不能为空,age不能为空,并设置默认值为19,sex默认可以为空,并设置枚举单选
mysql> desc t1;
+-------+--------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------+------+-----+---------+-------+
| name | char(10) | NO | | NULL | |
| age | int(11) | NO | | 19 | |
| sex | enum('boy','girl') | YES | | NULL | |
+-------+--------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> insert into db2.t1 values( null , 21 , null);
ERROR 1048 (23000): Column 'name' cannot be null
--报错,提示name列不能为空值.
mysql> insert into db2.t1 values( "tom" , 21 , null);
Query OK, 1 row affected (0.00 sec)
--成功,插入符合条件的值
mysql> insert into db2.t1 (name,sex)values("jerry","boy");
Query OK, 1 row affected (0.01 sec)
mysql> select * from t1; --查看表内容
+-------+-----+------+
| name | age | sex |
+-------+-----+------+
| tom | 21 | NULL |
| jerry | 19 | boy | --可以看到,我并没有给age赋值,但是我设置了默认值.
+-------+-----+------+ --所以自动为age赋默认值
2 rows in set (0.00 sec)
二、修改表结构
2.1、语法结构
- 命令格式
mysql>alter table 库名.表名 执行动作;
- 执行动作
add 添加字段
change 修改字段名
modify 修改字段类型
drop 删除字段
rename 修改表名
2.2、添加新字段
mysql> create table db1.t2( name char(10) , csnf year(4) ); --创建表
mysql> desc db1.t2; --查看表结构
mysql> insert into db1.t2 values("abc" ,"2010"); --插入内容
mysql> select * from db1.t2; --查看表内容
mysql> alter table db1.t2
-> add homeaddr char(50) default "beijing" ,add email varchar(30);
--不指定,默认按照先后顺序添加
mysql> alter table db1.t2 add stu_nu int first;
--first添加字段到第一列
mysql> alter table db1.t2
-> add sex enum("m" , "w" ) not null default "m" after name ;
--after name 表示插入到name这列的后面;
mysql> select * from db1.t2;
--查看表内容
2.3、修改字段名
mysql> alter table db1.t2
-> change stu_nu stu_num int;
--修改stu_nu为stu_num
2.4、修改字段类型
mysql> desc t2;
mysql> alter table db1.t2 modify stu_num tinyint unsigned ;
--将stu_num的类型由int改为tinyint unsigned
mysql> desc t2;
mysql> select * from t2;
mysql> alter table db1.t2 modify homeaddr char(50) default "beijing" after email;
--将homeaddr 放到 email 后面
mysql> select * from
2.5、删除字段
mysql> alter table db1.t2 drop stu_num , drop email;
//删除stu_num 和 email
mysql> select * from t2;
2.6、修改表名
mysql> alter table db1.t2 rename db1.ttt222;
mysql> show tables;