2 数据表的基本操作
*数据表和数据库还有mysql三者的关系:mysql中保存了很多数据库、一个数据库中可以保存很多表。
通常情况下,为每一个应用创建一个数据库,为每一个JavaBean创建一个数据表。
*对数据表进行操作的前提:表是在数据库下的,所以要先确实使用哪个数据库。
格式:USE 数据库名;
例:针对数据库test进行数据表的基本操作
USE test;
2.1 创建数据表
格式:CREATE TABLE 数据表名(
字段名1 数据类型[列级别约束条件],
字段名2 数据类型[列级别约束条件],
字段名3 数据类型[列级别约束条件]
);
2.1.1 创建没有约束的student1表
CREATE TABLE student1( id INT(10), name VARCHAR(20), age INT(4) );
注意:SHOW TABLES;语句用于查询该数据库底下的所有表。
2.1.2 创建有约束的student2表
六大约束:主键约束,外键约束,非空约束,唯一约束,默认约束,自动增加
(1)主键约束
*单字段主键约束
CREATE TABLE student2( id INT(10) PRIMARY KEY, name VARCHAR(20), age INT(4) );
*多字段主键约束
CREATE TABLE student2( id INT(10), name VARCHAR(20), age INT(4) PRIMARY KEY(id,name) );
(2) 外键约束
(3) 非空约束
CREATE TABLE student2( id INT(10) NOT NULL, name VARCHAR(20), age INT(4) );
(4) 唯一约束
CREATE TABLE student2( id INT(10), name VARCHAR(20) UNIQUE, age INT(4) );
(5) 默认约束
CREATE TABLE student2( id INT(10), name VARCHAR(20), age INT(4) DEFAULT 20 );
(6) 自动增加
CREATE TABLE student2( id INT(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT(4) );
注意:一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型TINYINT,SMALLIN,INT,BIGINT),从1开始增加的。
一般就是给主键使用的,自动增加,使每个主键的值都不 一样,并且不用我们自己管理,让主键自己自动生成。
2.2查询数据表
2.2.1 查看表的基本结构(DESCRIBE或者DESC)
格式:DESCRIBE 数据表名;
例:查看数据表student1的基本结构
DESCRIBE student1;
2.2.2 查看已经创建的数据表的建表语句
格式:SHOW CREATE TABLE 数据表名;
例:查看数据表student1的建表语句
SHOW CREATE TABLE student1;
2.3 修改数据表
修改数据表包括:对表中字段的增加、删除、修改。关键字为ALTER
2.3.1 修改表名
格式:ALTER TABLE 旧表名
RENAME [TO] 新表名;
例:将数据库test中的student1表名改为student表
ALTER TABLE student1 RENAME TO student;
2.3.2 修改表中的字段名
格式:ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新字段类型
例:将student表中的name字段改为username,数据类型改为CHAR(30)
ALTER TABLE student CHANGE name username CHAR(30);
注意:CHANGE不仅能改变字段名,还能一并修改字段的数据类型
2.3.3 修改表中字段的数据类型
格式:ALTER TABLE 表名
MODIFY 字段名 数据类型;
例:将student表中username字段的数据类型由CHAR(30)改为VARCHAR(25)
ALTER TABLE student MODIFY username VARCHAR(25);
2.3.4 修改字段的排列位置
格式:ALTER TABLE 表名
MODIFY 字段名1 数据类型 FIRST|AFTER 字段名
解释:“字段名1”指的是要修改为值的字段,“数据类型”指的是字段1的数据类型,“FIRST”为可选参数,指的是将字段1修改为表的第一个字段,
“AFTER 字段名2”是指将字段1插入到字段2的后面
例:将username字段放到字段age的后面。原字段顺序为:id username age
ALTER TABLE student MODIFY username VARCHAR(25) AFTER age;
注意:MODIFY能在排序的同时改变字段1的数据类型;使用CHANGE能在排序的同时改变字段1的字段名和数据类型
2.3.5 添加字段
格式:ALTER TABLE 表名
ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER 已存在字段名]
例:在student数据表中添加一个新字段grade,数据类型为FLOAT,非空约束,并且放在age字段后面
ALTER TABLE student ADD grade FLOAT NOT NULL AFTER age;
2.3.6 删除字段
格式:ALTER TABLE 表名
DROP 字段名;
例:删除student数据表的grade字段
ALTER TABLE student DROP grade;
2.3.7 删除表的外键约束
格式:ALTER TABLE 表名
DROP FOREIGN KEY 外键约束名
2.3.8 更新表的存储方式
格式:ALTER TABLE 表名
ENGINE=更改后的存储引擎名
2.4 删除数据表
2.4.1 删除无关联表
格式:DROP TABLE 表名;
例:删除数据表student
DROP TABLE student;
2.4.2 删除被其他表关联的主表
在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法:
*先删除子表,然后再删除父表。
*先解除外键关系,然后再删除父表。