跳至主要內容

SQL语句

LincZero大约 1 分钟

SQL语句

目录

DML数据操作语言

  • insert
  • delete
  • updata

增删改查CRUD(Create Retrieve Updata Delete)

INSERT(插入)

  • 语法

    • insert into 表名 (字段名1,字段名2,字段名3,...) values(值1,值2,值3,...);
    • 其中字段数量和值数量相同、数据类型要对应相同
    • 字段名可省略,默认为所有字段名的意思
  • 标准示例

    •   INSERT INTO customers (first_name, last_name, birth_date, address, city, state)  -- 小括号可选
        VALUES (DEFAULT, 'John', 'Smith', '1990-01-01', NULL)  -- 自动增加的id给DEFAULT。设置默认NULL的可空值给DEFAULT或NULL都行
      
  • 插入多行

    •   INSERT INTO products (name, quantity)
        VALUES ('Product1', 10),('Product2', 15),('Product3', 20)  -- 插入多行记录
      
  • 指定表插入

    •   INSERT INTO orders_archived
        SELECT *
        FROM orders
        WHERE order_date < '2019-01-01'
      
  • 其他——最末插入查询

    •   SELECT LAST_INSERT_ID()  -- 最末插入查询
      

UPDATE(更新,更改值)

  • 语法

    • update 表名 set 字段名1=值1,字段名2=值2... where 条件;
  • 示例

    •   UPDATE invoices
        SET payment_total = 10, payment_date = '2019-03-01'
        WHERE invoice_id = 1
      

DELETE(删除)

  • 语法

    • delete from 表名 where 条件;
  • 示例

    •   DELETE FROM invoices
        WHERE invoice_id = 1
      
  • 怎么删除大表?(几亿)

    • 删除时间非常长,因为没有释放数据所占空间
    • truncate table demotable;,表的截断
      • delete from demotable比较:特点是速度快,但表被截断、不可回滚(即无法恢复,需慎重,要再三问清楚)
      • drop table demotable;比较,truncate直接截断表中的数据而非删除表