09-表的创建

09-表的创建

 

----创建表的方法

语法:create table 表名(

属性名  数据类型 完整约束条件,

属性名  数据类型 完整约束条件,

属性名  数据类型

)

 

----删除表的方法

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

     drop table 表名;

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

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

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



----表的完整性约束

约束条件

说明

(1)primary key

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

(2)foreign key

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

(3)not null

标识该属于的值不能为空

(4)unique

标识这个属性值是唯一

(5)auto_increment

标识该属性值的自动增加

(6)default

为该属性值设置默认值

 

(1)、设置表的主键

   主键是一个表的特殊字段,这个字段是唯一标识表中的每条信息,主键和记录的关系,跟人的身份证一样。名字可以一样,

但是身份证号码觉得不会一样,主键用来标识每个记录,每个记录的主键值都不同,

   主键可以帮助Mysql以最快的速度查找到表中的某一条信息,主键必须满足的条件那就是它的唯一性,表中的任意两条记

录的主键值,不能相同,否则就会出现主键值冲突,

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

 

举例:

 create table sxkj(

user_id int primary key

user_name varchar(20),

user_sex char(7));

 

(2)、设置多个字段做主键

举例:

  create table sxkj2(

user_id int ,

user_name float,

grade float,

primary key(user_id,user_name));

 

(3)、设置表的外键,

外键是表的一个特殊字段,如果stu_IDB表的一个属性且依赖于A表的主键,那么A表被称为父表。B表为被称为子表,

 外键的作用,主要有两个: 
    一个是让数据库自己通过外键来保证数据的完整性和一致性
    一个就是能够增加ER图的可读性

 

语法:

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

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

 

 

创建A表:

create table B(

    -> user_id int primary key,

    -> user_name float,

    -> grade_id float,

    -> constraint c_fk foreign key (user_id,grade_id)

-> references A(user_id,grade_id));

创建B表:

  create table B(

    -> user_id int primary key,

    -> user_name float,

    -> grade_id float,

    -> constraint c_fk foreign key (user_id,grade_id)

-> references A(user_id,grade_id) on delete cascade);

 

 

A表和B表中插入数据,以及建标时两者的数据类型必须以致。

注意因为受到外键的约束,B所有关联的外键字段的值要和主的以致

root@zytest 15:24>insert into A values('11','12.5','13.5');

root@zytest 15:25>insert into B values('11','13.5','13.5');

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


(4)设置表的非空值

语法: 属性名  数据类型  NOT NULL

举例:

create table C(

user_id int NOT NULL);

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

唯一性指的就是所有记录中该字段。不能重复出现。

语法:属性名 数据类型  unique

举例:

root@zytest 15:43>create table D(

    -> user_id int unique);

 

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

Auto_increment Mysql数据库中特殊的约束条件,它的作用是向表中插入数据时

   自动生成唯一的ID,一个表只能有一个字段使用auto_increment 约束,必须是唯一的

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

举例:

create table F( user_id int primary key auto_increment);

root@zytest 15:56>insert into F values('');           插入一条空的信息

Query OK, 1 row affected, 1 warning (0.00 sec)

root@zytest 15:56>select * from F;                值自动从1开始自增

+---------+

| user_id |

+---------+

|       1 |

+---------+

1 row in set (0.01 sec)

 

(6)、设置表的默认值

   在创建表时,可以指定表中的字段的默认值,如果插入一条新的纪录时,没有给这个字段赋值,那么数据库会自动的给这个字段插入一个默认值,字段的默认值用default来设置。

  语法属性名 数据类型 default 默认值

举例:

root@zytest 16:05>create table G(

user_id int primary key auto_increment,

user_name varchar(20) default 'zero');

 

root@zytest 16:05>insert into G values('','');  插入数据,应为ID为自增,值为空,user_name设置了默认值,所以也为空。

 

 

5.3、查看表结构的方法

Mysql  DESCRIBE可以查看那表的基本定义,包括、字段名称,字段的数据类型,是否为主键以及默认值等。。

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

 

(2)  Show create tables表名 查询表详细的结构语句,

5.4、修改表的方法

(1)、修改表名

  语法:alter table 旧表名 rename 新表名;

 举例;

root@zytest 16:11>alter table A rename zyA;

Query OK, 0 rows affected (0.02 sec)

 

(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]

 

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

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

Query OK, 0 rows affected (0.13 sec)

 

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

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

      Query OK, 0 rows affected (0.13 sec)


    在表的第一个位置增加字段,默认情况每次增加的字段,都在表的最后。

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

Query OK, 1 row affected (0.12 sec)

Records: 1  Duplicates: 0  Warnings: 0

 

     执行在那个位置插入新的字段,phone后面增加

root@zytest 16:46>alter table A add address varchar(30) not null after phone;

Query OK, 0 rows affected (0.10 sec)

       Records: 0  Duplicates: 0  Warnings: 0

 

(5)、删除一个字段

  alter table 表名DROP 属性名;

举例删除表的age字段

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

  Query OK, 0 rows affected (0.11 sec)

         Records: 0  Duplicates: 0  Warnings: 0

 

(6)、更改表的存储引擎

  alter table 表名 engine=存储引擎

  alter table A engine=MySIAM;

 

(7)、删除表的外键约束

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值