zoukankan      html  css  js  c++  java
  • 管理数据库与表

    一:数据库的创建与删除

    1.介绍

      数据库是用于存储和操作诸如表,数据库视图,触发器,存储过程等数据的对象的集合。

    2.创建数据库

      

    3.显示数据库

      SHOW DATABASES语句显示MySQL数据库服务器中的所有数据库。

      其中:

      information_schemaperformance_schemamysql是我们安装MySQL时可用的默认数据库。

    4.使用数据库

      

    5.删除数据库

      

    二:表类型与存储引擎

    1.介绍

      了解MySQL中每个表类型的功能至关重要,以便您可以有效地使用它们来最大限度地提高数据库的性能。

    2.存储引擎

      每个存储引擎都有自己的优点和缺点。了解每个存储引擎功能至关重要,并为表选择最合适的功能,以最大限度地提高数据库的性能。

    • MyISAM
    • InnoDB
    • MERGE
    • MEMORY(HEAP)
    • ARCHIVE
    • CSV
    • FEDERATED

    3.Myisam  

      MyISAM扩展了以前的ISAM存储引擎。 MyISAM表针对压缩和速度进行了优化。 MyISAM表也可以在平台和操作系统之间移植。

      MyISAM表的大小可达256TB,这个数据里是非常巨大的。 此外,MyISAM表可以压缩为只读表以节省空间。 在启动时,MySQL会检查MyISAM表是否有损坏,甚至在出现错误的情况下修复它们。MyISAM表不是事务安全的。

      在MySQL 5.5之前,MyISAM是创建表但是不用明确指定存储引擎时的默认存储引擎。 从版本5.5起,MySQL使用InnoDB作为默认存储引擎。

    4.innoDB

      InnoDB表完全支持符合ACID和事务。 它们也是性能最佳的。InnoDB表支持外键,提交,回滚,前滚操作。InnoDB表的大小最多可达64TB

      像MyISAM一样,InnoDB表可以在不同的平台和操作系统之间移植。如果需要,MySQL还会在启动时检查和修复InnoDB表。

    5.MERGE

      MERGE表是将具有相似结构的多个MyISAM表组合到一个表中的虚拟表。MERGE存储引擎也被称为MRG_MyISAM引擎。 MERGE表没有自己的索引; 它会使用组件表的索。

      使用MERGE表,可以在连接多个表时加快性能。MySQL只允许您对MERGE表执行SELECTDELETEUPDATEINSERT操作。如果在MERGE表上使用DROP TABLE语句,则仅删除MERGE规范。基础表不会受到影响。

    6.Memory

      内存表存储在内存中,并使用散列索引,使其比MyISAM表格快。内存表数据的生命周期取决于数据库服务器的正常运行时间。内存存储引擎以前称为HEAP

    7.Archive

      归档存储引擎允许将大量用于归档目的的记录存储为压缩格式以节省磁盘空间。

      归档存储引擎在插入时压缩记录,并在读取时使用zlib库对其进行解压缩。

      归档表只允许INSERTSELECT语句。 ARCHIVE表不支持索引,因此需要完整的表扫描来读取行。

    8.CSV

      CSV存储引擎以逗号分隔值(CSV)文件格式存储数据。

       CSV表格提供了将数据迁移到非SQL应用程序(如电子表格软件)中的便捷方式。

      CSV表不支持NULL数据类型。 此外,读操作需要全表扫描。

    9.FEDERATED

      FEDERATED存储引擎允许从远程MySQL服务器管理数据,而无需使用集群或复制技术。

      本地联合表不存储任何数据。

       从本地联合表查询数据时,数据将从远程联合表自动拉出。

    三:创建表

    1.语法

      

      InnoDB表类型带来了诸如ACID事务,引用完整性和崩溃恢复等关系数据库管理系统的诸多好处。

    2.定义列

      

      说明:

    • column_name指定列的名称。每列具有特定数据类型和大小,例如:VARCHAR(255)
    • NOT NULLNULL表示该列是否接受NULL值。
    • DEFAULT值用于指定列的默认值。
    • AUTO_INCREMENT指示每当将新行插入到表中时,列的值会自动增加。每个表都有一个且只有一个AUTO_INCREMENT列。

    3.如果定义为主键

      

    四:序列

    1.介绍

      使用MySQL序列为表的ID列自动生成唯一编号。

      在MySQL中,序列是以升序生成的整数列表,即1,2,3 ...许多应用程序需要序列来生成主要用于识别的唯一数字。

      要自动在MySQL中创建序列,可以在列上设置AUTO_INCREMENT属性,这通常是主键列。

    2.AUTO_INCREMENT的使用规则

      (这个三点都要注意,以前倒是没注意)

    • 每个表只有一个AUTO_INCREMENT列,其数据类型通常为整数。
    • 必须对AUTO_INCREMENT列进行索引,它可以是PRIMARY KEYUNIQUE索引。
    • AUTO_INCREMENT列必须具有NOT NULL约束。当您为列设置AUTO_INCREMENT属性时,MySQL会自动将NOT NULL约束隐式添加到列中。

    3.序列原理

    • AUTO_INCREMENT列的起始值为1,当您向列中插入NULL值或在INSERT语句中省略其值时,它将增加1
    • 要获取最后生成的序列号,请使用LAST_INSERT_ID()函数。 我们经常要后续语句中使用最后一个插入ID,例如将数据插入到表中。 最后生成的序列在会话中是唯一的。 换句话说,如果另一个连接生成序列号,从连接中可以使用LAST_INSERT_ID()函数获取它。
    • 如果将新行插入到表中并指定序列列的值,如果序列号不存在于列中,则MySQL将插入序列号,如果序列号已存在,则会发出错误。 如果插入大于下一个序列号的新值,MySQL将使用新值作为起始序列号,并生成大于当前值的唯一序列号。这会在序列中产生一段空白(不连续)。
    • 如果使用UPDATE语句将AUTO_INCREMENT列中的值更新为已存在的值,如果该列具有唯一索引,则MySQL将发出重复键错误。 如果将AUTO_INCREMENT列更新为大于列中现有值的值,MySQL将使用最后一个插入序列号加1的值作为下一行列号值。 例如,如果最后一个插入序列号为3,然后又将其更新为10,那么新插入行的序列号不是11,而是4

    • 如果使用DELETE语句删除最后插入的行,MySQL可能会也可能不会根据表的存储引擎重复使用已删除的序列号。 如果您删除一行,则MyISAM表不会重复使用已删除的序列号,例如,如果删除表中的最后一个插入ID10,则MySQL仍会为新行生成11个下一个序列号。 与MyISAM表类似,InnoDB表在行被删除时不重复使用序列号。

    五:Alter修改表结构

    1.介绍

      ALTER TABLE语句来更改现有表结构(如添加或删除列,更改列属性等)。

      

    • 首先,在ALTER TABLE子句之后指定要更改的表名称。
    • 其次,列出一组要应用于该表的操作。操作可以是添加新列,添加主键,重命名表等任何操作。ALTER TABLE语句允许在单个ALTER TABLE语句中应用多个操作,每个操作由逗号()分隔。

    2.示例表

      

    3.为列设置自增

      

    4.添加新的列

      添加一个名为complete的新列,以便在任务表中存储每个任务的完成百分比。

      

      注意到after。

    5.删除列

      

    6.重命名表

      将tasks表重命名为work_items表。

      

    六:重命名表

    1.介绍

      使用MySQL RENAME TABLE语句和ALTER TABLE语句重命名表。

      要更改一个或多个表,我们使用RENAME TABLE语句:

        

      除了表之外,我们还可以使用RENAME TABLE语句来重命名视图

      在执行RENAME TABLE语句之前,必须确保没有活动事务或锁定表

      请注意,不能使用RENAME TABLE语句来重命名临时表,但可以使用ALTER TABLE语句重命名临时表。

      在安全性方面,我们授予旧表的任何权限必须手动迁移到新表。

      必须手动调整引用该表的其他数据库对象,如视图存储过程触发器外键约束等。

      

  • 相关阅读:
    第九届蓝桥杯JavaA组省赛真题
    Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)
    Eclipse+Qt开发环境设置(Linux和Win)
    Visual Studio 2005安装qt-win-commercial-src-4.3.1,并设置环境变量
    在VC6.0中编译头文件时产生moc文件
    Qt配置信息设置(QSettings在不同平台下的使用路径)
    应对业务需求变化?
    开发环境准备:Ruby on Rails开发环境配置
    VS2013中Python学习环境搭建
    JQUERY 插件开发——MENU(导航菜单)
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8324018.html
Copyright © 2011-2022 走看看