1. 数据模型
a. 层次模型--------------->IMS
b. 网状模型--------------->DBTG也称CODASYL
c. 关系模型--------------->MySQL、Oracle、Microsoft SQL Server
2. 关系型数据库
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
3. 数据库的存储引擎
MyISAM:拥有较高的插入,查询速度,但不支持[事务]
InnoDB:5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定
BDB: 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
4. 数据库设计的重要性
如果一个数据库没有进行一个良好的设计,那么这个数据库完成之后他的缺点是:
1.效率会很低
2更新和检索数据时会出现很多问题
Ⅰ. E-R图
①. 实体是指现实世界中具有区分其他事物的特征或属性与其他实体有联系的实体,针对于数据库中的表而言实体是指表中一行一行特定数据,但我们在开发中,也常常把整个表称为一个实体.
②. 属性可以理解为实体的特征,针对于数据库中的表而言实体是指表中的列.
③. 联系是两个或多个实体之间的关联关系.
实体型:用矩形表示,矩形框内写明实体名;
属性:用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型
Ⅱ. 三大范式
①. 第一范式:数据库中的每一列数据都不可以再分割(列的原子性)
②. 第二范式:实体属性完全依赖与主键(消除非主属性对主码的部分函数依赖)
③. 第三范式:不依赖于其它非主属性即一个数据库表中不包含已在其它表中已包含的非主关键字信息(消除传递依赖)
5. SQL语句
-
建库语句
create database llb; -
建表语句
create table llb.llbdebiao(
id int(11) not null auto_increment primary key,
name varchar(45) default 'llb'
name_id int(3)
)engine InnoDB default charset=utf8
创建一张表以自增id为主键name不填写是默认为llb
-
添加语句
insert into llb.llbdebiao(id,name) values(null,'abc');
insert into llb.llbdebiao values(null,'abdc',10); -
修改语句
update llb.llbdebiao set name = 'abcd' where id='1'; -
删除语句
delete from llb.llbdebiao where ....; -
删表语句
drop table llb.llbdebiao; -
删库语句
drop database llb; -
查询语句
select * from llb.llbdebiao where id = 1......; -
distinct
select distinct name from llb.llbdebiao ;
用处取出重复属性 -
order by
select distinct name from llb.llbdebiao order by name_id
DESC 降序
ASC 升序
-
函数语句
select count(*) from llb.llbdebiao;可查询表中公有多少条数据; -
group by(Having)
对查询的结果集按指定字段分组
select * from llb.llbdebiao group by name -
Union合并查询
将多张查询表通过unnion合并 -
表连接
kc表
s表
SELECT * FROM aa.kc k join aa.s s on s.id = k.sid;
内连接
SELECT * FROM aa.kc k left join aa.s s on s.id = k.sid;
左外连接
SELECT * FROM aa.kc k right join aa.s s on s.id = k.sid;
右外连接
内连接只显示符合连接条件的数据;
左外连接左边数据都显示右表符合条件数据显示不对应的数据用null进行填充;
右外连接与左外连接相反; -
in (not in)
select *from llb.llbdebiao where id in (1,2,3);
查询数据id 是1或者2或者3的数据 -
exist(not exist)
exists判断子查询的结果是不是存在,但查到什么结果,什么字段,并不关心,查询结果是一个布尔类型的值
select * from llb.llbdebiao where exists(子查询); -
LIKE
用于模糊查询
通配符:
%|替代一个或多个字符
---|---
_|仅替代一个字符
select * from llb.llbdebiao where name like 'b%'; -
BETWEEN
BETWEEN ... AND 会选取介于两个值之间的数据范围。
select * from llb.llbdebiao where name_id between 2 and 6; -
NOW
返回当前的日期和时间
-
数据分页
select * from llb.llbdebiao limit 起始页 , 显示页数
select * from llb.llbdebiao limit 显示页数 offset 起始页数 -
删除重复数据
SET SQL_SAFE_UPDATES = 0;
delete s1 from student s1, student s2 where s1.name = s2.name and s1.id>s2.id;
网友评论