数据:指的是所有能输入到计算机并被计算机程序处理的符号的介质的总称,用于输入计算机进行处理。
数据类型:是一个值的集合。
数据库系统DBS: 由数据库DB,数据库管理系统DBMS,应用软件,数据库管理员组成的存储、管理、处理、维护数据的系统。
数据库DB: 存放数据的一个仓库。
数据库的专业定义:数据库是长期存储在计算机内的、有组织的、可共享的数据集合。
数据库管理系统DBMS:是位于用户和操作系统之间的数据管理软件。
数据库管理系统是数据库系统的核心,如MySQL。
数据库管理系统的核心是数据库(或数据)。
数据库技术的根本目的是要解决数据共享问题。
数据库系统DBS包括数据库DB和数据库管理系统DBMS。
数据库系统>数据库管理系统>数据库
概念模型就是将现实的一些数据的信息抽象成概念。
E:Entity实体;R:Relationship联系。
E-R图是概念模型中的一种表现形式,E-R图主要包含三个概念,分别是:实体集、联系集和属性。
(3)多对多(M:N)
比如:一个学生可以再多个教室上课,一个教室也可以容纳多个学生,因此联系表为:
3. 多元模型
表示两个以上实体集之间的联系,称为多元联系。一个实体可以关联多余两个的实体。比如:
层次模型是数据库中最早出现的数据模型。层次模型的数据结构有如下特点:
(1)每棵树有且仅有一个节点没有父节点,该节点就是根节点;
(2)除根节点以外的其他节点有且仅有一个双亲节点;
(3)父子节点之间的联系是一对多(1:N)的联系。
网状模型的特点:
(1)有一个以上的节点没有父节点;
(2)允许节点有多个父节点;
(3)允许两个节点之间有多种练习(复合联系)。
比如一个学生可以选多门课,一门课也可以有多个学生选择,网状图就如下:
学生 <——> 课程
关系数据库系统采用的就是关系数据模型作为数据的组织方式。关系模型是建立在严格的数学概念的基础上的。
关系模型的数据结构是一张规范化的二维表,由表名、表头和表体三部分构成。
数据库系统中有记录型和记录值两个概念。记录型就是表头,记录值就是具体的值。
所谓的模式 就指的是记录型,它是数据库中全体数据的逻辑结构和特征描述,模式只关心描述,不关心具体的值。模式的一个具体的值称为一个实例或状态。
为了能够在内部实现这三个抽象层次的联系和转换,DBMS在三级模式之间提供了二级映像功能。二级映像保证了数据库系统的数据独立性:逻辑独立性与物理独立性。
SQL中的关系也可以用三级模式来体现:
数据库分为关系型数据库和不只是SQL的数据库(NoSQL泛指非关系型的数据库)。
关系型数据库的存储:表。
主码(主关键字):唯一确定一行记录的属性组。
表的一行是一条记录,对应一个对象的数据。
表设计问题:存在数据冗余,存在插入、更新和删除异常。
通过主键和外键来建立表之间的关系,适当的冗余有利于数据查询效率。
SQL(Structured Query Language):结构化语言,适用于访问和处理数据库的标准计算机语言。
需求分析:分析用户的需求,包括数据、功能和性能需求;
概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
数据库的实施:包括编程、测试和试运行;
数据库运行与维护:系统的运行与数据库的日常维护。
create
alter
drop
#在名为 testDatabase的数据库不存在时创建该库,这样可以避免报错。
create database if not exists testDatabase;
#删除数据库
delete database testDatabase;
#修改数据库的编码格式
alter tesstDatabase character set utf8;
#创建表
create table myTable(
id int primary key,
name varchar(5) not null,
age int default 18,
sex varchar(1)
);
#删除表
drop table myTable;
#修改表
-- 给表添加一列数据address
alter table myTable add(
address varchar(100);
-- 修改列类型
alter table myTable
modify sex char(2);
-- 修改列名字
alter table myTable
change age realAge char(2);
-- 删除列
alter table myTable
drop age;
-- 修改表名
alter table myTable
rename to Table;
)
#alter创建普通索引
alter table 'myTable' add index ('age')
#create创建索引
-- 创建唯一索引
create unique index index1 on 'myTable' ('column1')
-- 创建普通索引
create index index2 on 'myTable' ('column2')
-- 创建多列索引
create index index3 on 'myTable' ('column1', 'column2')
#删除索引
-- 删除主键索引
alter table 'myTable' drop primary key
-- 删除普通索引或唯一索引
alter table 'myTable' drop index index2
-- 或
drop index index3 on 'myTable'
#查看索引
show index from myTable;
show keys from myTable;
#创建视图
create or replace view myView as
select id,name
from table1
where 1=1
#删除视图
drop view myView;
#修改视图
alter view as
(select * from table2 where 1=1)
select
从表/视图中检索数据
update
更改表中的数据
-- 将表中的所有age字段改成20
update myTable set age=20;
-- 将表中的age字段为20的全部改成0
update myTable set age=0
where age=20;
-- 修改表中id小于10的数据的age和gender的值为null
update myTable
set age=null, gender=null
where id<10;
delete
从表中删除行-- 删除表中id大于20的用户信息
delete from myTable where id>20;
-- 删除名字为王二狗的用户信息
delete from myTable where name='王二狗'
-- 删除表中的所有数据
delete from myTable;
insert into
增加数据行列表-- 增加行数据
insert into myTable values(110, 'Tom', 18);
-- 把查询的结果插入到表中(前提是你查出的这几条数据与要插入的这个表的列字段顺序一致)
insert into myTable1(name, age) select name1, age1 from myTable2 where 1=1;
grant -- 授予权限
revoke -- 回收权限
commit -- 将更改写入磁盘
rollback -- 作废上次的更改
select
from
where