八 : 插入删除更改记录
## 1. 不指定列名
INSERT INTO customers
VALUES (NULL, 'pep', '100qwe', 'ca');
## 2. 指定列名:
INSERT INTO customers(cust_address, cust_city, cust_state, cust_zip)
VALUES (NULL, 'pep', '100qwe', 'ca');
UPDATE customers
SET cust_name = 'the fuds', cust_email = 'email@163.com
WHERE cust_id = 1005;
--------------------------删除数据------------------------------
## 一定不要忘记WHERE语句!!!, 不然会删除整个表的数据
DELETE FROM customers
WHERE cust_id = 10006;
## 更新删除的指导原则:
1. 除非特殊情况, 不然不要使用没有 WHERE 的 UPDATE 和 DELETE
2. 保证每个表都有主键, 方便唯一区分记录
3. UPDATE 和 DELETE 的 WHERE前, 先使用SELECT检验即将操作的记录是正确的
九: 对于表的操作
## 创建表
CREATE TABLE customers
(
列名1 数据类型(长度) (NOT) NULL AUTO_INCREMENT ,
列名2 数据类型(长度) (NOT) NULL DEFAULT 1 ,
列名3 数据类型(长度) (NOT) NULL ,
列名4 数据类型(长度) (NOT) NULL ,
.....
PRIMARY KEY (某一列)
) ENGINE = InnoDB;
## 1. (NOT) NULL: 定义此列是否可以为空
## 2. AUTO_INCREMENT: 定义此列是否自增
## 3. PRIMARY KEY (某一列): 定义主键
## 4. DEFAULT 1: 定义默认值
## 5. ENGINE = InnoDB: 定义引擎类型
- InnoDB: 可靠地事务处理引擎
- MEMORY: 功能等同于MyISAM, 但是使用内存存储, 所以速度很快, 适用于临时表
- MyISAM: 性能极高的引擎, 支持全文本搜索, 不支持事务处理
## 更新表: 常用于添加外键
ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREIGN KEY (order_num) REFERENCES orders (order_num)
---------------------------------------------------------------------
## 删除表
DROP TABLE customers2;
## 重命名表
RENAME TABLE customers2 TO customers3;
十: 视图和存储过程
--------------------------------视图-----------------------------------
## 介绍 : 比如使用SELECT查询出一些数据, 然后为这个查询定义一个别名, 这样就可以用这个别名代指这个查询, 也叫做视图
## 视图算一个虚拟表, 方便进行查询
## 常见应用场景:
- 重用SQL语句
- 简化复杂的SQL操作
- 使用表的组成部分而非整表
- 保护数据: 指定特定可访问的数据
- 更改数据显示格式
## 注意: 视图本质是一个SQL查询, 那么可能会造成性能影响, 应注意使用
- 视图名唯一, 视图目录没有限制
- 创建视图需要的权限需要保证
- 视图中可以有ORDER BY, 但是会被外面的ORDER BY覆盖
## 如何使用视图:
- 创建视图 : CREATE VIEW
- 查看创建视图的语句: SHOW CREATE VIEW viewname;
- 删除视图: DROP VIEW viewname;
-------------------------存储过程-------------------------------------
## 介绍: 就是一条或多条SQL语句的集合, 可视为批文件
## 为什么要使用: 简单, 安全, 高性能
- 简化复杂的操作,
- 保证数据完整性, 防止错误
- 简化对变动的管理
- 提高性能: 存储过程比单独sql快
## 如何使用:
## 1. 执行存储过程:
CALL productpricing
(
@pricelow #这个是变量名
@pricehigh
@priceave
)
## 2. 创建存储过程
CREATE PROCEDURE 存储名字
(
IN 变量名 变量类型, # IN表示传入数据
OUT 变量名 变量类型 # OUT表示输出对象
)
BEGIN
SQL语句
END;