zoukankan      html  css  js  c++  java
  • mysql增删改

    要对数据表进行增删改查,我们先建立两张测试表:

    1. 部门表

    CREATE TABLE `tb_dept` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(15) DEFAULT NULL,
      `description` VARCHAR(100) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;

    2. 员工表

    DROP TABLE IF EXISTS `tb_emp`;
    CREATE TABLE `tb_emp` (
      `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
      `name` VARCHAR(8) NOT NULL,	# not null,
      `sex` VARCHAR(2) DEFAULT NULL CHECK(sex='男' OR sex='女'),
      `age` INT(11) DEFAULT NULL CHECK(age>18 AND age<50),
      `address` VARCHAR(200) DEFAULT NULL,
      `email` VARCHAR(100) UNIQUE,
      dept_id INT,
      # 定义外键
      CONSTRAINT FOREIGN KEY tb_emp_fk(dept_id) REFERENCES tb_dept(id)
      
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;


    3.  向插入tb_dept表插入数据

    #插入数据必须先插入tb_dept数据,因为tb_emp有外键约束
    #INSERT INTO table[(column[,column...])] VALUES(value[,value...])
    INSERT INTO tb_dept(NAME,loc,description) VALUES('开发部',"广州","负责Android软件研发");

    # 指明的字段和值数量和类型应该相互匹配
    #INSERT INTO tb_dept(NAME,loc,description) VALUES('开发部',"广州");   会报错,因为字段数和插入的数据个数不一致
    INSERT INTO tb_dept(NAME,loc,description) VALUES('财务部',"广州","负责财务工作");


    #一次插入多条记录(mysql特有)
    INSERT INTO tb_dept(NAME,loc,description)
    VALUES('财务部','广州','负责财务工作'),
    ('运维部',"广州","负责产品的运维工作"),
    ('销售部',"广州","负责产品的销售");


    在此处,我们有点需要注意,tb_dept的主键为自增长的,数据库每次会为其自动增长1,且,会记住增长至多少,以后即使表中的数据被删除了(个数变小了),但是你再添加数据,id依然会按照原先的最大id在自增1;


    # 可以从一张表中插入数据
    # 通过这种方式建表,只是复制表结构,不复制约束
    DROP TABLE IF EXISTS `tb_dept2`;
    CREATE TABLE tb_dept2
    SELECT * FROM tb_dept WHERE id=90;  # 故意写了一个不可实现的where语句,才能只赋值表结构,表中无数据


    # 从一张表中插入数据(只要插入的类型和select选择的类型一致即可)
    INSERT INTO tb_dept2(id,NAME,loc,description)
    SELECT id,NAME,loc,description FROM tb_dept;


    操作emp表

    # 插入数据,要记住email表的唯一性约束,dept_id的外键约束
    INSERT INTO tb_emp(NAME,sex,age,address,email,dept_id
    VALUES('Lining','男',25,'广州',"lining@163.com",1);

    4. 更新表数据


    #更新数据
    #where的时候,建议使用主键或者是unique,主键最好,因为他本身要与业务无关
    UPDATE tb_emp SET age=25 WHERE id=4;

    5. 删除表数据

    #删除数据
    DELETE FROM tb_emp;
    DELETE FROM tb_emp WHERE id=4;

    6. 截断表 

    #截断语句
    #truncate 完全清空一个表,包括auto_increment的自动增长
    TRUNCATE TABLE tb_dept2;


    7. 比较delete、truncate、drop的执行效率

  • 相关阅读:
    Linux远程复制scp和rsync区别
    一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?
    docker离线安装
    centos7 docker 宿主机不能访问容器问题解决
    nginx 或 tengine安装错误提示:./configure: error: the HTTP rewrite module requires the PCRE library
    redhat 安装中文 支持中文
    rpm忽略依赖,强制安装,加--force --nodeps ( warning: perl-Test-Nginx-0.28-1.el6_10.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID d5edeb74: NOKEY error: Failed dependencies:)
    redhat6 安装openresty
    redhat6 Unable to establish SSL connection.
    Lua入门脚本(与Redis结合)
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330034.html
Copyright © 2011-2022 走看看