一、数据库的基本概念:
数据库(database/DB)是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

数据库作用:户可以对文件中的数据进行新增、查询、更新、删除等操作。
数据库的特点:
1. 持久化存储数据的。其实数据库就是一个文件系统
2. 方便用户存储和管理数据
3. 使用了统一的方式操作数据库 – SQL

二、Mysql的安装:

1.下载Mysql : Mysql官网下载 2. https://dev.mysql.com/downloads/installer/ 点击链接进入页面,找到图位置进行下载

mysql数据库软件安装 mysql数据库安装下载_sql


后面按照步骤一步一步安装,

4. 配置环境变量

文件夹下的bin路径添加到变量值中,

mysql数据库软件安装 mysql数据库安装下载_存储过程_02


三、Navicat for MySQL测试mysql安装成功

打开Navicat for MySQL,新建连接,填写用户和密码

mysql数据库软件安装 mysql数据库安装下载_存储过程_03


mysql数据库软件安装 mysql数据库安装下载_sql_04


测试成功

四、SQL的分类

1.DDL 数据定义语言 —Data Definition Language

//用来定义数据库对象:数据库,表,列

2.DML 数据操作语言 —Data Manipulation Language

//用来对数据库中表的数据进行增删改

3.DQL 数据查询语言 —Data Query Language

//用来查询数据库中表的数据

4.DCL 数据控制语言 —Data Control Language

//用来定义数据库的访问权限及创建用户

mysql数据库软件安装 mysql数据库安装下载_sql_05


创建数据库:

create database 数据库名称;

创建数据库,并指定字符集

create database 数据库名称 character set 字符集名;

查询某个数据库的字符集:查询某个数据库的创建语句

show create database 数据库名称;

修改

修改数据库的字符集

alter database 数据库名称 character set 字符集名称;

删除数据库

drop database 数据库名称;

1、表的创建与管理

create table 表名

(

列名1 数据类型 约束,

列名2 数据类型 约束,

…….,

列名n 数据类型 约束

);
示例
CREATE TABLE goods_info
(
Goods_id CHAR(6),
Goods_name VARCHAR2(20),
Goods_price NUMBER(9,2),
Goods_num NUMBER(9),
Goods_origin VARCHAR2(20)
);
。。。。。。。
MySQL常见面试题
一、CHAR和VARCHAR的区别

CHAR和VARCHAR类型在存储和检索方面有所不同
CHAR列长度固定为创建表时声明的长度,长度值范围是1到255
当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格

二、delete、drop、truncate区别:
truncate 和 delete只删除数据,不删除表结构 ,drop删除表结构,并且释放所 占的空间。
删除数据的速度,drop> truncate > delete
delete属于DML语言,需要事务管理,commit之后才能生效。drop和truncate属于DDL语言,操作立刻生效,不可回滚。
使用场合:
当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a where clause), 用 delete.
注意: 对于有主外键关系的表,不能使用truncate而应该使用不带where子句的delete语句,由于truncate不记录在日志中,不能够激活触发器

三、存储过程

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

优点:

(1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

(2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

(3).存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

(4).存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

(5).存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

四、MySQL的事务隔离级别

未提交读(Read Uncommitted):允许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。也就是可能读取到其他会话中未提交事务修改的数据
提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)。
可重复读(Repeated Read):可重复读。无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响。
串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞

MySQL数据库(InnoDB引擎)默认使用可重复读( Repeatable read)

**Mysql面试题参见与 Mysql基础