一、数据库介绍
1、数据库技术产生于60年代末期,是计算机科学的中重要分支
2、数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的普及,比如商城、银行、学校、通信等。
3、数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。
二、常见数据库产品
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统。
SQL serve美国微软公司司发布的一款关系型数据库 。优点: 1. 图形化用户界面,更加直观、简单。 3. 丰富的编程接口工具,为用户进行程序设计提供更多选择余地。 4. SQLserver 和 Windows NT 完美集成,可以利用 NT 的愈多功能。 5、具有很好的伸缩性,可跨界运行
MySQL 开源软件,支持Windows,iOS,unix,Linux等操作系统,是一个小型关系型数据库管理系统 ,被广泛地应用在中小型网站中。特点有:
- 开放源码;
- 高度非过程化;
- 面向集合的操作方式;
- 以一种语法结构提供多种使用方式; 语言简洁,易学易用。
三、数据库产品的分类
3.1 关系型数据库(SQL)
关系型数据库代表性产品Oracle、mysql等。数据的存储以表格的形式,表与表之间存在关联关系。
3.2 非关系数据库(noSQL)
非关系型数据库不需要固定的表结构,通常也不存在关联关系,但在互联网大数据存取上具有关系型数据库无法比拟的性能优势。目前非关系型数据库仍然没有统一的标准,大概分为两类
a) 键值存储型数据库;主要通过key来添加、删除、查询数据,优点高性能,易用、高并发。典型产品:Redis
b) 面向文档型数据库; 类似json,比键值存储型数据库查询效率稍高,允许嵌套键值。典型产品:MongoDB
四、数据库基本概念
数据(data):数据库中存储的基本对象,是描述事物的记录(文字、图片、音频、视频等)
数据库(database DB):存储在计算机内的、有组织的、可共享的大量的数据集合。
数据库管理系统(DBMS):软件产品:可以方便的组织和存储、获取和维护数据。
数据库系统(DBS):是一个总称,包括数据库、应用软件、管理员、用户。例如《xxx学生管理系统》《xxx商城管理系统》
数据库设计相关概念:
实体:现实世界中存在的可相互区分的事物。某一个学生,某公司,苹果手机
实体集:大量同类型实体的集合,学生,教师,手机,汽车
属性:描述实体的特征:姓名,性别,生日,籍贯,爱好,身份证号,,
键:可以唯一区分实体的属性。 身份证号, 指纹、DNA、虹膜,,,
主键:适合在数据库中使用的用来唯一区分实体的属性。 身份证号, id
五、实体(表)之间的关系
一对一关系(1:1): 假如实体集A中的每一条记录,实体集B中有唯一一条记录与之对应,反之亦然,则称实体集A与实体集B为一对一关系。例:丈夫与妻子 、个人与身份证,班级与班长
一对多关系(1:n):例: 母亲与子女,
多对多关系(m:n):医生与病人,教师与学生, 学生与课程
六、MySQL中的数据类型
mysql数据库的数据类型
类型 大小 用途 CHAR 0-255字节 定长字符串,只能存储数字、英文 VARCHAR 0-65535 字节 变长字符串,可存储汉字 TINYTEXT 0-255字节 短文本字符串 TEXT 0-65535字节 长文本数据 MEDIUMTEXT 0-16 777 215字节 中等长度文本数据 LONGTEXT 0-4 294 967 295字节 极大文本数据
整数类型 字节 范围(有符号) 范围(无符号) 用途 TINYINT 1字节 (-128,127) (0255) 小整数值 SMALLINT 2字节 (-32 768,32 767) (065 535) 大整数值 INT或INTEGER 4字节 大整数值 BIGINT 8字节 极大整数值 FLOAT 4字节 单精度浮点数值 DOUBLE 8字节 双精度浮点数值
AUTO_INCREMENT(自动递增)
每次插入一条新数据时,自动的创建主键字段的值。它的开始值是1,每条新纪录自动加1;
七、数据库备份与还原
7.1 冷备份与热备份
冷备份:停止mysql服务,去数据库安装目录下直接复制数据库。
热备份:不需要停止mysql服务,直接将数据库存储为 .sql 文件即可。
7.2 数据库还原
先创建一个空的数据库,然后右键选择运行 SQL文件=》选择刚才备份的.sql文件
八、SQL语言
作用:执行对数据库中的记录 C( Create) R (retive) U (update) D(delete)操作(增删改查),是程序开发人员的基本功。
8.1 新增数据(插入记录)
语法: INSERT INTO 表名(字段名1,字段名2, ...) VAULES( 值1,值2,...)
insert into 学生(学号,班号,姓名,性别) values('B0008','0531B','赵爽',1)
注意:
1) 字段与值的顺序必须一致
2) 值的数据类型必须与字段的数据类型一致。
3)字符串和日期类型必须加单引号;数字类型不需要加引号
8.2 修改数据
语法: UPDATE 表名 SET 字段1名=值1,字段2名=值2,.... WHERE 条件
update 学生 set 姓名='李四',手机号='13888888888' where id=10
8.3 删除记录
语法: DELETE FROM 表名 WHERE 条件
delete from 学生 where id=1
8.4 查询数据
语法: SELECT 字段1名 AS 别名1,字段2名 AS 别名2,.... FROM 表名
条件子句 WHERE 条件1 AND 条件2 OR 条件3 ( > >= < <= != =)
模糊查询 WHERE 字段名 LIKE '%条件'
'李%' 所有李开头的
'%李' 所有李结尾的
'%李%' 包含李字符的
NOT '李%' 所有非李开头的
查询结果排序 ORDER BY 字段名 DESC( ASC) ASC默认项,升序(从小到大);DESC降序(从大到小)
分页查询: LIMIT 0,10
查询结果分组 GROUT BY 字段
例:
select GROUP_CONCAT(姓名),性别 from 学生 group by 性别
8.5 统计函数
8.5.1 count() 总计
-- 统计查询结果:查询记者有多少人
select count(id) as 总数 from caijing2016 where title like '%记者%'
8.5.2 min() 和 max()
select max(成绩) from 成绩
8.5.3 sum() 和 avg()
sum() 求和
avg() 求平均数
select sum(成绩) from 成绩
select avg(成绩) from 成绩
8.6 多表联合查询
a) 内连接
语法: SELECT * FROM 表1 INNER JOIN 表2 ON 表1.联结字段=表2.联结字段
SELECT * FROM 学生 INNER JOIN 班级 ON 学生.班号 =班级.班号
b) 左连接(右连接)
语法: SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.联结字段=表2.联结字段
select * from 学生 left join 班级 on 学生.班号=班级.班号
左连接。左边为主表,右为从表,主表所有记录优先显示,从表中无对应记录的话以null填充
c) 三表联合查询
-- 多表联合查询
SELECT
学生.姓名,
课程.课程名,
成绩.成绩
FROM
成绩
INNER JOIN 学生 ON 成绩.学号 =学生.学号
INNER JOIN 课程 ON 成绩.课程编号 = 课程.id