建网站做联盟,wordpress网站百度收录首页,昆明网站制作策划,阿里巴巴网络营销方式一、数据库
1.数据储存在哪里#xff1f;
硬盘、网盘、U盘、光盘、内存#xff08;临时存储#xff09;
数据持久化
使用文件来进行存储#xff0c;数据库也是一种文件#xff0c;像excel #xff0c;xml 这些都可以进行数据的存储#xff0c;但大量数据操作#x…一、数据库
1.数据储存在哪里
硬盘、网盘、U盘、光盘、内存临时存储
数据持久化
使用文件来进行存储数据库也是一种文件像excel xml 这些都可以进行数据的存储但大量数据操作还是用数据库文件效率最高
2.什么是数据库
数据库就是存储数据的“仓库”
3.数据库的作用
1.存储大量的数据访问和检索数据管理数据
2.保证数据的完整性
3.安全与共享
4.数据可以进行组合产生新的数据数据分析
4.数据库的发展历史 1.层次模型单个记录以父子关系形成的树状结构树创建了一个层次状结构在其中数据被分解为逻辑的分类和子类使用记录代表逻辑数据单元。 2.网状模型网状模型通过允许记录有多个父子关系来增强层次模型 3.关系模型独立于应用程序的。更改数据库设计而不会影响应用程序成为可能表的行和列这种结构来替换父子框架。使用关系模型我们可以克服早期模型的缺陷在表之间定义复杂的关系。 表(table) 是关系型数据库的核心单元它是数据存储的地方 术语 行 记录实体 列字段 关系表与表之间的关系 1对1 一对一关系是比较少见的关系类型。很多数据库也很少包含一对一关系。 A 表中的一行最多只能匹配于 B 表中的一行反之亦然。 人 身份证号1 1 1 1------------------------------------------- 1 : 11对多: 最常用的关系类型是一对多关系通常把一对多关系中“多边”的表称为从表把“一边”的表称为主表。 人 银行卡 1 N 1 1 ----------------------------------------------- 1 N多对多 学生 老师 1 N N 1------------------------------------------------ N : N
4.非关系模型noSQL
二、关系型数据库
关系型数据库有哪些
Access Mysql (小型企业 免费)Sql Server(微软 ,中企) Oracle (大型) , DB2 , SyBase 等… 数据库Database
DBMS(Database Manage System)
RDBMS( Relation Database Manage System) 数据库是存储和管理数据的仓库但数据库并不能直接存储数据数据是存储在表中的。
在存储数据的过程中一定会用到数据库服务器所谓的数据库服务器就是指在计算机上安装一个数据库管理程序。 1.常见数据库产品 2.关系与非关系数据库的对比
关系型数据库的优势:
1.复杂查询可以用SQL语句方便的在- -个表以及多个表之间做非常复杂的数据查询。
2.事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库对方的优势就是自己的弱势反之亦然。
非关系型数据库的优势:
1.性能NOSQL是基于键值对的可以想象成表中的主键和值的对应关系而且不需要经过SQL层的解析所以性能非常高。
2.可扩展性同样也是因为基于键值对数据之间没有耦合性所以非常容易水平扩展。
3. MySQL数据库
发展史
2003年12月MySQL 5.0版本发布
2008年1月MySQL AB公司被Sun公司以10亿美金收购
2008年11月MySQL 5.1发布.
2009年4月Oracle公 司以74亿美元收购Sun公司
2010年12月MySQL 5.5发布
详细内容:
1、MySQL的历史可以追溯到1979年一个名为Monty Widenius的程序员在为TcX的小公司打工并且用BASIC设计了一个报表工具使其可以在4MHz主频和16KB内存的计算机上运行。当时这只是一个很底层的且仅面向报表的存储引擎名叫Unireg。
2、1990年TcX公司的客户中开始有人要求为他的API提供SQL支持。Monty直接借助于mSQL的代码将它集成到自己的存储引擎中。令人失望的是效果并不太令人满意决心自己重写一个SQL支持。
3、 1996年MySQL 1.0发布它只面向一小拨人相当于内部发布。到了1996年10月MySQL 3.11.1发布(MySQL没有2.x版本)最开始只提供Solaris下的二进制版本。一个月后Linux版本出现了。在接下来的两年里MySQL被依次移植到各个平台。
4、19992000年MySQL AB公司在瑞典成立。Monty雇了几个人与Sleepycat合作开发出了Berkeley DB引擎, 由于BDB支持事务处理因此MySQL从此开始支持事务处理了。
5、2000MySQL不仅公布自己的源代码并采用GPL(GNU General Public License)许可协议正式进入开源世界。同年4月MySQL对旧的存储引擎ISAM进行了整理将其命名为MyISAM。
6、2001年集成Heikki Tuuri的存储引擎InnoDB这个引擎不仅能持事务处理并且支持行级锁。后来该引擎被证明是最为成功的MySQL事务存储引擎。MySQL与InnoDB的正式结合版本是4.0
7、2003年12月MySQL 5.0版本发布提供了视图、存储过程等功能。
8、2008年1月MySQL AB公司被Sun公司以10亿美金收购MySQL数据库进入Sun时代。在Sun时代Sun公司对其进行了大量的推广、优化、Bug修复等工作。
9、2008年11月MySQL 5.1发布它提供了分区、事件管理以及基于行的复制和基于磁盘的NDB集群系统同时修复了大量的Bug。
10、2009年4月Oracle公司以74亿美元收购Sun公司自此MySQL数据库进入Oracle时代而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。
11、2010年12月MySQL 5.5发布其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。MySQL 5.5不是时隔两年后的一次简单的版本更新而是加强了MySQL各个方面在企业级的特性。Oracle公司同时也承诺MySQL 5.5和未来版本仍是采用GPL授权的开源产品。
…
MySql 8.0 新版本。
一般使用的都是Mysql 5.x
4.MySQL特点
安装简单部署迅速,
适合大批量快速部署
易于扩展扩展性能极佳
架构灵活可以根据业务特点配置适合自己的MySQL集群
开源可以根据自己的业务需求进行二次开发,
使用广泛几乎所有的互联网公司都在使用MySQL数据库
对于OLTP业务可以进行良好的支撑
5.Mysql的安装
图形界面用SqlYong
注 10061错误码检查你的服务是否启动
三、SQL
SQL(Structured Query Language)语言是1974年由Boyce和Chamberlin提出的一种介于关系代数与关系演算之间的结构化查询语言是一个通用的、功能极强的关系型数据库语言。
1.SQL语句
–数据定义语言DDL:data definition language (定义数据库定义表)
–数据查询语言DQL: data query language 查询 数据
–数据操作语言DML: data manipulation language 操作数据
–数据控制语言DCL: data control language 用户控制 权限控制
岗位 DBA (database 管理员)
2.DDL 定义数据库及表
1. 创建数据库create database 数据库名;2. 使用数据库use database 数据库名;3. 删除数据库 drop database 数据库名数据库命名规范1. 标识符不能是所用RDBMS的保留字2. 不允许嵌入空格或其它特殊字符3. 第一个字符必须是下列字符之一a-z 和 A-Z下划线 (_)、at 符号 () 或者数字符号 (#)4. 后续字符可以是at符号、美元符号 ($)、数字符号或下划线,字母。4. 创建表 (数据是放在表中)语法create table 表名 (列名 列的数据类型 [列的约束] , ...)注: char , varchar 两个类型需要设置长度其它的类型都不需要设置方法2复制表只能复制表的数据与表字段注表的约束不能复制CREATE TABLE student2 SELECT * FROM student5. 删除表drop table 表名;6. 修改表增加列alter table 表名 add 列名 数据类型ALTER TABLE student ADD address VARCHAR(100)删除列alter table 表名 drop 列名更改列alter table 表名 modify 列名 类型 -- 只改列的类型 alter table 表名 change 旧列名 新列名 类型重命名表alter table 旧表名 rename 新表名3.mysql中的数据类型 数字 A- 整型 int 4字节 B- 浮点 float 4字节 7位 double 8 字节 15位 decimal(总位数小数点后的位数) decimal(M,D) 17字节 30位小数 注意 M为总位数D为小数位M必须大于D 字符串 A- 固定长度字符串 char(长度 B- 可变长度字符串 varchar(最大的长度) C- 超长字符串 text
nchar , nvarchar , ntext 前面加n, 说明支持unicode编码即可以显示中文
一般不会去使用n开头的类型为什么呢 因为在创建数据库时就已经指定了编码支持中文显示
3. 日期
A: date 年月日 yyyy - MM - dd
B datetime 年月日 时分秒 yyyy-MM-dd HH:mm:ss
扩展数据类型
text : 存放超长文本
blob: 二进制
enum: 枚举
4.数据完整性分类
什么是数据的完整性
完整性 准确性 可靠性
Q 如何保证数据的完整性
数据完整性(约束)的分类
–1.实体完整性 主键约束 、 唯一约束、 标识列
• 保证 一 行数据是有效的
主键约束 primary key
唯一约束 unique
标识列 : 系统给一个自增长的值这个值不会重复一般默认从1开始每次加1(步长) auto_increment
–2. 域完整性 非空约束Not Null 默认约束Default定义与实体时都用default
• 保证 一 列数据是有效的
–3. 引用完整性 外键约束
• 保证引用的编号是有效的
–4.用户自定义完整性
• 保证自定义规则
5.DML** 数据操作语言
表的curd:
CURD 操作即指对数据库中实体对象的增Create、改Update、查Read、删Delete操作。
增加数据 :
INSERT [INTO] 表名[(列名,…)] VALUES (值表达式,…)
– 注 如果所有的列都要插入数据 表名后面的列名可以省略
INSERT [INTO] 表名SET 列名值表达式, …
INSERT [INTO] 表名1[(列名,…)] SELECT {*|列名,…} FROM表名2
– 上面这种方式添加数据要求查询的列与插入的列数量与数据类型要一致
注意
在MySQL3.0.2 之后 into关键字在INSERT中是可以省略的但是基于标准考虑建议大家在书写时保留该关键字
INSERT INTO student VALUES(NULL,111,18,DEFAULT),
(NULL,112,18,DEFAULT),
(NULL,113,18,DEFAULT),
(NULL,114,18,DEFAULT)-- 插入多条数据修改数据
UPDATE 表名 SET 列名 更新后的值, [WHERE 条件子句]
删除数据
方法1 :
DELETE FROM 表名 [WHERE 子句]
方法2
TRUNCATE TABLE 表名
DELETE会记录日志意味着删除后的数据还可以恢复但是效率低。
TRUNCATE不会记录日志删除后的数据不能恢复但是效率高。TRUNCATE不能用于有外键约束引用的表 。
TRUNCATE 可以重置自增列 delete 不能重置自增列
TRUNCATE 只能删除整表不能删除部分
DQL:
查询数据:
select * from 表名 – 所有列
select 列名, 列名2 … from 表名 – 所有列
预习
模糊查询
聚合函数
分组
表连接 join
四、作业
一、创建表
题目#创建student表
stu_id ‘学号’,
stu_name ‘姓名’,
stu_sex ‘性别’,
stu_age ‘年龄’,
stu_major ‘专业’,
stu_college ‘学院’
create table student (
stu_id bigint(11),
stu_name char(12),
stu_sex enum(‘男’,‘女’),
stu_age tinyint(255),
stu_major char(9),
stu_college char(12)
);
#创建course表
cs_id 课程编号,
cs_name ‘课程名称’,
cs_credit ‘课程学分’,
cs_type ‘课程类别’,
cs_depart ‘院系名称’
create table course(
cs_id int(11),
cs_name varchar(50),
cs_credit varchar(255),
cs_type char(12),
cs_depart char(6)
);
3、在表中插入数据记录
二、修改
1.修改年龄在18-22之间的学生,在原来年龄基础上减去2岁
// and 并且 or 或者
update student set stu_age stu_age -2 where stu_age18 and stu_age22
2.修改编号为201804550107 的学生的专业改成大数据
uupdate 表名 set 专业 ‘大数据 ’ where 编号 ‘201804550107’
3.修改课程名为区块链 的学分为 3分
update 课程表 set 学分 3 where 课程名 区块链;
4.修改编号为7200422的名字为马克思列宁主义,院系名称为基础
update 课程表 set 名字 马克思列宁主义 , 院系名称 基础 where 编号 7200422
5.修改名字为郭奎的学生的性别为女年龄比原来减少5岁
update 学生 set 性别女 , age age - 5 where 姓名 郭奎
三、查询
1.查询全部课程的信息。
select * from 课程表
2.查询信工学院开设的课程名、课程号及学分。
select 课程名,课程号,学分 from 课程 where 开课单位 信工学院
3.查询学分超过3学分的课程代码、课程名和开课单位。
select 课程代码,课程名,开课单位 from 课程 where 学分3
4.查询计科专业和大数据专业的学生信息。
select * from 学生表 where 专业 计科专业 or 专业 大数据专业
5.查询不是信工学院的学生姓名和学号。
select 姓名学号 from 学生表 where 学院 ! ‘信工学院’
6.查询年龄是17,18,19的学生姓名和专业。
select 姓名专业 from 学生表 where 年龄 17 or 年龄 18 or 年龄 19
select 姓名专业 from 学生表 where 年龄 in 171819
7.查询学分在2到4之间课程的信息。
select * from 课程 where 学分 2 and 学分4
// between 开始值 and 结束值
select * from 课程 where 学分 between 2 and 4
8.查询课程名称中带“数据”的课程名、课程号及开课单位。
// 模糊查询 - 》 mysql 模糊查询
select 课程名,课程号,开课单位 from 课程 where 课程名称 like ‘%数据%’
select 课程名,课程号,开课单位 from 课程 where 课程名称 包含 数据
9.查询信工学院的的专业有哪些。
select 去重复 专业 from 学生 where 学院 信工学院
select distinct 专业 from 学生 where 学院 信工学院
10.查询年龄为空的学生信息。
select * from 学生 where 年龄为空
select * from 学生 where 年龄 is null
11.查询不是信工学院开设的集中实践课的开课单位和课程名称。
select 开课单位, 课程名称 from 课程表 where 开课单位 ! 信工学院 and 类型 集中实践课
12.查询信工学院开设的课程的类型有哪些。
select * from 课程 where 开课单位 信工学院
13.查询学生的信息查询结果按姓名升序排序。
select * from 学生 order by 姓名 asc
四、删除
1.删除所有学分低于2分的课程并且是文法学院的数据
2.删除id为29299131的课程
3.删除计算机导论并且学分为7分并且是基础学院的数据
4.删除编号为5223113,5243112,52235112,522112 的课程信息( or / in )
5.删除没有性别或者没有名字的学生的信息
delete from student where 性别 is null or 姓名 is null