SQL 数据库基础知识点
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
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
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注入和非严格输入的第一道防线
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?df3fad48f451b4397e22994598084709";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
www.contoso.com: 应该设置为NTFS格式以保护程序、数据库、日志文件免遭未授权访问S01.contoso.com:数据库
SQL 数据库基础知识点相关推荐
- My SQL数据库基础知识点全面总结笔记(下)
知识点总结(上)见链接: MySQL数据库知识点总结(上) My SQL笔记总结(下) 五.DML数据操作语言 1.插入语句 2.修改语句 (1)修改单表的记录(主要) (2)修改多表的记录 3.删除 ...
- My SQL数据库基础知识点全面总结笔记(上)
案例所用数据库,链接已更新应该是永久有效的:myemployees数据库,提取码 ozz9 girls数据库 提取码:xx9e 知识点(下):数据库知识点总结(下) linux下的安装点这里: Cen ...
- SQL数据库基础知识巩固
SQL数据库基础知识 数据库,又称"电子化的文件柜",是"按照数据结构来组织.存储和管理数据的仓库",是一个长期存储在计算机内的.有组织的.可共享的.统一管理的 ...
- Web阶段--Oracle数据库基础知识点
Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...
- Oracle数据库基础知识点大全(一)
Oracle数据库基础知识点大全 一.数据库基本概念 E-R模型 数据库对象 二:标准SQL包含了4种基本的语句类别 三:DML语句(数据操作语句) 数字和日期使用的数学表达式 常用 where 查询 ...
- SQL数据库基础语法总结
SQL数据库基础操作语法总结 说明: 用{ }表示括号里的内容是必写的,用[ ]表示括号里的内容可写可不写:用<>表示在实际编写语句时可以用相应的内容代替:用A|B表示A或B的意思(只能选 ...
- SQL数据库基础知识-巩固篇一
SQL数据库基础知识-巩固篇<一>... 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了> MySQL-57 D ...
- SQL数据库基础中的基础
SQL数据库基础中的基础 1.数据库操作 0.0 提前准备 再开始操作之前,需要有数据库,如果没有安装的可以看我上一篇的内容.以下所有操作均在数据库上操作. 1.1 DDL操作 1.1.1 数据库操作 ...
- 【SQL数据库基础08】变量--系统变量:全局、会话、自定义变量
文章目录 一.系统变量 1.查看所有系统变量 2.查看满足条件的部分系统变量 3.查看指定的系统变量的值 4.为某个系统变量赋值 1.1 全局变量 ①查看所有全局变量 ②查看满足条件的部分系统变量 ③ ...
- sql数据库基础之数据库介绍
sql数据库基础之数据库介绍,部分来至于该文章点击打开链接 1.什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改, ...
最新文章
- 微调BERT:序列级和令牌级应用程序
- VTK:可视化之ColorAnActor
- 增长量计算n+1原则_土方量计算方法
- QSetting介绍
- ubuntu制作usb启动盘
- Abbey加入了FreeCodeCamp团队,担任编辑
- 最多只能选择两个多选框的jQuery功能实现
- php-fpm安装包_linux下安装php php-fpm(转载)
- C语言实现约瑟夫环代码
- AxureShare太慢,自己搭建产品原型分享系统
- 【JavaWeb学习】14综合案例
- C51单片机行人过马路按钮控制信号灯及Protues仿真(有缺陷)
- [语录]足球解说员贺炜语录
- 计算机系统结构——量化研究方法(第三版)
- 计算机技术相关职业资格证书,关于对持有计算机信息高新技术考试合格证书人员配发国家职业资格证书的通知...
- python如何读取excel表中的日期与时间
- python列表中删除奇数行_shell 删除奇数偶数行
- 反爬机制之验证setcookie
- 在 Ubuntu 中与手机发送文件不方便,怎么让手机和 Ubuntu 远程建立连接,传输文件?
- 100寸大屏幕的影院观感 神画Q1智能影院了解一下
热门文章
- 酷q机器人php源码,酷Q机器人完整的一套源代码,智能化管理群组
- Eviews6 7 软件安装包
- cadence SPB17.4 allegro + CAM350 10.5 / 10.7 / 14.6 出拼板
- JAVA-反射面试题及答案
- 备忘--moodle安装
- cve20190708补丁的kb名称_64位kb4499175补丁下载
- 西北工业大学生态环境学院张文宇课题组博士后招聘启事
- Linux网络下载管理工具(lftp, ftp, lftpget, wget)
- Linux:下载和安装
- java 学生成绩管理系统_学生成绩管理系统