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语句
    • 视图不能索引


  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/deng-cc/p/7977883.html
Copyright © 2011-2022 走看看