什么是Mysql
1.1 数据存储
1.1.1数据库
数据库(
Database
)是按照数据结构来组织、存储和管理数据的仓库,数据库用于记录数据,使用数据库记录数据可以表现出各种数据间的联系,也可以很方便地对所记录的数据进行增、删、改、查等操作。
数据库是一种特殊文件,其中存储着需要的数据
数据库核心元素:
- 记录
- 数据表(记录的集合)
- 数据库(数据表的集合)
1.1.2数据库服务器、数据管理系统、数据库、表与记录的关系
- 记录:文件中的一行内容
- 表:文件
- 数据库:文件夹
- 数据库管理系统:软件(本质是一个套接字程序)
总结:
数据库服务器:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多条内容/多条记录
1.1.2关系型数据库和非关系型数据库
关系型
oracle db2 sqlserver mysql
1、SQL Server是微软, .net程序员最爱,中型和大型项目,性能高
2、Oracle数据库是甲骨文,java程序员,大型项目,特点是适合处理复杂业务逻辑
3、mysql数据库是sun公司,属于甲骨文公司。中型和大型项目。特点是并发性好,对简单的sql处理效果高
4、db2数据库是ibm公司,处理海量数据,大型项目,很强悍.
非关系型
redis memcache mongodb
1.1.3 SQL语句的分类
SQL
是结构化查询语言,是一种用力啊操作RDBMS
的数据库语言,当前关系型数据库都支持使用SQL语言来操作,也就是说可以通过SQL
操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
- SQL语句主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
- TPL:事务处理语言,对事务进行处理,包括 begin transaction、commit、rollback
- DCL:数据控制语言,进行授权与权限回收,如 grant、revoke
- DDL:数据定义语言,进行数据库、表的管理等,如 create、drop
- CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
- 对于web程序员来讲,重点是数据的 crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
- SQL 是一门特殊的语言,专门用来操作关系数据库
- 不区分大小写
1.1.4 数据库命名规则
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
1.2 MySQL介绍
MySQL
是一个 DBMS(数据库管理系统),由瑞典 MySQLAB 公司开发,目前属于 Oracle (甲骨文)公司,MySQL
是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。
**特点:**体积小、速度快、成本低,源码开放
开源 免费 不要钱 使用范围广, 跨平台支持性好, 提供了多种语言调用的 API
是学习数据库开发的首选
概念对比
- DB:数据库,存放数据的容器
- DBMS:数据库管理系统,用于管理DB
- SQL:结构化查询语言,是关系型数据库的通用语言
常用DBMS
- MySQL
- Oracle
- SQL Server
sql语句基础
数据库相关操作
1、数据库
增:
create database xxx; # 创建数据库xxx(名字) 默认字符集utfmb
create database xxx charset gbk; # 创建数据库xxx,并指定字符集GBK
删:
drop database xxx; # 删除数据库xxx
改:
alter database xxx charset utf8; # 修改数据库默认字符集,数据库层面上的修改并不多
查:
show databases; # 查看多有的数据库
show create database xxx; # 查看指定的数据库
切换目录
use XXX; # 代表你的鼠标双击切换目录
select database(); # 查看你当前在那个文件夹
2、表
增:
create table xxx(id int, name char); # 创建表xxx(名字)(列名a 数据类型(数据长度),列名b 数据类型(数据长度))
删:
drop table xxx; # 删除表xxx
改:
alter table xxx rename √√√; # 修改表的名字
alter table xxx modify name char(10); # 将表xxx的name字段改成char(10)
alter table xxx change name 名字 char(3); # 将表xxx的那么字段改成 名字 ,并把类型改成char(3)
查:
show tables; # 查看多有的表
show create table xxx; # 查看指定的表
desc xxx; # 查看表xxx的结构
engine = innoDB
表的存储引擎是innoDB
3、操作记录==》文件中的内容
增
insert into xxx(id,name) values(1, "allen"),(1, "bob"); # insert into 表名(字段列表)values(字段值列表),(字段值列表),(字段值列表),(字段值列表);
insert xxx values(1, "nick"); # 不写给谁传值就指定都传,而且还是按照位置传
insert xxx values(1, "allen"),(1, "bob"); # 可以一次性传递多个值
insert xxx(id) values(5),(6); # 可以指定给某一字段添加数据(前提是其他字段可以设置为null)
删
delete from xxx; # 删除数据表(时间复杂度O(n))xxx的数据,如果表中存在主键并且是自增长,那么下次再插入数据的时候会在此计数上加1,如果想清空整张表,推荐使用truncate(时间复杂度O(1))
delete from xxx where id=1; # 添加限制条件 删除数据表xxx中id为1的数据(O(n))
turncate xxx; # 清空整张列表 O(1)
注意事项:
-
delete from 是删除表中的某些行数据
truncate table 是清空整张列表 -
delete from 删除后,自增字段不重复
truncate table 清空后,自增字段重置为1
-
delete from 可以回滚,truncate table不能回滚(是数据库技术中的操作,放弃修改,使数据库状态恢复到此前的某个时刻。)
改
updata xxx set name="bilibili", id=999 where id=4; # 将表xxx中id为4的数据改为name = bilibili 且 id=999
查
select * from xxx; # 查看xxx表中所有的字段数据
select name from xxx; # 查看表xxx中指定name字段数据
存储引擎
概念
如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL 的插件式存储引擎可以让存储引擎层的开发人员设计他们希望的存储层,例如,有的应用需要满足事务的要求,有的应用则不需要对事务有这么强的要求;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据的查询。
一种类型表明的是一种存储方式
存储引擎:就是表的类型,不同的类型就会对应不同的处理机制去处理他
事务:就是要么同时成功,要么同时不成功
初始操作
# 设置密码
update mysql.user set password=password("设定的密码") where user="root" and host="localhost"; # 修改密码
flush privileges; # 刷新权限
# 忘记密码
(1) 先关闭mysqld服务端
(2) 重新启动:mysqld --skip-grant-tables
(3) 启动客户端:mysql -u
update mysql.user set password=password("设定的密码") where user="root" and host="localhost";
flush privileges;
(4) 重新启动mysqld