创建表
CREATE TABLE table_name
(
col_name_1 data_type not null/auto_increment/unique/..,
...
)ENGINE=iNNOdb
一些关键词
关键词 | 说明 |
---|---|
NOT NULL | 不允许填入空值 |
AUTO_INCREMENT | 自动增量 |
DEFAULT | 指定默认值 |
引擎类型
为不同的任务选择正确的引擎能获得良好的功能和林灵活性
引擎 | 说明 |
---|---|
InnonDB | 事务处理引擎,不支持全文本搜索 |
MEMORY | 功能等同于MyISAM但由于数据存储在内存中,速度很快(特别适合于临时表) |
MyISAM | 性能极高的引擎,支持全文本搜索,但不支持事务处理 |
引擎类型可以混用,但是外键不能跨引擎
更新表
理想状态下,当表中存储数据以后,该表就不应该再被更新
-- 添加一个列
ALTER TABLE table_name
ADD col_name type 关键字
-- 删除一个列
ALTER TABLE table_name
DROP COLUMN col_name
-- 添加表级定义
ALTER TABLE table_name
ADD CONSTRAINT key_name
FOREIGN KEY (col_name_1) REFERENCES table_name_2(col_name_2)
删除表
删除整个表而不是其内容
DROP TABLE table_name
重命名表
RENAME TABLE old_name TO new_name
使用视图
视图
- 视图是虚拟的表
我觉得试图就是封装了select语句- 视图的应用
- 重用SQL语句
- 简化复杂的SQL操作
- 使用表的组成部分而不是整个表
- 保护数据(可以授予用户表的特定部分访问权限
- 更改数据格式和表示
- 性能问题:每次使用视图时,都必须处理查询执行时所需的任意一个检索,在部署使用大量视图应用前,应该进行测试
- 视图的规则和限制
- 视图必须唯一命名(不能和表名重复
- 对于视图的数量没有限制
- 视图可以嵌套
- order by 可以使用在视图中
- 试图不能索引,也不能关联触发器或默认值
- 视图和表可以一起使用
使用视图
CREATE VIEW view_name AS
SELECT语句
更新视图
- 通常,视图是可以更新的,对视图的更新,实际上是对基本表的更新
- 如果视图定义有以下操作,则不能对其进行更新
- 分组
- 联结
- 子查询
- 并
- 聚集函数
- distinct
- 一般应该将视图用于数据检索,而不用与更新