zoukankan      html  css  js  c++  java
  • 《MySQL必知必会》[04] 表的操作和视图的使用


    1、表的操作

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

    1.1 创建表

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

    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;

    创建表的语句中,各列的定义之间用逗号隔开,表名之后,跟列的数据类型,和更详细的定义,如 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 具体的更改操作;

    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);

    1.3 删除表

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

    1.4 重命名表

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



    2、视图的使用

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

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

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

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


  • 相关阅读:
    c++智能指针的一些文章
    c++ template(8)模版多态
    空指针赋值分区
    windbg调试命令
    c++ template(5)模板实战
    GetStockObject 理解
    c++ template(6)模板术语
    c++ template(71)模板参数声明
    DirectDraw教程资料
    c++ template(9)trait和Policy
  • 原文地址:https://www.cnblogs.com/deng-cc/p/7977883.html
Copyright © 2011-2022 走看看