数据库基础知识
数据库相关的基本概念
-
数据是描述事物的符号记录。数据经过加工后成为信息。数据与语义密不可分。
-
数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。
-
数据库管理系统(DBMS):是位于操作系统与用户之间的一层数据管理软件,是数据库系统的核心。
主要功能:(1)数据定义DDL(2)数据操纵DML(3)数据库的建立与维护(4)数据库的运行管理(5)提供方便,有效存取数据接口和工具(数据库管理人员DBA)
数据库系统的结构
数据模型
实体联系属性(矩形菱形椭圆形)
实体是客观存在并相互区别的事物。联系是实体与实体之间的联系。属性是实体或联系的特征。
实体间的关系有:一对一、一对多、多对多
关系数据库
基本概念
学生基本信息(学号,姓名,性别,出生日期,籍贯,民族,班号)
基本性质
数据库设计基础
数据库设计的步骤
关系数据库设计的方法
(1) 一个实体型转换一个关系模式
(2)一对一(1:1)关系可转换成一个关系模式或与对应一端关系模式合并。
(3) 一对多(1: N)转换为一个独立关系模式。
(4)多对多(N:M)转换时,关系模式为联系各实体的码以及联系本身的属性。
(5) 三个或三个以上实体间的转换,关系模式为各联系实体的码和联系本身的属性。
(6)具有相同码的关系模式可合并。
例:上一E-R图转换成关系模式
用户(用户ID,用户名,口令,年龄,所属用户组,所在部门)
用户组(用户组ID,用户组名,用户组描述)
MySQL编程语言
结构化查询语言MySQL
SQL语言不区分大小写,是结构化查询语言
MySQL语言组成
作用:用于数据库、表、视图、函数、存储过程或者其他对象的创建、删除或者修改的操作,包括:
作用:用于数据库中各种对象(表、视图等)的操作。包括:
作用:用于数据库中安全管理,进行权限管理。包括:
作用:方便用户增加的语言要素,MySQL 特有的语言要素。
(1)常量
字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量(一个字节)和Unicode字符串常量(两个字节)<--前面要加N
数值常量可以分为整数常量和浮点数常量。整数常量即不带小数点的十进制数,例如:1 894,+145345234, -2147483648.浮点数常量是使用小数点的数值常量,例如: 5.2,-1.39, 101.5E5,0.5E- 2。
MySQL支持十六进制值。一个十六进制值通常指定为一个字符串常量,每对十六进制数字被转换为一个字符,其最前面有一个大写字母“X"或小写字“x”在引号中只可以使用数字“0”到“9”及字母a”到“f”或 “A"到“F”。不区分大小写。
日期时间常量:用单引号将表示日期时间的字符串括起来构成。
日期型常量包括年、月、日,数据类型为DATE,表示为“1999-06- 17"这样的值。
时间型常量包括小时数、分钟数、秒数及微秒数,数据型为TIME,表示为“12:30:43 .00013"这样的值。
MySQL还支持日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“1999-06-17
12:30:43”。DATETIME和TIMESTAMP的区别在于:DATETIME的年份在1000~9999之间,而TIMESTAMP的年份在1970~ 2037之间,还有就是TIMESTAMP在插入带微秒的日期时间时将微秒忽略。TIMESTAMP还支持时区,即在不同时区转换为相应时间。需要要特别注意的是,MySQL 是按年-月-日的顺序表示日期的。中间的间隔符“_” 也可以使用如“\”“%”等特殊符号。
可以使用b'value'符号写位字段值。value 是一个用0和1写成的二进制值。直接显示b'value'的值可能是一系列特殊的符号。例如,b'O'显示为空白,b'1'显示为一个笑脸图标。
布尔值只包含两个可能的值: TRUE和FALSE。FALSE的数字值为“0”, TRUE的数字值为“1”
NULL值可适用于各种列类型,它通常用来表示“没有“,“无数据”等意义,并且不同于数字类型的“0”或字符类型的空字符串。
(2)变量
用户可以在表达式中使用自己定义的变量,这样的变量叫做用户变量。用户可以先在用户变量中保存值,然后在以后引用它,这样可以将值从一个语句传递到另一个语句。在使用用变量前必须定义和初始化。如果使用没有初始化的变量它的值为NULL。用户变量前加@用来区分列名,必须在系统变量前加两个@。
SET @——— = 常量
Select @———
(3)运算符
算术运算符在两个表达式上执行数学运算,这两个表达式可以是任何数字数据类型。算术运算符有:+(加)、-(减)、*(乘) 、/ (除) 和% (求模) 5种运算。
(4)表达式
(5)内置函数
ABS () 绝对值
FLOOR()用于获得小于一个数的最大整数值
CEILING()函数用于获得大于一个数的最小整数值
ROUND()函数用于获得一个数的四舍五入的整数值
TRUNCATE(x,y)函数用于返回x保留到小数点Ev位
SQRT()函数返回一个数的平方根
聚合函数常常用于对一-组值进行计算,然后返回单个值
COUNT ()计算非NULL值的行数
SUM ()计算某个字段(列)的和
AVG()计算某个字段(列)的平均值
MAX()计算某个字段(列)的最大值
MIN()计算某个字段(列)的最小值
因为MySQL数据库不仅包含数字数据,还包含字符串,因此MySQL有一套为字符串操作而设计的函数。在字符函数中,包含的字符串必须要用单引号括起。
ASCII()函数返回字符表达式最左端字符的ASCII值。
CHAR ()函数ASCII码转换为字符
LEFT | RIGHT ( str ,X )返回从字符串str左边和右边开定x个字符。
CONCAT(s1 ,s2,.. .sn)CONCAT函数用于连接指定的几个字符串
UPPER(x)和UCASE(x)将字符串转换成大写字母
SUBSTRING (expression , Start, Length )返回expression中指定的部分数据。
Start、Length均为整型,前者指定子串的开始位置,后者指定子串的长度(要返回字节数)
NOW()函数可以获得当前的日期和时间
CURTIME( )和CURDATE( )函数比NOW更为具体化,它们分别返回的是当前的时间和日期
YEAR()函数分析一个日期值并返回其中关于年的部分
MOTNTH( )和MONTHNAME()函数分别以数值和字符串的格式返回月的部分
DAY()函数分析一个日期值并返回其中关于天的部分
HOUR(),MINUTE( )和SECOND( )函数分别返回时间值的小时、分钟和秒的部分
IF(expr1,expr2,expr3)这个函数有3个参数,第一个是要被判断的表达式,如
果表达式为真,IF()将会返回第二个参数;如果为假,IF()将会返回第三个参数。
IFNULL (expr1 ,expr2)此函数的作用是:判断参数expr1是否为NULL,expr1为NULL时返回expr2,不为NULL时返回expr1。
IFNULL的返回值是数字或字符串。
-
数据库系统(DBS):包括数据库、数据库管理系统
-
数据库系统的特点
-
数据结构化:在数据库系统中,数据不再针对某一应用,而是面向全局应用,具有整体的结构化。
-
数据冗余度小
-
数据共享性好
-
数据独立性高
-
数据库保护(1)数据的安全性(2)数据的完整性(3)并发控制(4)故障恢复
-
数据库独立性:
-
三级模式:外模式(用户角度),模式(逻辑特征),内模式(物理存储)<-PBA关心
-
二层映射:外模式/模式(逻辑独立性)、模式/内模式(物理独立性)
-
范式(严格程度):1NF<2NF<3NF<BCNF
-
应用结构:
-
客户/服务器结构(c/s)如QQ、微信等<--下载装上的都是此结构
-
浏览器/服务器结构(b/s)如网站<--点开浏览器就能访问
-
概念模型:用来描述现实世界的事物,与具体的计算机系统无关。最典型的概念模型是实体联系(E-R)
-
逻辑模型:是具体的DBMS所支持的数据模型。
-
层次模型
-
网状模型:表示实体和实体之间的联系
-
关系模型:用二维表结构来表示实体及实体之间的模型
-
面向对象模型
-
物理模型:用于描述数据在存储介质上的组织结构
-
关系:是一张二维表,通常将一个无重复行无重复列的二维表看成一个关系,每个关系都有一个关系名。
-
表:也称作关系,表的结构称作关系模式,上述例子表示成关系模式是:
-
列:表中的列也称作字段或者属性,且每一列有同一数据类型,列名不能重复。
-
行:表中的行也称作元组或者记录,一行就是一条记录或者一个元组。
-
关键字(Key):也称作码或主键,表中能够唯一确定一个元组的属性或属性组,例如:学号,身份证号。
-
候选键:如果表中有多个能够唯一标识一个元组的属性,称之为候选键。候选键中任选一个可做主键。
-
外部关键字:也称作外键,如果一个字段不是本表的主键或候选键,而是另外一个表的主键或候选键,称之为外键。
-
域:表示属性的取值范围,例如:出生日期为合法日期格式。
-
数据类型:表中的每一列存储内容的限制格式,每列有且只有一个数据类型,一列数据属于一类数据类型。
-
每列不可再分。
-
表的任意两个元组(行)不能完全相同。
-
表中每一列属于同一数据类型,且列值出自同一域(取值范围)。
-
不同列可以出自同一域,但是列名不能相同。
-
表中列的顺序可以任意交换,行的顺序也可以任意交换。
-
需求分析:进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。
-
概念结构设计:是整个数据库设计的关键,生成E-R图。
-
逻辑结构设计:是将概念结构转换为某个DBMS所支持的数据模型,并将进行优化。E-R图转换为关系模型。
-
物理结构设计:物理设计是为逻辑数据结构模型选取一个最适合应用应用环境的物理结构(包括存储结构和存取方法)。
-
数据库实施:数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sq|) 及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。
-
数据库运行与维护:数据库应用系统经过试运行后,即可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价,调整,修改。
-
概念结构的设计方法:设计概念结构通常有四类方法(了解)
-
自顶向下:即首先定义全局概念结构的框架,再逐步细化。
-
自底向上:即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
-
逐步扩张:首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
-
混合策略:即自顶向下和自底向上相结合。
-
逻辑结构的设计方法:主要任务将E- R图转换为关系模型
-
遵循原则:
-
数据定义语言(DDL)
-
CREATE 创建数据库或数据库对象(表、视图等)
-
ALTER 修改数据库或数据库对象
-
DROP 删除数据库或数据库对象
-
数据操纵语言(DML)
-
SELECT 用于检索数据(查询)
-
INSERT 用于插入数据(一行、 多行)
-
UPDATE 用于修改数据(一行、多行)
-
DELETE 用于删除数据
-
数据控制语言(DCL)
-
GRANT 用于授予用户及角色某种权限
-
REVOKE 用于回收用户及角色某种权限,与GRANT相反
-
MySQL扩展增加的语言要素(非标准SQL )
-
字符串常量
-
数值常量
-
十六进制常量
-
日期时间
-
位字段值(了解)
-
布尔值
-
NULL值
-
数学函数
-
聚合函数
-
字符串函数
-
日期和时间函数
-
加密函数ENCODE ()等
-
控制流程函数
-
格式化函数FORMAT()等
-
类型转换函数CAST()等
-
系统信息函数USER()等