Mysql的知识点

<>第三范式:

范式 解释

* 第三范式是进行业务设计,数据拆分时产生的,使用数据库范式,遵循范式
* 范式是一种规定:第三范式后面还有第四范式,第五范式
* 前面还有第一范式和第二范式,满足第三范式,就代表同时满足第一范式和第三范式
范式具体规范

*
第一范式:每个字段都是不可再分割的属性
class:高三12班 不满足第一范式,需要变成 grade:高三 class :3班
*
第二范式:通俗理解是任意一个字段都只依赖表中的同一个字段, 所有的字段都要和主键有直接关系
student:张三 , age:13, 学校:武汉大学 校园人数:1320 校园人数与学校有关,学校与张三有关,不满足第二范式 不允许由两个主键
*
第三范式: 表中只有一个主键字段,且非主键之间与非主键之间不能有联系
student: 张三 (primary key), age:13,借书证id: 32456 借书日期:2018/06/29
其中:张三是主键,虽然借书日期与张三有关系,但是也跟借书证id有关系,不满足第三范式
<>聚焦索引

*
聚焦索引:将数据 按照索引的顺序排列,使得存储进去的数据是非逻辑性的排列,类似于字典

*
非聚焦索引:将数据中的字段建立索引,另外开辟空间,将索引和字段名建立索引表,类似于,将列表中的数据与索引,建立一个索引字典
当查找数据时,先查看字典,然后返回字段,再进行查找
*
聚焦索引特点: 查找快,增删改比较复杂
适用于查找性表,不适用经常修改的表,经常修改有可能导致数丢失
*
非聚焦索引特点:查找慢,但增删改比较轻松
适用于修改性表
*
聚焦索引内还有相当多内容,大家可以自行查看

<>复合主键和联合主键

<>联合主键

*
假如有这样的情况,学生,年龄,成绩,课程,老师,老师信息
将学生的信息作为一张表,学生,年龄,课程id 将课程作为一张表,课程id,课程,成绩,老师id 将老师作为一张表,老师id,老师信息
*
假如我想找张三的成绩是多少,信息量太少,并且容易重复,
查找 李四教的数学班的张三的成绩 信息比较完全,不会出现重复的信息
再建一张表,字段位学生id和课程id和老师id和主键id,这样就叫做联合主键,

*
联合主键顾名思义就是多个主键联合形成一个主键组合(主键原则上是唯一的,别被唯一值所困扰。)

*
联合主键的意义:

*
用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。
<>复合主键
在一张表中,有 学生,年龄,成绩 将学生和年龄共同作为主键,查找时
* 对于复合索引:MySQL从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。.当最左侧字段是常量引用时,索引就十分有效。
createtable test( a int, b int, c int, primary KEY (a,b,c) );
* 类似于以下的语句 select *from test where a>10 ; select *from test where a>10 and b
>10; select *from test where a>10 and b >10 and c>10;
* 满足索引是key index (a,b,c). a| a,b| a,b,c 3种组合进行查找时,复合索引才起作用
select *from test where b>10;
* 这样查找并没有使用复合索引,所以效率与不建立索引时差不多
小提示:在语句末尾将;改为\G可以修改表的显示方式

<>视图,存储过程,函数

本质上,是为了执行效率更高,执行起来更方便

*
三种方式都是将语句封装起来,给它加上一个名字,当调用它时,就能执行那一连串的语句,就像python的函数一样,具有面向对象的特点
def func(): print(“abc”)
*
视图主要使用于查询语句(select *from 视图;)

*
存储过程,函数,视图

* 定义
* 使用
* 修改
* 删除
*
存储过程和函数


1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。

2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。
4)存储过程一般是作为一个独立的部分来执行(EXECUTE
语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
SQL语句中不可用存储过程,而可以使用函数。

*
这三种,比较复杂,内容也很多,还需要大家自己研究,
就像我们的函数和类一样,内容多,理解也比较困难
<>用户权限

用户权限管理主要有以下作用:
1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3.
可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户
* 查看详情 https://www.cnblogs.com/lxf1117/p/6762315.html
<https://www.cnblogs.com/lxf1117/p/6762315.html>
public

sysadmin–在 SQL Server 中进行任何活动。该角色的权限跨越所有其它固定服务器角色。

serveradmin --配置服务器范围的设置。

setupadmin --添加和删除链接服务器,并执行某些系统存储过程(如sp_serveroption)。

securityadmin --管理服务器登录。

processadmin --管理在 SQL Server 实例中运行的进程。

dbcreator --创建和改变数据库。

diskadmin --管理磁盘文件。

bulkadmin --执行 BULK INSERT 语句。

SQL_server面向的是集合
所以具有交 并 差 补 笛卡尔积的性质
交 intersect

并 union

差 difference

补 complement

笛卡尔积 就是将两张表以所有可能的方式进行组合,形成一张表,
假设 a表有4行,b表有3行,那么他们形成的笛卡儿积就有12行
语言分类
DAL 和DQL 都是数据访问(查询)语言

https://blog.csdn.net/zqj188/article/details/78418236
<https://blog.csdn.net/zqj188/article/details/78418236>

SQL语言共分为三大类,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

* 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
ALTER 语句 (Transact-SQL)

CREATE 语句 (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

DROP 语句 (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

TRUNCATE TABLE (Transact-SQL)

UPDATE STATISTICS (Transact-SQL)

2.下表列出了 SQL Server 使用的 DML 语句。

BULK INSERT (Transact-SQL)

SELECT (Transact-SQL)

DELETE (Transact-SQL)

UPDATE (Transact-SQL)

INSERT (Transact-SQL)

UPDATETEXT (Transact-SQL)

MERGE (Transact-SQL)

WRITETEXT (Transact-SQL)

READTEXT (Transact-SQL)

下表列出了在多个 DML 语句或子句中使用的子句。

子句

可用于的语句

FROM (Transact-SQL)

DELETE、SELECT、UPDATE

提示 (Transact-SQL)

DELETE、INSERT、SELECT、UPDATE

OPTION 子句 (Transact-SQL)

DELETE、SELECT、UPDATE

OUTPUT 子句 (Transact-SQL)

DELETE、INSERT、MERGE、UPDATE

搜索条件 (Transact-SQL)

DELETE、MERGE、SELECT、UPDATE

表值构造函数 (Transact-SQL)

FROM、INSERT、MERGE

TOP (Transact-SQL)

DELETE、INSERT、MERGE、SELECT、UPDATE

WHERE (Transact-SQL)

DELETE、SELECT、UPDATE

WITH common_table_expression (Transact-SQL)

DELETE、INSERT、MERGE、SELECT、UPDATE

DDL操作是隐性提交的!不能rollback

* 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
*
GRANT:授权。

*
ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚—ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK;

*
COMMIT [WORK]:提交。

在数据库的插入、删除和修改操作时,只有当事务在提交到数据
库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看
到所做的事情,别人只有在最后提交完成后才可以看到。
提交数据有三种类型:显式提交、隐式提交及自动提交。下面分
别说明这三种类型。

(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;

(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。

(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;

SQL_server 应用程序组成部分 客户端,服务器,数据库
client :抵御SQL注入和非严格输入的第一道防线
www.contoso.com: 应该设置为NTFS格式以保护程序、数据库、日志文件免遭未授权访问 S01.contoso.com:数据库

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信