Mysql从入门到精通day2————数据表操作
(一)创建数据表操作:
基本语法:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(create definition)][table options][select_statement]
解释:
TEMPORAY 如果使用该关键字表示创建一个临时表
IF NOT EXISTS 避免表存在时发生错误
create definition 表的列属性部分,创建表时至少包含一列
table_options 表的特性参数,一般是表数据的存储方式和存储位置如存储引擎,多数情况下用户不必指定
select_statement select语句描述部分,用于快速创建表
下面介绍列属性create_difinition部分,每一列定义的具体格式如下:
col_name type [NOT NULL|NULL] [DEFAULT default_value][AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]
参数解释:
col_name 字段名(列名)
type 字段类型
NOT NULL|NULL :指出是否允许列为空值,系统一般默认允许为空值,所以当不允许为空值时,必须使用NOT NULL
DEFAULT:default_value 表示默认值
AUTO_INCREMENT 表示是否自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被索引
PRIMARY KEY 表示是否为主键,一个表只能有PRIMARY KEY。如果表中没有PRIMARY KEY,而某些应用程序需要PRIMARY KEY,那么MYSQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY
reference_definition 为字段添加注释
实际应用中我们只需要使用最基本的格式创建数据表即可
CREATE TABLE 数据表名(列名1 属性,列名2,属性)
下面我们来看实例:
我们选中wanjiahui2数据库
在wangjiahui2数据库中创建tb_admin数据表,其中包含id,user,password,createtime等字段(列)
(二)查看表结构
语法:
1.show语句
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名]
中括号的项可省略
如图我们查看(一)中创建好的tb_admin结构,显示有4列
2.describe语句
DESCRIBE 数据表名
DESCRIBE 数据表名 列名
describe可以简写为desc
如图我们用desc查看tb_admin中的user列
(三)修改表结构
ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]...| table options
[IGNORE] 可选项,如果出现重复关键的行,只执行一行,其余重复的行删除
数据表名:用于指定要修改的数据表的名称
table_options:表的特性参数,一般不用用户指定
alter_spec子句:用于定义要修改的内容,语法格式如下:
注意有小括号的命令一定要加上小括号
create definition:定义列的数据类型和属性
[FIRST|AFTER col_name]:用于指定位于哪个字段的前面或后面,first是前面,after是后面,col_name是字段名
[index_name]:可选项,用于指定索引名
(index_col_name):用于指定索引列名
old_col_name:用于指定要修改的字段名
new_tbl_name:用于指定新的表名
{SET DEFAULT literal|DROP DEFAULT}子句:为字段设置或者删除默认值。其中,literal参数为要设置的默认值
下面来看例子:
1.添加新字段和修改字段类型
语法:
alter table 数据表名 add 新字段 新字段属性 first|after 字段名
如图,我们选择wangjiahui2数据库,在tb_admin数据表中,增加email字段,并修改user字段类型为varchar(40)再用desc查看表结构发现已经改变
上图我们使用after在username后添加hui整型字段添加成功,注意新建字段名类型必须指定否则会报错
2.修改字段名
语法:
alter table 数据库名.数据表名 change column 要修改的字段 新字段名 新字段属性
affected表明我们已经修改成功
如图所示我们已经成功修改user字段名为username
3.删除字段名
语法:
alter table 数据表名 drop 字段名
4.修改表名
语法:
alter table 数据表名 rename as 新的数据表名
或者rename table 数据表名1 to 数据表2,数据表3 to 数据表4
如图所示,我们修改tb_admin表的名称为guangjun1并且查看表结构发现同原来的表结构一致
5.添加主键,删除主键,添加唯一索引
如图主键修改为createtime,id成为唯一索引
(四)复制表
语法:
create table [if not exists] 数据表名
{like 源数据表名}
复制表时like选项必须指定
我们复制guangjun1的结构给guangjun2
这里需要注意,复制的是结构而不是内容
如图,我们用select语句查看guangjun2的内容发现为空
如果想复制内容我们需要使用as 子句来实现
使用上述语句我们就可以连同数据一起复制
(五)删除表
语法:
drop table [if exists] 数据表名
拓展:
修改主键的步骤:
(1)去除原主键的自增属性
alter table 数据表名 modify 原主键 原主键类型 not null
(2)删除原主键约束
alter table 数据表名 drop primary key
(3)定义新的主键约束
alter table 数据表名 change 旧主键名 新主键名 新主键类型 [unsigned AUTO_INCREMNET] primary key;