MySQL 增删查改

目录

MySQL 增删查改

1 select

1.1 检索单个列

select prod_name
from products;

1.2 检索多个列

select prod_id, prod_name, prod_price
from products;

1.3 检索所有列

select *
from products;

1.4 检索不同的行

select distinct vend_id
from products;

1.5 限制结果

select prod_name
from products
limit 5;

此语句使用 select 语句检索单个列。limit 5 指示 MySQL 返回不多于 5 行。

select prod_name
from products
limit 5, 5;

limit 5, 5 指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。

2 insert

顾名思义,insert 是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询的结果。

2.1 插入完整的行

insert into customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
values('Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', null, null);

2.2 插入多个行

insert into customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country)
values('Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA');

insert into customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country)
values('M. Martian', '42 Galaxy Way', 'New York', 'NY', '11213', 'USA');

2.3 插入检索出的数据

假如你想从另一表中合并客户列表到你的 customers 表。不需要每次读取一行,然后再将它用INSERT插入,可以如下进行:

insert into customers(cust_id,
    cust_contact,
    cust_email,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country)
select cust_id,
    cust_contact,
    cust_email,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
from custnew;

3 update

为了更新(修改)表中的数据,可使用 update 语句。可采用两种方式使用 update

  • 更新表中特定行;
  • 更新表中所有行。

3.1 更新表中特定行

update customers
set cust_email = 'joy@example.com'
where cust_id = 10005;

3.2 更新表中所有行

update customers
set cust_email = 'joy@example.com';

3.3 更新多个列

update customers
set cust_name = 'the fudds',
    cust_email = 'joy@example.com'
where cust_id = 10005;

3.4 删除指定的列

为了删除某个列的值,可设置它为 null(假如表定义允许 null 值)。

update customers
set cust_email = null
where cust_id = 10005;

4 delete

为了从一个表中删除(去掉)数据,使用 delete 语句。可以两种方式使用 delete

  • 从表中删除特定的行;
  • 从表中删除所有行。

4.1 删除指定的行

delete from customers
where cust_id = 10006;

4.2 删除所有行

delete from customers;

5 更新和删除的指导原则

下面是许多 SQL 程序员使用 updatedelete 时所遵循的习惯。

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带 where 子句的 updatedelete 语句。
  • 保证每个表都有主键,尽可能像 where 子句那样使用它(可以指定各主键、多个值或值的范围)。
  • 在对 updatedelete 语句使用 where 子句前,应该先用 select 进行测试,保证它过滤的是正确的记录,以防编写的 where 子句不正确。
  • 使用强制实施引用完整性的数据库,这样 MySQL 将不允许删除具有与其他表相关联的数据的行。
上一篇:《SQL学习指南》


下一篇:Python特征生成的两大方式