• 零基础学SQL(六、数据的增删改查简单语句)


    目录

    前置建表

    一、数据的插入

    1、插入数据语法

    1.1、插入完整的行 

    1.2、插入行的一部分

    1.3 、插入多行

    1.4、插入某些查询的结果

    二、数据的简单查询

    1、查询数据语法

     三、数据的修改

    1、修改数据语法

     2、IGNORE关键字

    四、数据的删除

    1、删除数据语法

    2、DELETE、TRUNCATE 、DROP区别

    2.1 、DELETE

    2.2、TRUNCATE

    2.3、DROP

    五、常见导致错误语句


    前置建表

    1. CREATE TABLE student (
    2. id int NOT NULL AUTO_INCREMENT COMMENT '主键',
    3. code varchar(255) NOT NULL COMMENT '学号',
    4. name varchar(255) DEFAULT NULL COMMENT '姓名',
    5. sex enum('男','女') DEFAULT NULL COMMENT '性别',
    6. PRIMARY KEY (`id`)
    7. )

    一、数据的插入

    1、插入数据语法

    1. INSERT into table-name
    2. (field-name-1, field-name2, field-name-n)
    3. VALUES
    4. (vaiue-1, value-2, value-n)
    5. --省略列明插入
    6. INSERT into table-name
    7. VALUES
    8. (vaiue-1, value-2, value-n)
    不管使用哪种 INSERT 语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供 一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。

    1.1、插入完整的行 

    1. INSERT INTO  student (id, code, name, sex) VALUES (1, '202201', '张三', '男');
    2. INSERT INTO  student VALUES (2, '202202', '李四', '男');

    如果指定列名形式插入,则列明先后顺序可以随意切换,只要列明跟数据一一对应即可如:

    INSERT INTO  student (id, code, name, sex) VALUES (1, '202201', '张三', '男');
    跟INSERT INTO  student (id, name, code,sex) VALUES (1, '张三','202201', '男');结果一样

    1.2、插入行的一部分

    如果表的定义允许,则可以在 INSERT 操作中省略某些列。省略的列必须满足以下某个条件。
    1、  该列定义为允许 NULL 值(无值或空值)。
    2、 在表定义中给出默认值。这表示如果不给出值,将使用默认值。

    如果对表中不允许NULL值且没有默认值的列不给出值,则MySQL将产生一条错误消息,并且相应的行插入不成功。

    INSERT INTO  student (id, code, name) VALUES (3, '202203', '王五');
    

    1.3 、插入多行

    如果你想插入多个行,可以使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结
    束。
    1. INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (1, '202201', '张三', '男');
    2. INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (2, '202202', '李四', '男');
    3. INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (3, '202203', '王五', NULL);
    或者,只要每条 INSERT 语句中的列名(和次序)相同,可以如下组合语句
    1. INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (1, '202201', '张三', '男'),
    2. (2, '202202', '李四', '男'),
    3. (3, '202203', '王五', NULL);

    1.4、插入某些查询的结果

    INSERT 一般用来给表插入一个指定列值的行。但是, INSERT 还存在另一种形式,可以利用它将一条SELECT 语句的结果插入表中。这就是所谓的INSERT SELECT ,顾名思义,它是由一条 INSERT 语句和一条 SELECT语句组成的。语法如下:
    1. INSERT INTO TABLE1 (field-name-1, field-name2, field-name-n)
    2. SELECT (field-name-1, field-name2, field-name-n) FROM TABLE2

    二、数据的简单查询

    1、查询数据语法

    1. -- 全列查询
    2. SELECT * FROM table-name where condition
    3. -- 部分列查询
    4. select field-name-1, field-name2,... field-name-n from table-name where condition

    如查询所有学生信息和只查询姓名,性别结果分别如下

       

     SELECT语句一般跟WHERE结合使用,用于查询筛选之后的结果,比如查询name为张三的学生信息

     三、数据的修改

    1、修改数据语法

    1. update table-name
    2. set field-name-1=value-1,
    3. field-name2=value-2,...
    4. field-name-n=value-n
    5. where condition

    UPDATE语句非常容易使用,甚至可以说是太容易使用了。 在使用UPDATE时一定要注意细心。因为稍不注意,就会更新表中所有行。 基本的UPDATE语句由 3 部分组成,分别是:
    1、 要更新的表;
    2、列名和它们的新值;
    3、 确定要更新行的过滤条件。

     如把学号为202201的学生学号修改为20220101

    update student set  code ='20220101' where code='202201';

     2、IGNORE关键字

    IGNORE 关键字 如果用 UPDATE 语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE 操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。为即使是发
    生错误,也继续进行更新,可使用 IGNORE 关键字,如下所示:
    UPDATE IGNORE student…

    四、数据的删除

    1、删除数据语法

    DELETE  table-name where condition;
    

     如删除code为202203的学生,语句如下

    DELETE student where code='202203';
    

    2、DELETE、TRUNCATE 、DROP区别

    2.1 、DELETE

    语法 DELETE from table-name where 

    删除内容,不删除表结构,但不释放空间,delete删除数据后只会从删除前的最后一行续写,可以与WHERE结合使用

    2.2、TRUNCATE

    语法:TRUNCATE 表名

    删除内容,不删除表结构,但不释放空间,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快,可以理解为 TRUNCATE是删除原来的表并重新创建一个表,而不是逐行删除表中的数据

    2.3、DROP

    语法: drop 表名

    drop语句将表所占用的空间全释放掉,删除表结构 

    执行效率:一般来说按执行速度可分为  DROP>TRUNCATE>DELETE

    下面是许多 SQL 程序员使用 UPDATE DELETE 时所遵循的习惯:
    1、 除非确实打算更新和删除每一行,否则绝对不要使用不带 WHERE子句的UPDATE DELETE 语句。
    2、保证每个表都有主键(如果忘记这个内容,请参阅第 15 章),尽可能像WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)。
    3、 在对 UPDATE DELETE 语句使用 WHERE 子句前,应该先用 SELECT 进 行测试,保证它过滤的是正确的记录,以防编写的WHERE 子句不正确。
    4、 使用强制实施引用完整性的数据库,这样 MySQL 将不允许删除具有与其他表相关联的数据的行。

    五、常见导致错误语句

    1、主键不唯一

    ERROR 1062 (23000): Duplicate entry 'l' for key 'PRIMARY'

    2、不存在的外键

    ERROR 1452(23000) : Cannot add or update a child row :

    3、列值不合法

    ERROR 1265 (01000): Data truncated for column 'xxx' at row 1

    4、无效的日期转换

    ERROR 1292(22007) : Incorrect date value: 'xxx' for column'xxx' at row 1

  • 相关阅读:
    #WEB前端(HTML属性)
    JAVA微信小程序浴室预约系统毕业设计 开题报告
    分享一个基于python的个性推荐餐厅系统源码 餐厅管理系统代码
    python包合集-argparse
    C++ —— 编写Windows钩子,完成屏蔽系统win+d显示/隐藏窗口功能(win功能不影响)。(附完整源码)
    Golang sync/atomic 包的原子操作说明
    SpringMVC初次尝试
    iOS添加Mapbox地图库
    Markdown编辑器语法
    Java继承 学习资料
  • 原文地址:https://blog.csdn.net/jungeCSND/article/details/127221916