一、基本概念
- 1、数据库服务器
- 我们可以理解为数据库服务器即是一台内存较高的计算机,可以在上面运行数据库管理软件
- 2、数据库管理系统
- 如Mysql,是一个软件,用来管理数据库的软件
- 3、数据库
- 即文件夹,用来组织文件
- 4、表
- 即文件,用来存放多条记录,每条记录为多个字段组成的一行数据
二、Mysql基本介绍
- Mysql是目前WEB应用最好的RDBMS(Relation Database Mangement System)关系数据库管理系统之一
- 关系型数据库是将数据保存到不同的表里面,而不是将数据放到一个大仓库内
- 关系型数据库与非关系型数据库的区别是:关系型数据库有表结构,非关系型数据库是通过key-value存储,无表结构
三、SQL数据类型
- char( )定长字符串,存储速度快,但是浪费空间
- varchar( )变长字符串,存储速度慢,可是节省空间
四、约束:作用是保证数据的完整性和一致性
- not null 表示该字段数据不能为空
- default 表示该字段的默认值
- unique 唯一(列唯一,组合唯一)
- primary key 主键 一张列表中只允许出现一个主键(not null + unique)
- auto-increment 自增长
- foregin key 外键 建立两个表之间的联系
五、基础语句,详细见https://www.cnblogs.com/yangyangfubin/p/8179172.html
1.管理数据库语句:
使用数据库:
use test;
添加数据库:
create database 数据库名;
create database test;
修改数据库:
alter database 数据库名;
alter database test;
删除数据库:
drop database 数据库名;
drop database test;
查看所有数据库:
show databases;
2.管理表语句:
添加数据表:
create table 表名(
列名 数据类型 数据约束,
列名 数据类型 数据约束
);
create table student(
name varchar(20) not null,
age int(4)
)
修改数据表:
alter table 表名;
1)在表中增加新字段
alter table student add colunm name varchar(20);
2)删除表中的字段
alter table student drop name;
3)修改表中字段的类型
alter table student modify name varchar(10);
删除数据表:
drop table 表名;
drop table student;
查看所有表:
show tables;
3.管理数据语句:
插入数据:
insert into 表名 (列1,列2...) values (值1,值2...);
insert into student (name,age) values ('张三',20);
更新数据:
update 表名 set 列=修改值 where 条件;
update student set name='李四' where name='张三';
删除数据:
delete from 表名 where 条件;
delete from student where name='李四';
查询数据:
selete * from 表名 where 条件;
selete * from student where name='张三';
六.数据库设计的三大范式
第一范式;要求表的每个字段必须独立的不可分割的单元
学生表: student name ---违反第一范式
张三|狗娃
学生表: student name old_name ---符合第一范式
张三 狗娃
第二范式:在第一范式的基础上,要求表的除主键以外的字段都和主键有依赖关系
一张表只表达一个意思
员工表:employee
员工编号 员工姓名 部门名称 订单名称 ---违反第二范式
员工表:employee
员工编号 员工姓名 部门名称 ---符合第二范式
订单表:
订单编号 订单名称
第三范式:在第二范式的基础上,要求表的除主键以外的字段都只能和主键有直接决定的依赖关系
员工表:employee
员工编号 员工姓名 部门编号 部门名称 ---违反第三范式(出现数据冗余)
1 张三 1 软件开发部
2 李四 1 软件开发部
员工表:employee
员工编号 员工姓名 部门编号 ---符合第三范式
1 张三 1
2 李四 1
部门表:dept
部门编号 部门名称
1 软件开发部
七、什么是存储过程?有哪些优缺点?
存储过程是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
- 存储过程是一个预编译的代码块,执行效率比较高
- 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
- 可以一定程度上确保数据安全
八、索引是什么?有什么作用以及优缺点?
索引是对数据库表中一或多个列的值进行排序的结构,索引就是加快检索表中数据的方法。数据库的索引类似于书籍的目录。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引
- 索引加快数据库的检索速度
- 索引降低了插入、删除、修改等维护任务的速度
- 唯一索引可以确保每一行数据的唯一性
- 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
- 索引需要占物理和数据空间
九、 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
针对上面的描述可以看出,事务的提出主要是为了解决并发情况下保持数据一致性的问题。
事务具有以下4个基本特征。
1.原子性:要么都执行,要么都不执行。
2.一致性:合法的数据才可以被写入,否则事务应该将其回滚到最初状态。
3.隔离性:允许多个用户并发访问。对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式以来于或影响其他事务。
4.持久性:事务结束后,事务处理的结果必须得到固化。即一旦提交,对数据库改变是永久的。
十、乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
- 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
- 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
十一、简单说一说drop、delete与truncate的区别
- delete和truncate只删除表的数据不删除表的结构
- 速度,一般来说: drop> truncate >delete
- DROP则删除整个表(结构和数据)。TRUNCATE 和DELETE只删除数据。
-
应用范围。
TRUNCATE 只能对TABLE; DELETE可以是table和view
十二、什么是视图?以及视图的使用场景有哪些?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
十三、职业规划
因为我刚刚毕业,对社会商业环境还不了解,所以还没制定详细的方案。(这句话实事求是,给人务实的感觉。)但我知道,我需要在这个行业里不断地学习和锻炼,扩充自己的知识面,提升自己的能力,让这份工作变得更有意义。(多踏实,多上进的好孩子!)