一.创建数据表
老规矩,先看实例,再看语法。
代码语言:javascript复制USE abcd; //使用名为student的数据库
CREATE TABLE asus(
id int auto_increment primary key,
user varchar(30) not null,
password varchar(30) not null,
createtime datetime);
提示我写错了,仔细看一看,原来是auto_increment被我少写了一个e。
一个字错了,就需要从头再敲,这太费时间了,这里教大家另一种方法: 打开第一篇文字讲过的Navicat Premium这个软件,选择一个数据库,然后点击查询,然后新建查询,在这里可直接写sql语句而不在想控制台那么麻烦。
总结语法:
代码语言:javascript复制CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(create_defintion...)][table_options][select_statement]
-- create_defintion 格式/参数
col_name type[NOT | NULL][DEFAULT default_value][AUTO_INCREMENT][PRIMARY][reference_definition]
CREATE TABLE 语句 相关参数的解释:
关键字 | 说明 |
---|---|
TEMPORARY | 如果使用该关键字,表示创建一个临时表 |
IF NOT EXISTS | 该关键字用于避免表存在时MySQL报告的错误 |
create_definition | 这是表的列属性部分。MySQL要求在创建表时,表要至少包含一列 |
table_options | 表的一些特殊参数其中大多数选项涉及的是表数据如何存储及存储在何处,如ENGINE选项用于定义表的存储引擎,多数情况下,用户不必指定表选项 |
select_statement | SELECT语句描述部分,用它可以快是创建表 |
create_definition参数说明:
参数 | 说明 |
---|---|
col_name | 字段名 |
type | 字段类型 |
NOT NULL | NULL |
DEFAULT default_value | 表示默认值 |
AUTO_INCREMENT | 表示是否时自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被索引 |
PRIMARY KEY | 表示是否为主键,一个表只能有一个PRIMARY KEY,如表中没有一个PRIMARY KETY,而某些应用程序需要PRIMARY KEY,MySQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY |
reference_definition | 为字段添加注释 |
二.查看表结构
使用SHOW COLUMNS 语句查看
代码语言:javascript复制SHOW [FULL]COLUMNS FROM 数据表名 [FROM 数据库名];
--或
SHOW [FULL]COLUMNS FROM 数据表名.数据库名;
使用DESCRIBE 语句查看
代码语言:javascript复制DESCRIBE|DESC 数据表名;
-- 只显示一列的信息
DESCRIBE 数据表名 列名;
三.修改数据表
添加新字段及修改字段定义:
代码语言:javascript复制USE abcd;
ALTER TABLE abcd ADD email VARCHAR(50) not null, --添加新字段
modify user VARCHAR(40); --冰修改字段user的字段类型
通过ALTER 语句修改表列,前提事必须将表中数据全部删除,然后才可以修改表列
修改字段名:
代码语言:javascript复制ALTER TABLE abcd.asus
CHANGE COLUMN user username VARCHAR(30) NULL DEFAULT NULL;
--将user改为username NULL DEFAULT NULL的意思是可以为空,默认空
--类型不可省略
删除字段:
代码语言:javascript复制USE abcd;
ALTER TABLE abcd DROP email;
--删除abcd表下的email字段
修改表名:
代码语言:javascript复制USE abcd;
ALTER TABLE asus RENAME AS asus_my;
语法总结:
代码语言:javascript复制ALTER[IGNORE]TABLE 数据表名 alter_spec[,alter_spec]...|table_options
--alter_spec子句语法格式
ADD[COLUMN]create_definition[FIRST|AFTER column_name] -- 添加新字段
|ADD INDEX[index_name](index_col_name,...) --添加索引名称
|ADD PRIMARY KEY (index_col_name,...) --添加主键名称
|ADD UNIQUE[index_name](index_col_name,...) --添加唯一索引
|ALTER[COLUMN]col_name{SET DEFAULT literal|DROP DEFAULT}--修改字段默认值
|CHANGE[COLUMN]old_name_name create_definition --修改字段名/类型
|MODIFY[COLUMN]create_definition --修改子句定义字段
|DROP[COLUMN]col_name --修改字段名称
|DROP PRIMARY KEY --删除主键名称
|DROP INDEX index_name --删除索引名称
|RENAME[AS]new_tbl_name --更改表名
--create_definition 定义列的数据类型和属性
--table_options 用于指定表的一下特性参数,多数情况下,不必指定该选项
数据结构核心原理与算法应用