【MySQL】——数据定义

简介: 【MySQL】——数据定义

🎯模式的定义与删除

🥽定义模式

  • 定义模式实际上定义了一个命名空间。
  • 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
  • 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]


🥽删除模式

  • DROP SCHEMA <模式名>
  • CASCADE(级联)
  • 删除模式的同时把该模式中所有的数据库对象全部删除
  • RESTRICT(限制)
  • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
  • 仅当该模式中没有任何下属的对象时才能执行。

🎯基本表的定义、删除与修改

🥽定义基本表

CREATE TABLE <表名>


     (<列名> <数据类型>[ <列级完整性约束条件> ]


     [,<列名> <数据类型>[ <列级完整性约束条件>] ]


  …


     [,<表级完整性约束条件> ] );


  • <表名>:所要定义的基本表的名字
  • <列名>:组成该表的各个属性(列)
  • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
  • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
  • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

🥽数据类型

  • SQL中域的概念用数据类型来实现
  • 定义表的属性时需要指明其数据类型及长度
  • 选用哪种数据类型
  • 取值范围
  • 要做哪些运算

c9595c9971097d4947fb8984daf7cb6c_63757a874d654b37b5532bd8fc52840f.png


🥽模式与表

  • 每一个基本表都属于某一个模式
  • 一个模式包含多个基本表
  • 定义基本表所属模式
  • 方法一:在表名中明显地给出模式名

       Create table"S-T".Student(......);     /*模式名为 S-T*/


       Create table "S-T".Cource(......);


       Create table "S-T".SC(......);


  • 方法二:在创建模式语句中同时创建表
  • 方法三:设置所属的模式
  • 创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式
  • 关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名
  • 若搜索路径中的模式名都不存在,系统将给出错误
  • 显示当前的搜索路径: SHOW search_path;
  • 搜索路径的当前默认值是:$user, PUBLIC
  • 数据库管理员用户可以设置搜索路径,然后定义基本表

SET search_path TO "S-T",PUBLIC;


Create table Student(......);  


结果建立了S-T.Student基本表。


关系数据库管理系统发现搜索路径中第一个模式名S-T, 就把该模式作为基本表Student所属的模式。


🥽修改基本表

ALTER TABLE <表名>


[ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]


[ ADD <表级完整性约束>]


[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]


[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]


[ALTER COLUMN <列名><数据类型> ] ;


  • <表名>是要修改的基本表
  • ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
  • DROP COLUMN子句用于删除表中的列
  • 如果指定了CASCADE短语,则自动删除引用了该列的其他对象
  • 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
  • DROP CONSTRAINT子句用于删除指定的完整性约束条件
  • ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

🥽删除基本表

DROP TABLE <表名>[RESTRICT| CASCADE];


  • RESTRICT:删除表是有限制的。
  • 欲删除的基本表不能被其他表的约束所引用
  • 如果存在依赖该表的对象,则此表不能被删除
  • CASCADE:删除该表没有限制。
  • 在删除基本表的同时,相关的依赖对象一起删除


6ab93e5be9b0e526286b689ff2acf94f_9d9688464790490da44074c62c465043.png

🎯索引的建立与删除

  • 建立索引的目的:加快查询速度
  • 关系数据库管理系统中常见索引
  • 顺序文件上的索引
  • B+树索引(动画《B+树的增删改》)
  • 散列(hash)索引
  • 位图索引
  • 特点:
  • B+树索引具有动态平衡的优点
  • HASH索引具有查找速度快的特点

🥽建立索引

语句格式


CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);


<表名>:要建索引的基本表的名字 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔


<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC


UNIQUE:此索引的每一个索引值只对应唯一的数据记录


CLUSTER:表示要建立的索引是聚簇索引

🥽修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>

🥽删除索引

DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的描述。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
650 0
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
937 10
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
703 28
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
388 0
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为&#39;0&#39;或&#39;1&#39;,查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
|
SQL 关系型数据库 MySQL
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
1034 9
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
412 0

推荐镜像

更多