1、表的操作

现在创建表的工作大部分还是使用数据库管理工具来完成的,虽然其本质也是使用的SQL,但是方便许多。现在就来简单谈谈使用SQL语句操作表。

1.1 创建表

 创建表的基本语句是(如果仅想在一个表不存在时创建它,则在表名后给出关键字 IF NOT EXISTS 即可):
CREATE TABLE R (
A1<数据类型>,
A1<数据类型>,
...
An<数据类型>
);
6
 
1
CREATE TABLE R ( 
2
  A1<数据类型>,
3
  A1<数据类型>,
4
  ...
5
  An<数据类型>
6
);

e.g.
CREATE TABLE vendors
(
vend_id int NOT NULL AUTO_INCREMENT,
vend_name char(50) NOT NULL,
vend_state char(5) NULL,
vend_country char(50) NULL DEFAULT 'China',
PRIMARY KEY (vend_id)
) ENGINE=InnoDB;
8
 
1
CREATE TABLE vendors
2
(
3
  vend_id      int      NOT NULL AUTO_INCREMENT,
4
  vend_name    char(50) NOT NULL,
5
  vend_state   char(5)  NULL,
6
  vend_country char(50) NULL DEFAULT 'China',
7
  PRIMARY KEY (vend_id)
8
) ENGINE=InnoDB;

创建表的语句中,各列的定义之间用逗号隔开,表名之后,跟列的数据类型,和更详细的定义,如 NOT NULL 要求列值不得为空,UNIQUE表列值唯一不得重复。

  • 每个列或者是NULL列,或者是NOT NULL列,这是在创建表时就要定义的,如果不指定,则默认是允许NULL值;
  • 如果以多个列组成主键,则应以逗号隔开,如 PRIMARY KEY (order_num, order_item)
  • AUTO_INCREMENT 即本列每当增加一行时自动增量,每个表只允许一个AUTO_INCREMENT列,且必须被索引
  • last_insert_id()函数可以获取最后一个AUTO_INCREMENT值
  • DEFAULT 用于定义未指定值时使用的默认值
  • ENGINE=InnoDB 表指定具体管理和处理数据的内部引擎,可以省略,则使用默认引擎
    • InnoDB:可靠的事务处理引擎,但不支持全文本搜索
    • MyISAM:性能极高的一个引擎,支持全文本搜索,但是不支持事务处理
    • MEMORY:功能等同于MyISAM,但数据存储在内存而非磁盘,速度很快(特别适合于临时表)

1.2 更新表

更新表的基本语句是:
ALTER TABLE R 具体的更改操作;
1
 
1
ALTER TABLE R 具体的更改操作;

e.g.
//添加列
ALTER TABLE vendors
ADD vend_phone CHAR(20); //删除列
ALTER TABLE vendors
DROP COLUMN vend_phone; //添加外键
ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREIGN KEY (order_num) REFERENCES orders (order_num);
x
 
1
//添加列
2
ALTER TABLE vendors
3
ADD vend_phone CHAR(20);
4

5
//删除列
6
ALTER TABLE vendors
7
DROP COLUMN vend_phone;
8

9
//添加外键
10
ALTER TABLE orderitems
11
ADD CONSTRAINT fk_orderitems_orders
12
FOREIGN KEY (order_num) REFERENCES orders (order_num);

1.3 删除表

删除表的基本语句是:
DROP TABLE R;
1
 
1
DROP TABLE R;

1.4 重命名表

重命名表的基本语句是:
RENAME TABLE R1 TO R2;
1
 
1
RENAME TABLE R1 TO R2;



2、视图的使用

视图并不是真实存在的表,它是虚拟的表,只包含使用是动态检索数据的查询。视图通常是按不同的应用领域或不同的用户群体进行定义,从而使用户从数据库中澎湃的数据中超超脱出来,只关心自己所需要的数据。

创建视图的基本语句是:
CREATE VIEW <视图名> AS <子查询>;
 
1
CREATE VIEW <视图名> AS <子查询>;

利用视图,可以编写一些基础的SQL,根据需要配合SELECT语句,以隐藏复杂的SQL,起到简化的目的。

注意:
  • 视图实际上并不包含数据,而是每次使用时再去执行查询,所以逻辑过于复杂的视图,同样会性能下降
  • 视图可以嵌套,即可以从其他视图中查询数据构造新的视图
  • 视图可以和表一起使用,如连结表和试图的SELECT语句
  • 视图不能索引


《MySQL必知必会》[04] 表的操作和视图的使用的更多相关文章

  1. 《MySQL必知必会》官方提供的数据库和表

    数据用于配合<MySQL必知必会>(MySQL Crash Course)这本书使用,配套SQL文件也可在Ben Forta网站下载. Ben Forta网址:http://forta.c ...

  2. MySQL必知必会-官方数据库表及SQL脚本导入生成

    最近在复习SQL语句,看的是MySQL必知必会这本书,但是发现附录中只有表设计,没有表的具体数据.所以在学习相应的语句中体验不是很好,去网上查了数据库的内容,自己慢慢导入到了数据库中.把表放出来作为参 ...

  3. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  4. mysql学习--mysql必知必会

      上图为数据库操作分类:     下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...

  5. MySQL使用和操作总结(《MySQL必知必会》读书笔记)

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

  6. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  7. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  8. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  9. mysql必知必会系列(一)

    mysql必知必会系列是本人在读<mysql必知必会>中的笔记,方便自己以后查看. MySQL. Oracle以及Microsoft SQL Server等数据库是基于客户机-服务器的数据 ...

随机推荐

  1. eclipse显示代码行数

    最近做的手机APP正在进行最后一部分了,在一个类中估计要写上千行代码,来回的拉动滚动条太麻烦了,于是发现为什么我得eclipse不显示代码行数呢  其他C什么的编译器都显示的. 于是百度了一下,一下子 ...

  2. [Objective-C] 创建常量

    新博客wossoneri.com #define宏定义 #define是一条预编译指令, 编译器在编译阶段前期会将所有使用到宏的地方简单地进行替换. 在预处理器里进行文本替换,没有类型,不做任何类型检 ...

  3. system.transfer.list版本进化

    从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版 ...

  4. JavaScript大杂烩9 - 理解BOM

    毫无疑问,我们学习JavaScript是为了完成特定的功能.在最初的JavaScript类型系统中,我们已经分析过JavaScript在页面开发中充当着添加逻辑的角色,而且我们知道JavaScript ...

  5. MySQL 复制夯住一例排查以及原理探讨

    目录 目录 一 引子 二 故障分析 三 故障解决 四 原理探讨 五 小结 文/温国兵 一 引子 研发反应,有台从库和主库不同步.由于业务读操作是针对从库的,数据不同步必定会带来数据的不一致,业务获取的 ...

  6. .net core HttpContext(Http上下文)

    在.NET Core中,只有Controller才能直接使用 HttpContext ,其他地方需要通过HttpContextAccessor来访问

  7. Cockpit subscriptions on CentOS 7 - This system is not registered with an entitlement server. You can use subscription-manager to register.

    下午安装 cockpit 时,使用 yum 工具的时候哦,出现如下信息: This system is not registered with an entitlement server. You c ...

  8. Hive-1.2.1_03_DDL操作

    Hive官方文档:Home-UserDocumentation Hive DDL官方文档:LanguageManual DDL 参考文章:Hive 用户指南 注意:各个语句的版本时间,有的是在 hiv ...

  9. C++基础算法学习——熄灯问题

    有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行– 每个按钮的位置上有一盏灯– 当按下一个按钮后, 该按钮以及周围位置(上边, 下边,左边, 右边)的灯都会改变状态26熄灯问题 POJ1222– ...

  10. February 6th, 2018 Week 6th Tuesday

    To be is to be perceived. 存在即被感知. How to interpret this quote? Maybe it means that everything in you ...