1.创建表

语法:create table 表名(

       属性名 数据类型 [约束条件]

       属性名 数据类型 [约束条件]

       ...

       );

举例:

   create table student(

   num int,

   sex enum('man','woman'),

   address varchar(30)

   );


2.表的完整性约束

                                   

约束条件

说明

(1)primary key

标识该字段为表的主键,具备唯一性

(2)foreign key

标识该字段为表的外键,与某表的主键联系

(3)not null

标识该属于的值不能为空

(4)unique

标识这个属性值是唯一

(5)auto_increment

标识该属性值的自动增加

(6)default

为该属性值设置默认值

     

(1)设置表的主键

   主键是一个表的特殊字段,这个字段是唯一标识表中的每条信息,主键和记录的关系,跟人的×××一样。名字可以一样,但是×××号码觉得不会一样,主键用来标识每个记录,每个记录的主键值都不同,

   主键可以帮助Mysql以最快的速度查找到表中的某一条信息,主键必须满足的条件那就是它的唯一性,表中的任意两条记录的主键值,不能相同,否则就会出现主键值冲突,

主键值不能为空,可以是单一的字段,也可以多个字段的组合。


设置一个字段做主键

举例:

   create table student(

   num int primary key,

   name varchar(20)

   );

设置复合主键

举例:

   create table student(

   num int,

   name varchar(20),

   primary key(num,name)

   );


(2)设置表的外键

                                         

   外键是表的一个特殊字段,如果aaB表的一个属性且依赖于A表的主键,那么A表被称为父表。B表为被称为子表。如果A表中的主键值删除了,B表中的该数值(外键值)也会被删除,这样可以保证信息的完整性。


                                         

语法:

constraint外键别名 foreign key(外键字段1,外键字段2)

references主表名(主表关联的主键字段1,主键字段2)

     

举例:

   create table A(                        //父表

   user_id int,

   user_name varchar(10),

   grade_id int,

   primary key(user_id,grade_id)

   );


   create table B(

   user_id int,

   user_name varchar(10),

   grade_id int,

   constraint id foreign key (user_id,grade_id)

   references A(user_id,grade_id) on delete cascade

   );

                                         

所以在每次删除两者相关联的数据时。只要删除掉A里面数据那么B将自动也删除

(3)设置表的非空值

举例:

   create table student(

   user_id int not null

   );


(4)设置表的唯一性约束

举例:

   create table student(

   user_id int unique

   );


(5)设置表的属性值自动增加                                        

语法:属性名数据类型 auto_increment,默认该字段的值从1开始自增

举例:

root@fire 02:32>create table A(user_id int primary key auto_increment);
Query OK, 0 rows affected (0.02 sec)

root@fire 02:32>insert into A values('');
Query OK, 1 row affected, 1 warning (0.00 sec)

root@fire 02:33>insert into A values('');
Query OK, 1 row affected, 1 warning (0.00 sec)

root@fire 02:33>insert into A values('');
Query OK, 1 row affected, 1 warning (0.00 sec)

root@fire 02:33>select * from A;
+---------+
| user_id |
+---------+
|       1 |
|       2 |
|       3 |
+---------+
3 rows in set (0.00 sec)


(6)设置表的默认值

举例:

   create table F(

   user_id int primary key auto_increment,

   user_name varchar(20) default 'zero'

   );  


3.查看表结构

                                     

语法:describe 表名;可以缩写为desc

举例:

root@fire 02:33>desc A;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| user_id | int(11) | NO   | PRI | NULL    | auto_increment |
+---------+---------+------+-----+---------+----------------+
1 row in set (0.00 sec)


show create table 表名        //查看表的详细结构和创建信息

举例:

root@fire 02:40>show create table A;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                    |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| A     | CREATE TABLE `a` (
 `user_id` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4.修改表


(1)修改表名

语法:

   alter table 旧表名 rename 新表名

举例:

   alter table A rename zyA;

                                         

(2)修改表的数据类型

语法:alter table 表名 modify 属性名数据类型;

举例

root@zytest 16:15>alter table A modify user_name double;

Query OK, 0 rows affected (0.18 sec)


(3)修改表的字段名称

语法: alter table 表名 change 旧属性名新属性名新数据类型;

举例:

root@zytest 16:15>alter table A change user_name user_zyname float;

Query OK, 0 rows affected (0.10 sec)

 

(4)增加字段

语法:alter table 表名 ADD 属性名1数据类型 [完整性约束条件] [FIRST |AFTER 属性名2]

举例:

v增加没有约束条件的字段:

      root@zytest 16:18>alter table A add phone varchar(20)

       Query OK, 0 rows affected (0.13 sec)


                                         

v增加有完整约束条件的字段:

root@zytest 16:42>alter table A add age int(4) not null;

Query OK, 0 rows affected (0.13 sec)

     

                                             

v在表的第一个位置增加字段

   默认情况每次增加的字段。都在表的最后。

   root@zytest 16:45>alter table tt add num int(8) primary key first;

   Query OK, 1 row affected (0.12 sec)

   Records: 1Duplicates: 0Warnings: 0


                                         

v在表的第一个位置增加字段

   默认情况每次增加的字段。都在表的最后。

   root@zytest 16:45>alter table tt add num int(8) primary key first;

   Query OK, 1 row affected (0.12 sec)

   Records: 1Duplicates: 0Warnings: 0


                                         

(5)删除一个字段

alter table 表名DROP 属性名;

举例: 删除A 表的age字段

root@zytest 16:51>alter table A drop age;

Query OK, 0 rows affected (0.11 sec)

Records: 0Duplicates: 0Warnings: 0

(6)更改表的存储引擎

alter table表名 engine=存储引擎

alter table A engine=MySIAM;


(7)删除表的外键约束

alter table 表名drop foreign key 外键别名;

   

5.删除表

                                         

(1)、删除没有被关联的普通表

drop table 表名;

(2)、删除被其它表关联的父表

在数据库中某些表之间建立了一些关联关系。一些成为了父表,被其子表关联,要删除这些父表,就不是那么简单了。

删除方法,先删除所关联的子表的外键,在删除主表