基本概念:
包括数据库、数据库系统、数据库管理系统的概念。
数据库是数据存储、管理的仓库。
数据库系统是由数据库、数据管理系统,应用程序和数据库管理员组成的存储、处理、维护数据的系统。
数据库管理系统,用户与操作系统之间的一层数据管理软件。
Mysql数据库是目前最标准,使用最多的数据库,体积小,速度快。缺点是其安全系统,复杂而不标准,调用mysqladmin重读用户权限时才发生改变。
Sql server是仅限于windows版本使用,只支持CS模式。
Oracle是多数企业用的付费数据库。数据库管理系统通过SQL(结构化查询语言)管理数据库及其中的数据。
SQL语言
DDL(数据定义语言,create,drop,alter,rename)
DML(数据操纵语言,增删改查)
DCL(数据库控制语言,授权以及完整性)
TCL(事务控制语言)。
三大范式:
1NF:存在主键,数据不重复。
2NF:具有函数依赖关系,每个表必须有主关键字,primary key,其他数据元素与主关键字一一对应。
3NF:不存在传递关系,表中不包含已在其他表中已包含的非主关键字信息。
五大约束:
主键约束,外键约束,非空约束,唯一约束,检查约束。
数据库中的常用函数:
数学函数、字符串函数、日期时间函数、类型转化函数、系统信息
主键、外键、索引:
主键:唯一标识一条记录,不重复,不允许为空(一个)
外键:此表的外键是另一个表的主键,用来和其他表建立联系(多个)
索引:没有重复值,可以有一个空值,提高查询排序的速度(多个)
数据库中连接查询。
外连接:显示一个表的全部数据,另一个表显示符合条件的数据
左联接:left join 保留左表
右连接:right join 保留右表
全连接:full join 双方表数据全部出现,符合连接条件的双方表数据合并为一行显示,不符合要求的数据对方列显示为null
笛卡尔积(交叉连接),一一匹配对应
内连接:取两表交集
Union:去重连接
Union all:不去重连接
数据库中的三种删除方法以及区别
Delete:删除数据表中的行
Truncate:快速,无日志记录的方法,是用更少的系统资源和事物日志资源,与不含where子 句的delete在功能上相同。
Drop:删除数据表、数据库、数据表字段。
数据库事务:
访问并可能操作各种数据项的数据库操作序列,数据库操作的最小单元。这些操作作为一个整 体向系统提交,是一组不可分割的操作集合。
事务的ACID特性:
事务是恢复和并发控制的基本单位
原子性:事务所有操作要么全部成功,要么全部失败回滚
一致性:事物使数据库从一个一致性状态变换到另一个一致性状态
隔离性:不能被其他事务干扰,多个并发事务之间要相互隔离
持续性:一个事务一旦提交,对数据的改变是永久性的,不会丢失提交事务的操作
Sql语句中的count(1)和count(*)区别
Count():包括所有列,相当于行
Count(1):忽略所有列,用1代表代码行
Count():忽略列值为0,某个字段为null
列名为主键:count(列)>count()
多个列无主键:count(1)>count(),两者区别不大
只有一个字段:count()最优
Limit后面跟两个参数时:第一表示跳过的数量,第二表示要取得数量。Limit1,3(取2,3,4)
Limit后表示要取数量,offset后表示跳过数量。Limit 3 offset
窗口函数
记录集合,在满足某种条件记录集合上执行的特殊函数。
rank() over()排名,相同的两名并列,下一位空出所占名次:1,2,2,4
Dense_rank()over(),相同的两名并列,下一位不空出所占名次:1,2,2,3
Row_number()over(),不考虑并列,进行连续排名
Eg:Dense_rank()over(order by salary desc nulls last)
Datediff(dd,rddate,getdate())==0返回以日为单位,和当前getdate相差为0的日期。