MySQL表的操作

表示数据库存储数据的基本单位。一个表包含若干个字段或者记录。
表的操作包括创建新表、修改表和删除表。这些操作是数据库管理中最基本,也是最重要的操作。

创建表

表名不能是SQL语言的关键字
create table 表名 (属性名 数据类型 [完整性约束条件],属性名 数据类型 [完整性约束条件]);

约束条件说明
Primary Key主键,唯一的标识对应的元组
Foreign Key外键,与之联系的其他表的主键
NOT NULL属性值非空
UNIQE属性值唯一
Auto_increment属性值自动增加
DEFAULT属性默认值

查看表结构

mysql>describe 表名           //查看表的基本定义
mysql>desc 表名
mysql>show create table 表名      //查看表的详细结构
//建立学生信息表并查看表
mysql> create table example1(stu_id int primary key, stu_name varchar(20), stu_sex boolean);

mysql> desc example1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| stu_id   | int(11)     | NO   | PRI | NULL    |       |
| stu_name | varchar(20) | YES  |     | NULL    |       |
| stu_sex  | tinyint(1)  | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

//建立课业学习表,并设置学生ID和课程ID为主键,查看新表的详细信息
mysql> create table example2(stu_id int, course_id int, grade float, primary key(stu_id,course_id));

mysql> show create table example2\G
*************************** 1. row ***************************
       Table: example2
Create Table: CREATE TABLE `example2` (
  `stu_id` int(11) NOT NULL,
  `course_id` int(11) NOT NULL,
  `grade` float DEFAULT NULL,
  PRIMARY KEY (`stu_id`,`course_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

//设置新表,将上个表为父表,将上表主键设置为外键
mysql>create table example3(id int primary key, stu_id int, course_id int, constraint c_fk foreign key(stu_id,course_id) references example2(stu_id,course_id));
mysql> desc example3;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| id        | int(11) | NO   | PRI | NULL    |       |
| stu_id    | int(11) | YES  | MUL | NULL    |       |
| course_id | int(11) | YES  |     | NULL    |       |
+-----------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改表

修改表包括修改表名、字段数据类型、字段名、增加/删除字段、修改字段的排列位置、更改默认存储引擎和删除表的外键约束。

mysql>create table example0(id int primary key, name varchar(20) not null, sex tinyint(1));
\\修改表名
msyql>alter table example0 rename user;
\\修改数据类型
mysql>alter table user modify name varchar(30);
\\修改字段名
mysql>alter table example1 change stu_name name varchar(30);
mysql>desc example1;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stu_id  | int(11)     | NO   | PRI | NULL    |       |
| name    | varchar(30) | YES  |     | NULL    |       |
| stu_sex | tinyint(1)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
\\使用change同时修改字段名和数据类型
mysql>alter table example1 change stu_sex sex int(2);
mysql>desc example1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| stu_id | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| sex    | int(2)      | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
\\增加字段并设置数据类型
mysql>alter table user add age int(4) not null;
\\新增字段并设置新增字段的位置
mysql>alter table user add num int(8) primary key first;
\\指定位置新增字段
mysql>alter table user add address varchar(40) not null after phone;
mysql> desc user;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| num     | int(8)      | YES  |     | NULL    |       |
| id      | int(11)     | NO   | PRI | NULL    |       |
| name    | varchar(30) | YES  |     | NULL    |       |
| sex     | tinyint(1)  | YES  |     | NULL    |       |
| phone   | varchar(20) | YES  |     | NULL    |       |
| address | varchar(40) | NO   |     | NULL    |       |
| age     | int(4)      | NO   |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
\\删除字段
mysql> alter table user drop id;
\\修改现有字段的位置 
mysql> alter table user modify name varchar(30) first;
mysql> alter table user modify sex tinyint(1) after age;
mysql> desc user;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(30) | YES  |     | NULL    |       |
| num     | int(8)      | YES  |     | NULL    |       |
| phone   | varchar(20) | YES  |     | NULL    |       |
| address | varchar(40) | NO   |     | NULL    |       |
| age     | int(4)      | NO   |     | NULL    |       |
| sex     | tinyint(1)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
\\修改表的存储引擎
mysql> alter table user engine=myisam;
\\删除外键
mysql> alter table example3 drop foreign key c_fk;
\\删除表
mysql> drop table example5;

Leave a Reply

Your email address will not be published. Required fields are marked *