• 数据库约束


    一、主键

    添加主键三种方法:

    1)创建表:

    1 CREATE TABLE test01 (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20))

    2)也是创建表的时候添加,但是添加位置为约束区域。所谓约束区域就是字段定义完之后的代码位置。

    1 CREATE TABLE test02 (id INT AUTO_INCREMENT ,username VARCHAR(22),PRIMARY KEY(id))

    3)是创建表之后,直接修改表进行主键创建:

    1 CREATE TABLE test03(id INT  ,username VARCHAR(22));
    1     ALTER TABLE test03 ADD PRIMARY KEY(id);

     4)truncate  和delete

      1、truncate  是删除表,重新创建表。属于DDL(Data Definition Language 数据库定义语言)

        delete属于清空原先的记录。属于DML(Data Manipulation Language 数据库操作语言)

      2、delete from属于删除表中的原先的记录,逐条进行删除,再次插入会接着之前的ID值的。

    1         SELECT * FROM test01;
    2         INSERT INTO  test01(username) VALUES("tom");
    3         DELETE FROM test01;
    4         INSERT INTO  test01(username) VALUES('ok')

      

    而truncate 是直接删除表,之后继续创建新的表。

    5)auto_creatment 需要满足以下条件:

       1、被修饰的字段必须支持自增,一般是int类型

    1 CREATE TABLE test04(
    2 id VARCHAR(22) AUTO_INCREMENT,
    3 usrername VARCHAR(333)
    4 )

      报错:Incorrect column specifier for column 'id'

      2、被修饰的字段,一般作为表的key,一般是primary key

    1 CREATE TABLE test04 (
    2   id INT AUTO_INCREMENT,
    3    usrername VARCHAR(333)
    4 )

      报错:Incorrect table definition; there can be only one auto column and it must be defined as a key

    6)一对多:

    在我们日常中经常会出现一对多的场景,比如说,用户订单和用户之间的关系就是一对多的关系,多的是订单(多表),一是用户。在实际生产环境中,有一些不建立外键,(处于维护角度)通过程序来控制逻辑关系。还有一种通过外键关系来创建之间关系。

    我们一般在多表中建立外键约束。

    语法:

    alter table 多表名称 add  foreign key (外键名称) references  表名称(主键)

    ALTER TABLE orders ADD  FOREIGN KEY(user_id) REFERENCES users(id)

     1 CREATE TABLE users (
     2 id INT  AUTO_INCREMENT ,
     3 username  VARCHAR(33),
     4 PRIMARY KEY(id)
     5 )
     6 
     7 INSERT INTO users(username) VALUES('ok')
     8 
     9 SELECT * FROM users;
    10 
    11 CREATE  TABLE orders(
    12 id INT AUTO_INCREMENT PRIMARY KEY,
    13 totalprice DOUBLE
    14 )
    15 
    16 
    17 ALTER TABLE orders ADD COLUMN user_id INT;

    多表插入不存在user_id 的时候,出现Cannot add or update a child row: a foreign key constraint fails (`test`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`))错误。

    插入存在的userid的话。

    删除可以正常删除:DELETE FROM orders WHERE user_id=1;

  • 相关阅读:
    P1856 [USACO5.5]矩形周长Picture 题解
    题解 SP703 【SERVICE
    题解 P2893 【[USACO08FEB]Making the Grade G】
    P4551 最长异或路径 题解
    P3834 【模板】可持久化线段树 2(主席树)题解
    用正则表达式验证用户名输入的正确性
    软件测试杂谈
    next_permutation
    刊物论文级别
    android 之常见事件响应的实现方式对比
  • 原文地址:https://www.cnblogs.com/evilliu/p/9184484.html
Copyright © 2020-2023  润新知