.Tang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

-- 删除数据 自增长id被占用
-- 清楚所有数据并重置id 1

truncate table name;

--
主键(唯一) id int primary key; -- 主键内容不能重复,不能为空 create table test( id int primary key auto_increment, -- auto_increment 自增长 name varchar(10) not null, age char(5) );

-- 删除 主键 有自增长需要先删除自增长 通过change改变该字段的自增长属性

alter table student change id id int not null;

alter table test drop primary key;

-- 复合主键

create table test(
    id int;
    name varchar(10) not null,
    age char(5) null,
    primary key(id,name,age)
);

-- 只要是张表 都有id字段 通常只要存在id字段 ,那么基本上是主键


-- 自增 配合主键id使用 auto_increment
create table test(
    id int primary key auto_increment;
    name varchar(10) not null,
    age char(5) null,
);

-- 唯一键 unique key
    -- 表里没有主键时,设置唯一键会显示主键的标志 PRI,但他本质还是唯一键
  
-- 删除唯一键
alter table test drop index `name`;  -- name为字段名字

create table test(
    name varchar(10) unique key ,   -- name 不能重复 要求唯一了
    age char(5)
);

create table test(
    name varchar(10),   -- name 不能重复 要求唯一了
    age char(5),
    unique key 'uni_name'(name)
);
-- 外键 foreign key 关联两张表的

-- 外键删除
alter table foreign_key drop foreign key `外键名`;  -- 外键名通过查看建表过程


外键的几种模式
* `restrict` 默认
* `cascade` 级联
* 父表更新 子表更新 父表删除 子表删除
* `set null` 置空
* 父表更新 子表置空 父表删除 子表置空 (前提 支持为空)

 
create database test;
use test;

create table student(
    id int primary key auto_increment,
    name varchar(20) not null,
    gender char(15) not null
    );

create table course(
    id int primary key auto_increment,
    name varchar(20)
    );

insert into student(name,gender) values('Which','male');
insert into student(name,gender) values('Tuple','male');
insert into student(name,gender) values('Rose','female');

insert into course values(1,'Python');
insert into course values(2,'Web');
insert into course values(3,'Java');

create table mark(
    id int,
    stu_id int,
    course_id int,
    score int not null,
    primary key(id,stu_id,course_id),
    constraint FK_ha foreign key(id) references course(id),  -- 设置外键的名字
    foreign key(course_id) references student(id)
    );
                                -- 外键名字通过 show create table mark; 查看

insert into mark values(1,1,1,99);
insert into mark values(2,1,2,98);
insert into mark values(3,2,1,60);
insert into mark values(3,3,2,99);
mysql> select * from student;
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  1 | Which | male   |
|  2 | Tuple | male   |
|  3 | Rose  | female |
+----+-------+--------+
3 rows in set (0.00 sec)

mysql> select * from course;
+----+--------+
| id | name   |
+----+--------+
|  1 | Python |
|  2 | Web    |
|  3 | Java   |
+----+--------+
3 rows in set (0.00 sec)

mysql> select * from mark;
+----+--------+-----------+-------+
| id | stu_id | course_id | score |
+----+--------+-----------+-------+
|  1 |      1 |         1 |    99 |
|  2 |      1 |         2 |    98 |
|  3 |      2 |         1 |    60 |
|  3 |      3 |         2 |    99 |
+----+--------+-----------+-------+
4 rows in set (0.00 sec)

 


 

 

 

posted on 2017-12-23 20:30  .Tang  阅读(301)  评论(0编辑  收藏  举报