MySQL必知必会 | 表和视图

创建表

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
  • 一般应该将视图用于数据检索,而不用与更新

你可能感兴趣的:(mysql,数据库,sql)