MySQL:创建、修改和删除表
1.创建数据库:CREATE DATABASE 数据库名;
删除数据库:DROP DATABASE 数据库名;
查看数据库编码:SHOW CREATE DATABASE 数据库名;
修改数据库默认编码:ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码名 [COLLATE ...];
查询存储引擎的类型:SHOW ENGINES;
查询结果中,Engine参数指存储引擎名称;Support参数说明MySQL是否支持该类型引擎;Comment参数表示对该引擎的评论;Transaction参数表示是否支持事务处理;XA参数表示是否分布式交易处理的XA规范;Savepoints参数表示是否支持保存点,以方便事务的回滚操作;
InnoDB存储引擎是default的,也就是数据库默认的存储引擎,下面我们简单介绍一下InnoDB:InnoDB是MySQL的一种存储引擎,InnoDB给MySQL提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。InnoDB是MySQL上第一个提供外键约束的表引擎,而且对事务处理的能力,也是其他存储引擎不能比拟的。不过这种引擎的缺点就是读写效率稍差,占用的数据空间相对比较大。
2.创建表:CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
...
...
属性名 数据类型 [完整约束条件]
);
在创建之前要选择数据库,格式:USE 数据库名;
查看表编码:SHOW CREATE TABLE 表名;
查看字段编码:SHOW FULL COLUMNS FROM 表名;
约束条件表:
约束条件 |
说明 |
PRIMARY KEY |
标识该属性为该表的主键,可以唯一的标识对应的元组 |
FOREIGN KEY |
标识该属性为该表的外键,是与之联系某表的主键 |
NOT NULL |
标识该属性不能为空 |
UNIQUE |
标识该属性的值是唯一的 |
AUTO_INCREMENT |
标识该属性的值是自动增加,这是MySQL的SQL语句的特色 |
DEFAULT |
为该属性设置默认值 |
1)设置表的主键:
单字段主键格式:属性名 数据类型 PRIMARY KEY
CREATE TABLE student1 ( id int PRIMARY KEY, name varchar(20) );
多字段主键格式:PRIMARY KEY(属性名1,属性名2....属性名n)
CREATE TABLE student2 ( id int, stu_id int, name varchar(20), PRIMARY KEY(id,stu_id) );
2)设置表的外键:
CONSTRAINT 外键别名 FOREIGN KEY(属性1,属性2,....属性n) REFERENCES 表名(属性1',属性2',...属性n')
CREATE TABLE teacher ( id int PRIMARY KEY, stu_id int, name varchar(20), CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCES student1(id) );
设置表的非空约束:属性名 数据类型 NOT NULL
设置表的唯一性约束:属性名 数据类型 UNIQUE
设置表的属性值自动增加:属性名 数据类型 AUTO_INCREMENT
AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增
设置表的属性的默认值:属性名 数据类型 DEFAULT 默认值
CREATE TABLE student3 ( id int PRIMARY KEY AUTO_INCREMENT, teacher_id int UNIQUE, name varchar(20) NOT NULL, sex varchar(10) DEFAULT 'male' );
3)查看表结构:
查看表基本结构语句:DESCRIBE 表名;
通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用
查看表详细结构语句:SHOW CREATE TABLE 表名;
通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码
3.修改表
1)修改表名:ALTER TABLE 旧表名 RENAME 新表名;
2)修改字段的数据类型:ALTER TABLE 表名 MODIFY 属性名 数据类型;
ALTER TABLE 表名 CHANGE change address address char(40) ;
3)修改字段名:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
4)增加字段:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
“属性名1”参数指需要增加的字段的名称;“FIRST”参数是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER”参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面;“属性名2”当然就是指表中已经有的字段
5)删除字段:ALTER TABLE 表名 DROP 属性名;
6)更改表的存储引擎:ALTER TABLE 表名 ENGINE = 存储引擎名;
7)删除表的外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
8)修改表的字符编码格式:
修改表的默认字符集和所有字符列(CHAR,VARCHAR,TEXT):ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符编码名 [COLLATE ...]
修改表的默认字符集:ALTER TABLE 表名 DEFAULT CHARACTER SET 字符编码名[COLLATE...];
修改字段的字符集:ALTER TABLE 表名 CHANGE 属性名1 属性名2 CHARACTER SET 字符编码名 [COLLATE ...];
4.删除表:
删除没有被关联的普通表:DROP TABLE 表名;
删除被其他表关联的父表:
方法一:先删除子表,在删除父表
方法二:删除父表的外键约束(上面有介绍),再删该表
修改表的编码:ALTER TABLE `Admin_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;