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. DOM事件-调用函数

    通过调用函数改变其内容: <!DOCTYPE html> <html lang="en" dir="ltr"> <head> ...

  2. 在 Ubuntu 18.04 下安装 fcitx 及搜狗拼音输入法

    感觉自己傻逼透了,之前在 16.04 时折腾着要装 ibus 和 rime 输入法,现在 18.04 默认安装 ibus 了,又因为 rime 的智能联想太弱,打字不爽,又想装回搜狗一劳永逸... 环 ...

  3. vue和webpack打包 项目相对路径修改

    一般vue使用webpack打包是整个工程的根目录,但是很多情况下都是把vue打包后的文件在某子目录下. 修改: 1,打开index.js assetsPublicPath:'/' 改为: asset ...

  4. IE和Chrome执行javascript对鼠标双击事件的不同响应

    最近在用天地图API帮同学做点开发的工作,主要是基于天地图的API实现违法用地举报的在线地图标绘,要实现的效果如下: 由于是基于天地图API的TPolygonTool工具实现面积量测和多边形绘制功能, ...

  5. Java:[面向对象:继承,多态]

    本文内容: 继承 多态 首发时期:2018-03-23 继承: 介绍: 如果多个类中存在相同的属性和行为,可以将这些内容抽取到单独一个类中,那么多个类(子类)无需再定义这些属性和行为,只要继承那个类( ...

  6. VS 函数,方法上方 引用等显示

    VS有一个这个功能贼好用,喜欢的可以打开看看哦,特别是团队开发,有惊喜哦!

  7. 用Python实现数据结构之优先级队列

    优先级队列 如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了.这样,我们就引入了优先级队列 这 ...

  8. ghostscript远程代码执行漏洞复现

    这两天网上ghostscript又又有漏洞信息了,但是没有poc,于是找找资料把今年8月21日的那个验证下 1.关于ghostscript Ghostscript是一套建基于Adobe.PostScr ...

  9. Shiro-Subject 分析

    Subject反正就好像呈现的视图.所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager:可以把Subject认为是一个门面: ...

  10. Java面试题以及答案精选(架构师面试题)-基础题1

    基础题 一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?1. String是字符串常量,StringBuffer和StringBu ...