mysql ---表的操作
创建表、查看表结构、修改表、删除表
1. 创建表
创建表之前选定数据库:use testx;
create table table2(属性名 数据类型 [约束], 属性名 数据类型 [约束] ) ENGINE=XX AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
约束:
PRIMARY KEY 该属性/字段设为此表主键
FOREIGN KEY 该属性/字段为该表外键,即另一个表的主键
NOT NULL 属性不能为空
UNIQUE 属性值唯一
AUTO_INCREMENT 属性值自动增加
DEFAULT 属性值为默认值
(1)设置主键
①设置单个字段为主键
create table table2( id INT PRIMARY KEY, name VARCHAR(20) );
②设置多个字段为主键
create table table2( id1 int, id2 int, name VARCHAR(20), primary key(id1,id2) );
通过多个主键组合确定唯一的记录
(2)设置外键
表A有一个字段是表B的主键,则B为父表,A为子表。
子表的外键关联的必须是父表的主键,且数据类型必须一致
创建了table2,有两个主键id1、id2,将这两个字段作为表table3的外键
create table table2( id1 int, id2 int, name VARCHAR(20), address varchar(20), primary key(id1,id2) );
create table table3( id int primary key, id1 int, id2 int, constraint ids foreign key(id1,id2) references table2(id1,id2) );
(3)自动增加属性
该字段必须是主键的一部分,一个表只能有一个字段(必须是整数类型)使用 AUTO_INCREMENT 约束。
如果该字段增加到了其数据类型能表示的最大值,则继续插入数据会产生错误。
每插入一条数据,该字段为上条记录该字段值增1
create table table4( id int primary key auto_increment, name varchar(20) );
插入数据:
①该字段值填 null或0,则该字段值为上条记录该字段值加1
insert into table values(0,'a') insert into table values(0,'b') insert into table values(0,'c')
②该字段插入非0数,则该字段值就是插入的值
insert into table values(5,'a') insert into table values(0,'d')
③插入数据时,不指定该字段
insert into table(name) values('xx')
(4)设置字段默认值
属性名 数据类型 DEFAULT 默认值
2. 查看表结构
(1)DESC 表名
DESC table4; DESCRIBE table4;
(2)查看表详细结构
查看字段名、数据类型、约束、存储引擎、字符编码
SHOW CREATE TABLE table4;
3. 修改表
(1)修改表名
ALTER TABLE 旧表名 RENAME 新表名;
(2)修改数据类型
整型、浮点、字符串、二进制、日期时间类型
数据类型决定了数据的存储格式、约束、有效范围
ALTER TABLE 表名 MODIFY 属性名 数据类型;
(3)修改字段名
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 数据类型;
可修改字段名的同时修改数据类型
(4)增加字段
ALTER TABLE 表名 ADD 属性1 数据类型 [约束] [FIRST | AFTER 属性2];
(5)删除字段
ALTER TABLE 表名 DROP 属性名;
(6)修改字段的位置
ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;
(7)修改存储引擎
ALTER TABLE 表名 ENGINE=存取引擎名;
(8)删除表的外键约束(当然是对子表操作)
ALTER TABLE 表明 DROP FOREIGN KEY 外键别名;
4. 删除表
(1)删除没有被关联的普通表
DROP TABLE 表名;
(2)删除被其它表关联的父表
在1的(2)建立了两个表,table2为父表,table3为子表
尝试删除父表:DROP TABLE table2;
查看子表结构:子表table3通过外键 ids与父表table2建立关联
要删除父表table2,则需要先删除子表table3中的外键约束:3的(8)
ALTER TABLE table3 DROP FOREIGN KEY ids;