mysql基础---基本类型和约束

一.基本类型(常用)

1.数值:  int    float    double

2.日期和时间:  date (格式:YYYY-MM-DD)      time (格式:HH:MM:SS)

3.字符串:  char(n)  定长       varchar(n)   不定长

二.约束

1.主键约束  primary key   唯一且非空

         如何添加主键:1.建表时直接添加

                                2.alter table 表名 add primary key(列名);

           3.alter table 表名 modify 列名  primary key;

         如何删除主键:   alter table 表名 drop primary key;

2.自增约束  auto_increment  默认为1,从1开始递增,通常和主键一起使用,如下:

          create table user(

               id int primary key auto_increment,

          name varchar(20)

           );

插入:  insert into user  (name) values ('zhangsan');      ------这里id会自动设置为1,再次插入时会变为2

3.唯一约束  unique      约束修饰的字段值不可重复

  如何添加唯一约束:1.建表时直接添加

           2.alter table 表名 add unique(列名);

           3.alter table 表名 modify 列名 unique;

  如何删除唯一约束:alter table 表名 drop index 列名;

4.非空约束 not null   修饰的字段不能为空

5.默认约束 default   插入数据时,没有给该字段插入,这时该字段会使用默认值,如下:

  create table user(

    id int ,

    name varchar(20),

    age int default 10

  );

  插入数据:insert into user (id,name) values (1,'luohan');

  显示的结果中age的值为10;

  若插入时给age赋了值,则显示的插入的这个值

6.外键约束 foreign key(子表列名) references 父表名(父表列名)  ,如下:

//创建班级表(父表)

create table classes(

  id int primary key,

  name varchar(20)

);

//查看表结构

 

 

//创建学生表(子表)

create table student(

  id int primary key,

  name varchar(20),

  class_id int,

  foreign key(class_id) references classes(id)

);

//查看表结构

//往班级表里插入值

insert into classes  values (1,'一班');

insert into classes  values (2,'二班');

insert into classes  values (3,'三班');

insert into classes  values (4,'四班');

//结果如下

 

 //往学生表里插入数据

insert into student values (1001,'李白',1);

insert into student values (1002,'李白',2);

insert into student values (1003,'李白',3);

insert into student values (1004,'李白',4);

//查看结果

 

 //此时若向学生表里插入一条班级ID为5的信息,则会报错

insert into student values (1001,'杜甫',5);

 

 原因是学生表依附于班级表,而班级表里并没有id为5的信息,所以系统会报错

 

结论:1.父表中没有的数据,在子表中是不可以使用的

    2.父表中的记录被子表引用时,是不可以被删除的

 

posted @ 2020-04-15 11:38  巴黎左岸丶花未眠  阅读(154)  评论(0)    收藏  举报