SQL语法(DML)

1. 定义:数据操作语言:对表中数据的增删改:insert、delete、update

2. 用法:

  • 插入数据:INSERT INTO

    • 功能:用于向数据表中插入数据

    • 理解:类似于向excel表格中插入数据

    • 语法一:插入多行数据:insert ... value

    • INSERT INTO [ 数据库.] 数据表[(列名)]
      VALUES ( COL1.1, CUL2.1, ... , CULn.1 ),
             ( COL1.2, CUL2.2, ... , CULn.2 ),
               .... ... ... ... ... ... ... 
             ( COL1.m, CUL2.m, ... , CULn.m );
    • 注意1:表名后的列名可以省略不写,但是values中的值必须与表中所有的字段顺序一致

    • 示例1:

    • # 创建一个 学生表(Student)
      CREATE TABLE Student
      (
      s_id VARCHAR(20),
      s_name VARCHAR(20) NOT NULL,
      s_birth VARCHAR(20) NOT NULL, 
      s_sex VARCHAR(10) NOT NULL,
      PRIMARY KEY(s_id)
      );
      
      # 向学生表中插入数据,使用 INSERT INTO 表名 VALUES 方法
      INSERT INTO Student 
      VALUES
             ('01', '赵雷', '1990-01-01', '男'),
             ('02', '钱电', '1990-12-21', '男'),
             ('03', '孙风', '1990-05-20', '男'),
             ('04', '李云', '1990-08-06', '男'),
             ('05', '周梅', '1991-12-01', '女'),
             ('06', '吴兰', '1992-03-01', '女'),
             ('07', '郑竹', '1989-07-01', '女'),
             ('08', '王菊', '1990-01-20', '女');    
      
    • 注意2:表名后的列名如果不省略,那么values后面的值只要与列名一一对应即可,可以不写所有的列名,没写的列为null

    • 示例2:

    • # 创建一个 课程表(Course)
      CREATE TABLE Course
      (
      c_id VARCHAR(20),
      c_name VARCHAR(20),
      t_id VARCHAR(20),
      PRIMARY KEY(c_id)
      );
      
      
      # 向学生表中插入数据,使用 INSERT INTO 表名(列名) VALUES 方法
      
      INSERT INTO Course(c_id, c_name)
      VALUES('01', '语文'),
            ('02', '数学');
      
      INSERT INTO Course(c_id, t_id)
      VALUES('03', '03');
      
    • 语法二:插入单行数据:insert ... set

    • INSERT INTO [ 数据库.] 数据表 
      SET COL1 = value1, COL2 = value2, ...... ;
    • 示例:

    • # 创建一个 教师表(Teacher)
      CREATE TABLE Teacher
      (
      t_id VARCHAR(20),
      t_name VARCHAR(20) NOT NULL DEFAULT '',
      PRIMARY KEY(t_id)
      );
      
      # 向学生表中插入数据,使用 SET 方法
      INSERT INTO Teacher SET t_id = '01', t_name = '张三';
      INSERT INTO Teacher SET t_id = '02', t_name = '李四';
      INSERT INTO Teacher SET t_id = '03', t_name = '王五';
    • 注意:插入数据insert的set方法仅适合于单条数据插入,相对values对于多条数据的插入效率要差一些。

    • 语法3:保存查询数据insert:select

    • INSERT INTO [ 数据库.] 数据表 
      SELECT ……
    • 功能:将一条查询语句的结果保存写入一张表中

  • 删除数据:DELETE

    • 功能:根据条件删除数据表特定的行

    • 理解:删除数据表中的数据

    • 语法:

    • DELETE FROM [ 数据库.]数据表 [WHERE 条件]
    • 示例:

    • -- 删除 Teacher 表中的所有数据
      DELETE FROM Teacher ;
      
      -- 删除 Student 表中所有男生的数据
      DELETE FROM Student WHERE s_sex = '男';
  • 更新数据:UPDATE

    • 功能:根据条件修改数据表特定的列

    • 理解修改数据表中的数据

    • 语法:

    • UPDATE [ 数据库.]数据表 SET col1 = value1, col2 = value2, ... [WHERE 条件];
    • 示例:

    • # 更新 Course 表中数据
      UPDATE Course 
      SET c_id = '01'
        , c_name = '数学'
        , t_id = '02';
      
      # 更新 Course 表中数据, 使用 WHERE 方法
      UPDATE Course 
      SET c_name = '英语'
      WHERE c_id = '03';
  • 插入更新:REPLACE

    • 功能:如果主键存在就更新,如果不存在就插入。
    • 理解:如果有一张表拥有主键,我想写入一条学生的数据,但是我不知道这个学生的信息是否已经存在了,可以使用replace,其功能可以视为update + insert
    • 语法:
    • REPLACE [ 数据库.]数据表[(列名)] VALUES (单行数据的内容), (单行数据的内容) …… ;

    • 示例:
    • # 已知,我们已经有一张学生表,并向其中插入数据:
      INSERT INTO Student 
      VALUES
             ('01', '赵雷', '1990-01-01', '男'),
             ('02', '钱电', '1990-12-21', '男'),
             ('03', '孙风', '1990-05-20', '男'),
             ('04', '李云', '1990-08-06', '男');
      
      # 如果前提我们不知道某个学生的信息是否存在,需求是如果存在就更新信息,如果不存在就插入信息
      -- 此时我们不知道 ('03', '孙风', '1990-05-20', '男') 这条信息是否存在,如果使用 insert 方法
      INSERT INTO Score VALUES ('01', '01', 80);
      -- 此时显然行不通,使用update插入一条不存在的数据 ('05', '周梅', '1991-12-01', '女') 显然也行不通,此时需要用到 replace 方法:
      
      REPLACE INTO db_test_bigdata01.tb_student09
      VALUES ('05', '周梅', '1991-12-01', '女'),
             ('06', '吴兰', '1992-03-01', '女'),
             ('07', '郑竹', '1989-07-01', '女'),
             ('08', '王菊', '1990-01-20', '女');    
      
      

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值