?第一章 关系型数据库管理系统(relational database managerment system简称RDBMS)
本章重点:理解关系型数据库的基本概念
理解数据库管理系统管理的工作原理
熟悉结构化查询语言及其分类
必记词汇:
Entity(实体) relationship(关系) attribute(属性)
Column(行) row(列) local(本地)
Server(服务器)
数据库集中式控制的优点(6个):
1 降低冗余度
2数据一致性
3存储数据可以共享
4可以建立数据库所遵循的标准
5维护数据完整性
6实现数据的安全性
数据在数据库中的存储形式(4种)
A 层次模型
B 网状模型
C 关系模型
D 对象模型
关系型数据库的基本概念:以关系模型来创建的数据库称为关系型数据库。其相似的实体被存入表中,表是关系型数据库的核心单元,是数据存储的地方。
关系型数据库与表之间的关系:(3点)
1 一对一
2一对多
3多对多
注:在商业应用程序开发中,为安全性及性能考虑,通常采用数据库服务器管理系统。
操作关系行数据库有:DQL 、DML、 DDL、 DCL
第二章 管理数据库和表
本章重点
如何管理数据库
掌握各种数据类型
如何管理数据库表
必记词汇:create 创建 table 表
A. 创建和使用数据库(表):
创建(删除)数据库语法:
Create(drop)database+数据库名;
创建(删除)表语法:
Create(drop)table+表名;
B. 表的管理:(如何动态添加一个管理列)
删除列语法:alter table+表名+drop column+修要删除的列名;
添加列语法:alter table+要修改的表名+add column+需要添加的列名+数据类型;
修改列语法:alter table+表名+change +需要修改的列名+空格键+变化后的列名+数据类型;
复制表语法:create table+表名+select*from+需要复制的表名;
注:在这儿的*号可以替换为多个列名。
注:临时创建表不要求记忆。
C.管理索引
索引的概述:索引是一个用来提供整个数据库操作速度的数据库对象,他通过创建一个内部的索引表来达到快速搜索的目的,索引是依赖与表建立的,在一个表上创建索引可以提高在该表上执行select语句的速度(优点);但同时也会降低delete,update和insert语句执行的速度(缺点)。
创建索引语法:create index+索引名+on+表名+列名1,列名2;
删除(表中的)索引语法:(alter table+表名)drop index+表名.+索引名;
D.数据类型(9种):
1.整数据类型:
Int:占4个字节的存储空间。
Smallint:占2个字节的存储空间。
Bigint: 占8个字节的存储空间。
Tinyint: 占1个字节的存储空间。
2.浮点数据类型:
Float: 占8个字节的存储空间。
Double: 占8个字节的存储空间。
Decimal:可以提供小数所需要的实际存储空间。
Real: 占4个字节的存储空间。
Numeric: 与decimal数据类型相同
3.字符串类型:
Char:固定长度,默认长度为1,()里的长度可省略。
Varchar:其长度不超过8kb
Text:长度超过8kb
Unicode:
4.二进制数据类型:
Binary:
Varbinary:
5.逻辑数据类型:
Flase(假):
True(真):
6.图形数据类型:
Image:
7.日期和时间数据类型:
Year(年):
Datetime(时-分-秒):
Date(年-月-日):
Smalldatetime:
8.货币数据类型:
Money:
Smallmoney:
9.特殊数据类型:
Timestamp:
Uniqueidentifier:
注:所有的数据类型都为创建表服务。
第2章 数据完整性
本章重点:
理解数据完整性的含义
掌握实现各种数据完整性类型的方法
掌握创建的中约束的语法
1. 数据完整性的类别(4类):
实体完整性:主键(primary key)和唯一(unique)
域完整性:check(检验),default(默认),not null(非空), Foreign(外键)
引用完整性:所谓引用完整性就是我们必须在有关联关系的表中,确保一个表的外键的值来源于另一个表中的主键值。即引用数据fk(外键).
用户自定义完整性:可以通过触发器,存储过程等实现。
注:外键是放与创建表的里面的。
第3章 使用DML语句更改数据
本章目标
使用insert语句添加数据
使用update语句修改数据
使用delete语句删除数据
必记词汇:
Insert(添加) values(值)
Update(修改) set(设置)
Delete(删除) truncate(删除)
注:delete*from 的语法书写是错误的。
1.添加新数据
添加数据(单,多行数据):
语法:insert into+表名+列名列表+values+值列表
修改数据:
语法1:update+表名+set+新列值列表+where条件;
语法2:update+表名+set+列1=新值1,列2=新值2 +where条件;
删除数据:(delete和trnucate)
语法1:delete from +表名+where条件;
语法2:truncate table+表名;
注:delete和truncate的差异:
1. 语法上:delete可跟条件,而truncate不能跟条件。
2. 主键影响:delete从最大的值开始,而truncate返回原始状态1
3.效率上:delete一次只能删除一条,而truncate能删除表中所有的行。
4.日志文件:delete操作会记录到日志文件,而truncate则不会。
第4章 简单的数据查询(DCL语句)
本章目标
简单查询中的投影操作
简单查询中的选择操作
简单查询中的排序操作
必记词汇:
Select(选择) like (像) projection(投影)
Distinct(排除重复) between and(在两者之间,包括边界值) and(同时满足) or(其中之一) in(集合)
Order by(排序) limit(分页)
Is null(是空)
1. 查询的基本结构即(投影操作):
语法1:select*from+表名(查询所有的表)
注:(*在这儿,指代这张表中的所有列名,也可将*有具体的列名列表代替)。
语法2:模糊查询(like)
select*from+表名+where +name like’%_’;
注:(where后面的是过滤条件,‘%’是指通配符,代表0个,1个或者是多个字符。‘-’是指占位符,它可以是数字,字母或者是汉字。)
2.列别名(列别名是为了让人们更加便于理解)
As 作为,通常用于列别名的情况下。
3.计算列 (列的算数运算,只能够是数字运算)
例:Select name +3 from course;
注:(列名只能由数字和数字相加,不能是数字和字符串相加的)。
4.排除重复数据(distinct 排除重复后,仍会保留一个重复的值)
语法:select distinct+列名+from+表名;
灵活运用:select distinct+列名1,列名2+from+表名;
5.选择操作即(通过用where子句来指定查询条件,只从表中提取或显示满足条件的查询。)
语法:select +列表列名+from+表名+where条件;
where条件后可接(6个):
1. 运算符
2. like模糊查询中的‘-’,‘%’
3. in()集合
4. between and
5. and or
6. is null
注:2和6无法进行址查询。
7. limit(分页)
分析1(跟一个参数):limit M;代表返回这张表中的前M条数据。
例:select*from student limit5;
分析2(跟两个参数):limit M,N;
例:select*from student limit3,7;(解析:在这3是指行数,代表从3这个位置的下一行开始,即m=3,运行时从m=4开始;7是指返回的7条数据,即n=7.)
注;limit不需要加where。
8. 排序操作(order by 默认是从小到大ASC(升序),DESC(倒序))
语法:order by+列名(列名1,列名2);
第六章 聚合函数与分组
本章目标
常用的聚合函数的用法
数据分组统计
1. 使用聚合函数进行统计汇总
五类聚合函数:
统计行数Count语法:select count(计数规范)from(表名);
求和Sum语法:select sum(计数规范)from(表名);
求平均值Avg语法:select avg(平均值规范)from(表名);
求最大值Max语法:select max(最大值规范)from(表名);
求最小值Min语法:select min(最小值规范)from(表名);
2. 数据分组(group by分组不写where,可对多个列进行分组)
(原始状态)语法:select count(*),group by+(列名);
执行顺序:先分组,在执行,最后统计。
换一种展现形式如:
语法:Group_concat+列名;
3. SQL语句的执行顺序
A. select +表名 d.
B. from+列名 a.
C. where+条件过滤 b.
D. group by+列名 c.
E. having+条件 e
F. order by+列名 f.
G. limit g.
注:having后可跟上where的任何条件,它主要用于对聚合函数的结果过滤
注:大写是按语法顺序执行,小写是按mysql执行顺序。
第5章 组合查询
本章目标
子查询
集合操作union
1. 子查询定义:嵌套在其他查询中的查询即是子查询。
2. 子查询的分类:相关子查询和非相关子查询。
二者的区别(差异):非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。而相关子查询的执行依赖于外部查询的数据。当外部查询返回一行,子查询就执行一行。
3. 子查询作为计算列的语法
Select columnA,(子查询) as columnB from +表名;
注:返回多个结果的子查询用in来连接,其后可以是一个字符或数字。例:select columnA,columnB from table where column in(select columnD from table 2);
4. where子句中的子查询有:between and、 and or、 In 、运算符。
5. 在子查询中使用运算符
A. 使用exists(存在)运算符
语法:select studentid,name from student
Where exists(子查询)
语法说明:1.在where后面不能接列名,
2.exists当判断()里的结果集时,如有返回一个值就为真,运行出来的结果是全部;如没有返回一个值就为假,运行出来的结果什么也没有,为空。
B. 使用all(匹配所有)运算符
例:select columnA from table
where columnA>ALL(select columnB from table);
注:all运算符与子查询和比较运算符(=,>,>=)一起使用。
C. 使用any(其中之一)运算符
说明:崽子查询返回的值中,只要有一行满足比较运算符,则比较表达式的值就为真,若所有的值都不满足,则返回假。
例:select columnA from tableA
WHERE columnA>(SELECT columnB FROM tableB);
D. 使用union运算符
语法:select columnA,columnB from tableA
Union select columnC , columnD from tableB;
第八章 联接
本章目标
联接的几种方式
如何使用联接输出多个表的数据
1. 使用连接
A. 内联接
语法:select*from t_student ,t_class
Where t_student.Class_id =t_class.pk_id;
B. 外联接(3类)
左外联接(left(outer) join)
语法:select *from table1
Left(outer)join table2
on table1.column1= table2. column2
右外联接(right(outer) join)
语法:select *from table1
Right(outer)join table2
on table1.column1= table2. column2
全外联接(full(outer) join)
语法:select *from table1
Full(outer)join table2
on table1.column1= table2. column2
C. 交叉联接
问:我们在数据库的表中何时才能用到联接?
当我们所操作的数据库是来自于两张表或者多张表时,则就需要建立联接。
注:on后不仅可以跟where的所有条件,还可以跟多个过滤条件。