• SQL- SQL插入与更新删除


    一 前言

    经过之前的 【SQL】-SQL介绍【SQL】- SQL检索阶段一【SQL】-sql检索阶段二 的三篇文章你已经学会的sql的相关概念和如何查询数据库,这篇文章主要后续对数据库表的进入插入,更新,和删除操作,那么你学完这篇就等于最基础的sql开发你已经学完了,如果跟java结合起来也就是crud;后续会推出sql的进阶学习文章,当然出文章的速度不是很快,原因是还有其他类型文章要出;

    建表语句:

    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `name` varchar(255) DEFAULT NULL COMMENT '用户名',
      `telephone` varchar(255) DEFAULT NULL COMMENT '用户电话',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      `info` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (1, 'youku1', 18, '大一新生');
    INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (2, 'youku2', 23, '毕业生');
    INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (3, 'jeff', 25, '社会人士');
    INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (4, 'smile', 17, '高三学子');
    
    

    二 插入

    插入数据库记录也就是使用 INSERT 关键字,能将一条语句插入数据库,高级的可以组合 SELECT 关键字 实现 插入查询的结果集,插入整张表;

    2.1 插入一条完整数据

    语句示例:

    INSERT INTO `user` ( id, `name`, telephone) VALUES ('2','zszxz','1327');
    

    语句结果:

    2	zszxz	1327
    

    语句分析:

    插入 数据 到 user 表 字段分别是 id, name , telephone; 值 分别是 2 , zszxz , 1327; 这是插一条完整的语句,虽然INTO可以忽略不写,但不建议这么做,原因是在数据库管理系统间会出现移植性问题;还有字段也可以忽略不写,但也不建议这么做,这容易造成插入数据出错;字段的位置和值的位置是一 一对应;如果有的位置没值可以使用NULL代替;

    2.2 插入部分数据

    语句示例:

    INSERT INTO `user` ( id, `name`) VALUES ('3','zszxz');
    

    语句结果:

    3	zszxz	
    

    语句分析:

    插入数据到user表,字段分别是 id , name ; 值分别是,3,zszxz; 可以看见我们没有插入telephone字段;

    2.3 插入检索数据

    插入检索的数据也就是能将查询的结果插入进另一张表;我们可以使用 INSERT SELECT 关键组合成一条语句实现;

    语句示例:

    INSERT INTO `user` ( id, `name`) 
    SELECT id, `name` FROM student WHERE id = '4';
    

    语句结果:

    4	smile	
    

    语句分析:

    插入数据到 user 表, 字段分别是 id, name ,值是查询字段 id ,name 来自 student 表,条件是 id 等于 4;可以看见我们插入数据的列根查询的列名称是匹配对应的,其实只要列顺序一致即可,不过为了不出错,建议使用名称匹配;

    2.4 复制表

    复制表即,检索一张表的数据全部插入另一张表;有两种方法,但是不同的数据库管理系统支持不同,具体的看下文;

    语句示例:

    SELECT id , `name`  INTO student_copy FROM student;
    

    语句分析

    查询字段 id, name 插入 student_copy 表,来自 student 表; 注意 这条语句会帮我们自动创建表 student_copy,由于作者使用的是mysql做演示,这条sql执行失败,原因是其不支持这种方式;如果是想复制整张表可以使用通配符 * ;

    语句示例:

    CREATE TABLE student_copy AS 
    SELECT * FROM student;
    
    

    语句结果:

    1	youku1	18	大一新生
    2	youku2	23	毕业生
    3	jeff	25	社会人士
    4	smile	17	高三学子
    
    

    语句分析:

    创建表 student_copy 数据结构来源 查询 所有字段来自 student 表;

    三 更新

    更新数据库的行使用 UPDATE 关键字;更新操作是个很危险的操作,在每次执行前都应该检查是否丢了 where 子句;

    3.1 更新所有行

    语句示例:

    UPDATE student_copy set age = Null;
    
    

    语句结果:

    1	youku1		大一新生
    2	youku2		毕业生
    3	jeff		社会人士
    4	smile		高三学子
    
    

    语句分析:

    更新 student_copy 表, 设置 字段 age 值为null; 可以看见表中所有的学生年龄都是Null; 如果有多个字段需要更新,使用 逗号隔开;

    3.2 更新特定的行

    语句示例:

    UPDATE student_copy set age = '18' WHERE id = '4';
    
    

    语句结果:

    4	smile	18	高三学子
    
    

    语句分析:

    更新 student_copy 设置 学生的年龄是 18 条件是 id 等于 4;

    3.3 更新来自查询的结果集

    语句示例:

    UPDATE student_copy set age= student.age, name = student.name
    FROM student
    WHERE student.id = student_copy.id;
    
    

    语句分析:

    更新 student_copy 表 设置 age 是 student 表的 age,name 是 student 表的 name 条件是 student 的id 等于 student_copy 表的 id; 遗憾的是 mysql 数据库管理系统又执行失败了,其不支持这种方法更新,如果是postgresql就支持,其他数据库应查阅官方文档查看是否支持这种方式更新;

    语句示例:

    UPDATE student_copy INNER JOIN student on  student.id = student_copy.id 
    SET student_copy.age= student.age, student_copy.name = student.name;
    
    

    语句结果:

    1	youku1	18	大一新生
    2	youku2	23	毕业生
    3	jeff	25	社会人士
    4	smile	17	高三学子
    
    

    语句分析
    更新 student_copy 关联 student 条件 是 student 的 id 等于 student_copy 表的id ; 设置 student_copy 表的 age 等于 student 的 age ; 设置 student_copy 表的 name 等于 student 的 name ;这才是正确进入Mysql 的更新查询姿势;

    四 删除表

    删除表中的行可以使用 DELETE 关键字 ,可以删除特定的行或者全部;使用时请先看是否丢了where子句;

    4.1 删除整张表数据

    DELETE from student_copy;
    
    

    语句分析

    删除 全部行 来自 student_copy 表;

    4.2 删除特定的行

    语句示例:

    DELETE from student WHERE id = '4';
    
    

    语句分析:

    删除 行 来自 student 表条件时 id 等于 4;

    五 更新和删除的建议

    1. 每次进行操作前检查是否丢失 where 子句;
    2. 每次操作前最好先使用 select 语句验证;

    在这里插入图片描述

  • 相关阅读:
    poj 3669 Meteor Shower
    poj 3232 Accelerator
    poj 2155 Matrix
    poj 3628 Bookshelf 2
    cf C. Maze
    cf B. Fox Dividing Cheese
    hdu Children’s Queue
    cf D. Broken Monitor
    cf C. Mittens
    cf B. Berland Bingo
  • 原文地址:https://www.cnblogs.com/zszxz/p/12059197.html
Copyright © 2020-2023  润新知