MySQL 学习笔记(4)— 组合查询、子查询、插入数据、更新/删除表数据、增加/删除表中的列以及重命名表

1. 组合查询

组合查询

1、表的加减法
表的加法,即求 productproduct2 的并集,UNION 运算会除去重复的记录

SELECT product_id, product_name FROM product 
UNION 
SELECT product_id, product_name FROM product2 

要保留重复的行时,使用 UNION ALL

SELECT product_id, product_name FROM product 
UNION ALL
SELECT product_id, product_name FROM product2 

注意事项:
1、作为运算对象的记录的列数必须相同
2、作为运算对象的记录中列的数据类型必须一致
3、可以使用任何SELECT语句,但是ORDER BY子句只能在最后使用一次

2. 插入数据

插入数据
SQL 主要提供了两种增加数据的方法:

  • INSERT INTO … VALUES … ;
  • INSERT INTO … SELECT … ;

首先,第一种形式的语法如下:

INSERT INTO t(col1, col2, ...)
VALUES (value1, value2, ...);

其中,t 是表名;VALUES 子句中提供的值与 INSERT INTO 中的字段数量必须相同,并且数据类型能够兼容。如下示例:

INSERT INTO product (product_id, product_name, product_type, 
					sale_price, purchase_price, regist_date) 
	VALUES ('009', '打印机', '办公用品', 5000, 2000, '2010-03-11');

如果 VALUES 值列表与表中的字段顺序完全一致,可以省略字段列表。

表中插入数据,是按行插入的。


START TRANSACTION; --  事物开始的标志

INSERT INTO product 
      VALUES ('001', 'T恤衫', '衣服', 1000, 500, NULL);
或者连续插入两行
INSERT INTO product (product_id, product_name, product_type, 
					sale_price, purchase_price, regist_date) 
	VALUES ('010', '打印机', '办公用品', 5000, 2000, '2010-03-11'),
		('011', '篮球', '体育用品', 200, 50, '2014-08-23');
COMMIT;	--  事物结束的标志 COMMIT提交  或者 ROLLBACK 取消提交  

3. 更新和删除数据

在这里插入图片描述

3.1 更新数据

SQL 使用 UPDATE 语句更新表中的数据,基本语法如下:

UPDATE t
   SET col1 = expr1,
       col2 = expr2,
       ...
[WHERE condition];

其中,t 是表名;SET 子句指定了需要更新的列和更新后的值,多个字段使用逗号进行分隔;只有满足 WHERE 条件的数据行才会被更新;如果没有指定条件,将会更新表中所有行。

更新数据库示例:

UPDATE addressbook_new SET country = '美国' WHERE regist_no = 2;

UPDATE addressbook_new SET country = '德国';
UPDATE addressbook_new SET country = NULL;

# 多列更新

UPDATE addressbook_new 
   SET country = '中国', address='北京', tel_no = '110';

3.2 删除数据

SQL 中使用 DELETE 语句删除数据:

DELETE FROM t
[WHERE conditions];

只有满足 WHERE 条件的数据才会被删除;如果省略 WHERE 条件,将会删除表中所有的数据。

数据的删除(只删除表中的数据,表仍然存在)

DELETE FROM addressbook_new WHERE regist_no = 1;

DELETE FROM addressbook_new;

DELETETRUNCATE 区别:

  • DELETE 语句通过 WHERE 条件从表中删除指定的数据;如果不指定条件将会删除所有的数据。DELETE 属于数据操作语言(DML),删除数据后,可以选择提交或者回滚。如果删除的数据较多时速度比较慢。
  • TRUNCATE 语句用于快速删除表中的所有数据,并且释放表的存储空间。TRUNCATE 属于数据定义语言(DDL),操作默认提交无法回滚。TRUNCATE 相当于删除表并重建,通常执行速度很快。

4. 删除表结构和数据

删除表结构和数据使用 DROP TABLE 语句。

DROP TABLE product;

5. 添加删除表中的列

添加表中列的语句

ALTER TABLE addressbook 
	ADD COLUMN (列定义)postal_code CHAR(8)  NOT NULL;

删除表中列的语句

ALTER TABLE addressbook DROP COLUMN (列名)postal_code 

6. 重命名表

RENAME  TABLE product TO new_product;

7. 子查询

子查询就是将用来定义视图的 SELECT 语句直接作用于 FROM子句, 子查询作为内层查询会首先执行。

SELECT product_type, cnt_product 
FROM (SELECT product_type, COUNT(*) 
		AS cnt_product 
		FROM product 
		GROUP BY product_type ) 
AS product_sum;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值