1、九个动词完成核心功能
SQL功能 | 动词 |
---|---|
数据查询 | select |
数据定义 | creat、drop、alter |
数据操纵 | insert、update、alter |
数据控制 | grant、revoke |
2、关系数据库三级模式结构
外模式对应视图和部分基本表,模式对应基本表,内模式对应存储文件。
基本表:独立存在的表,在SQL中一个关系对应一个基本表。
视图:从一个或几个基本表导出来的表。本身不独立存储在数据库中,即数据库中只存放视图的定义而不存在存放视图对应的数据。这些数据仍然存放在导出视图的基本表中。故视图是一个虚表。视图在概念上与基本表等同,可在视图上再定义视图。
用户可用SQL对基本表和视图进行查询或其他操作,基本表和视图一样,都是关系。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
3、数据定义
模式、外模式和内模式中包含的基本对象有表、视图和索引。
操作对象 | 操作方式 | ||
创建 | 删除 | 修改 | |
模式 | creat schema | drop schema | |
表 | creat table | drop table | alter table |
视图 | create view | drop view | |
索引 | creat index | drop index |
SQL通常不提供修改模式定义、修改视图定义和修改索引定义的操作/用户如果想修改这些文件,只能删除重建。
3.1模式定义
在SQL中,定义模式实际上就是定义一个数据库的命名空间,用这个命名存储空间存放该数据库中所有的基本表、视图和索引等对象的名称。模式定义有三种形式
(1) creat schema <模式名> authorizatidn <用户名> 解释:模式名与用户名不同
(2) creat schema authorizatidn <用户名> 解释:模式名为用户名
(1) creat schema <模式名> authorizatidn <用户名> [<表定义语句>|<视图定义语句>|<索引定义语句>] 解释:定义模式的同时定义其下的基本表、视图、索引。
其中,符号“<>”表示内容有用户自定义,“[]”表示内容为可选项,“|”代表两边的参数选其一。
只有拥有DBA权限或获得DBA授予的创建模式命令权限的用户才能调用创建模式命令。
3.1.1 删除模式
drop schema <模式名> <cascade|restrict> 解释:命令中必选cascade(级联)和restrict(限制)其一
模式中定义了表或视图等数据对象时,只能选择cascade,即删除模式的同时删除所有模式下的数据对象,并且拒绝执行drop schema <模式名> <restrict>。只有模式中不包含任何对象时,才能执行drop schema <模式名> <restrict>
3.2 基本表的定义、删除与修改
3.2.1表的定义
creat table <表名> (<属性1> <数据类型> [列级别完整约束条件]
[,<属性2> <数据类型> [列级别完整约束条件]]
...............................
[ ,<属性n> <数据类型> [列级别完整约束条件]]);
表的完整约束条件被存入系统的数据字典中,当用户操作表中的数据时,由RDBMS自动检查该操作是否违背完整性约束条件。
由于每一个基本表必须属于某个关系模式,因此在定义基本表的同时必须定义所属的关系模式。分三种
(1)定义模式的时候定义基本表,见模式定义第三种形式;
(2) creat table <已经存在的模式名>.<表名> (.........); 注意用的'.'连接两个名字
(3)系统根据搜索路径确定模式,即搜索路径中中包含一组模式列表,会选择列表中第一个模式。若搜索路径中不存在模式名,则报错。
3.2.2 表的修改
alter table <表名> [add <属性名> <数据类型> [完整约束条件]] 增加新属性
[drop <完整性约束名>] 删除指定的完整性约束条件
[alter column <属性名> <数据类型>] 修改原有属性的定义,包括修改属性名与数据类型
3.2.3 基本表的删除
drop table <表名> [restrict|cascade];
(1)使用cascade,直接删除表,并同时删除此表上建立的索引、视图、触发器等有关对象;
(2)若该表上建立有索引、视图、触发器等有关对象视,使用restrict无法删除,将报错,默认是restrict;
3.3 索引的建立与删除
(1)建立:creat [unique] [cluster] index <索引名> on <表名>(<属性名>[次序选择][,<属性2> [次序选择]]...);
其中unique代表唯一索引,表名此索引的每一个索引值只对应唯一的数据记录。cluster代表聚簇索引,是指索引项的顺序与表中记录的物理顺序一致的索引组织。次序选择中ASC(升序,默认)、DESC(降序)。如
creat unique index stusno on student (Sno);
creat unique index Coucon on Course (Cno);
creat unique index Scno on SC (Sno ASC,Cno DESC);
(2)删除索引:drop index (索引名);
mySQL优化
----------------------------------
其中一种归类
MYSQL优化主要分为以下四大方面:
设计:存储引擎,字段类型,范式与逆范式
功能:索引,缓存,分区分表。
架构:主从复制,读写分离,负载均衡。
合理SQL:测试,经验。
---------------------------------
另一种阐述
1、数据库级别:使数据库应用程序快速运行的最重要因素是其基本设计:
(1)表结构是否正确?特别是列是否具有正确的数据类型,并且每个表都具有适合于该工作类型的列吗?例如,执行频繁更新的应用程序通常具有许多表而具有很少的列,而分析大量数据的应用程序通常具有很少的表而具有很多列。
(2)索引是否正确?
(3)您是否为每个表使用了适当的存储引擎,并利用了所使用的每个存储引擎的优势和功能?
(4)每个表都使用适当的行格式吗?该选择还取决于表使用的存储引擎。特别是,压缩表使用较少的磁盘空间,因此需要较少的磁盘I / O来读取和写入数据。压缩适用于带有InnoDB
表的所有工作负载 以及只读 MyISAM
表。
(5)应用程序是否使用适当的 锁定策略?例如,通过在可能的情况下允许共享访问,以便数据库操作可以同时运行,并在适当的时候请求独占访问,以便关键操作获得最高优先级。同样,存储引擎的选择很重要。该InnoDB
存储引擎处理大部分锁定问题,而不需要您的参与,允许在数据库更好的并发。
(6)SQL语句的优化,索引的正确使用
(6)用于缓存的 所有内存区域大小是否正确?也就是说,足够大以容纳经常访问的数据,但又不能太大以至于它们会使物理内存过载并导致分页。要配置的主要内存区域是InnoDB
缓冲池和MyISAM
密钥缓存。
2、硬件级别:随着数据库变得越来越繁忙,任何数据库应用程序最终都会达到硬件极限。DBA必须评估是否有可能调整应用程序或重新配置服务器以避免这些 瓶颈,或者是否需要更多的硬件资源。系统瓶颈通常来自以下来源:
-
磁盘搜寻。磁盘查找数据需要花费时间。对于现代磁盘,此操作的平均时间通常小于10毫秒,因此理论上我们可以执行100次搜索。这段时间随着新磁盘的使用而缓慢改善,并且很难为单个表进行优化。优化寻道时间的方法是将数据分发到多个磁盘上。
-
磁盘读写。当磁盘位于正确的位置时,我们需要读取或写入数据。对于现代磁盘,一个磁盘至少可提供10–20MB / s的吞吐量。与查找相比,优化起来更容易,因为您可以从多个磁盘并行读取。
-
CPU周期。当数据位于主存储器中时,我们必须对其进行处理以获得结果。与内存量相比,拥有较大的表是最常见的限制因素。但是对于小的表,速度通常不是问题。
-
内存带宽。当CPU需要的数据超出CPU缓存的容量时,主内存带宽将成为瓶颈。对于大多数系统来说,这是一个不常见的瓶颈,但是要意识到这一点。