数据库概念
一款软件,安装在计算机 | 服务器上,php
只要告诉它:建立一个文件 | 新增一个数据 | 删除一个数据,它就能帮咱们操做java
对应名称关系:文件夹(库)| 文件(表)| 表头(字段)| 数据/记录(表数据)python
MySQL:用于管理数据的一个软件(两个程序)mysql
只要是基于网络通讯,底层都是socket!!!
服务端软件:c++
socket服务端 web
本地文件操做redis
解析指令sql
客户端软件:mongodb
socket客户端数据库
发送指令
解析指令
客户端能够有不少个,python,java,php,c++均可以编程一个客户端,用代码指定ip port连接上服务端便可操做
服务端 - 多个客户端:共同的语言 >>> 解析指令(sql语句)
DBA:
sql语句优化
RDBMS:数据库管理系统
其余相似软件:
关系型数据库:sqlite,db2,oracle,access,sql server,MySQl
彼此之间有约束或者有联系
一般以表格方式存储,第一步须要建立表结构!
非关系型数据库:mongodb,redis
存储方式:k,v 键值对形式
数据间没有关系
MySQL的安装
终端最好以管理员身份运行
切换到mysql目录下启动mysqld服务端(阻塞,监听地址,固定的ip和端口)
cd D:\mysql56 D:
新开cmd窗口启动mysql客户端
1、启动
服务端
mysqld
客户端
mysql -h 127.0.0.1 -P 3306 -uroot -p
(在本机登陆)也支持简写
mysql -uroot -p
让你输入密码,不用管直接敲回车
sql语句第一条命令:
show databases; # 查看全部数据库
注意:输入sql语句的时候,必定要用英文分号结束
若是输入的sql语句错了不想执行的话能够在后面跟上\c取消该命令的执行
退出客户端:exit,quit
二、将mysql启动文件路径添加到环境变量
三、将mysqld制做成系统服务
1)必定要先将mysqld杀死
2)mysqld --install 将mysqld服务端制做成系统服务(开机自启动)
# 查看mysqld进程 tasklist |findstr mysqld # 杀死mysqld进程 taskkill /F /PID 'PID号' # 将mysqld这款软件作成系统服务软件 mysqld --install # 查看计算机当前运行程序数 运行:services.msc
三、设置密码
mysqladmin -uroot -p password "123" # 第一次修改完密码之后,以后还修改密码须要 mysqladmin -uroot -p123 password "123456" # 为了后续调试方便,这里把密码设为空值 mysqladmin -uroot -p123 password "新密码"
四、破解密码
1.先关闭服务端
2.以跳过受权表的方式(用户密码认证模式)从新启动服务端
mysqld --skip-grant-tables
3.以管理员登陆
4.修改mysql库里面的user表
update mysql.user set password=password(123) where user='root' and host='localhost';
flush privileges;
5.先关闭跳过验证的服务端,以正常模式启动服务端
6.输入用户名密码正常登录
五、解决编码问题
mysql命令:"\s" 查看编码
mysql不输用户名和密码,默认以游客模式登陆
1.在mysql根目录下新建一个my.ini的配置文件,在里面固定加上下面的配置便可设置编码问题
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci
[client] default-character-set=utf8
[mysql] default-character-set=utf8
2.从新启动的你mysql服务端,配置才会生效

六、基本sql语句操做
对数据的增删改查
sql书写错误,只要没加分号,\c可以使前面的sql语句失效
1)文件夹(库)
# 增 create database db1 charset utf8; # 查 show databases; show create database db1;
# 改
alter database db1 charset gbk; # 删 drop database db1;
2)文件(表)
文件首先须要在文件夹下面,因此在操做文件以前,应该先肯定操做的是哪一个文件夹下面的文件
# 切换到指定的库 user db1; select database(); # 查看当前所在的库 # 增 create table t1(id int,name char); # 建立出来的多是多个文件,解耦管理 # 查 show tables; show create table t1; # 查看表的详细信息 describe t1; == desc t1; # 查看表结构 # 改 alter table t1 modify name char(16); # 删 drop table t1;
3)数据(表数据)
# 增 insert into db1.t1 values (1,'jon'),(2,'ken'),(3,'bob'); # into可加可不加,db1能够不指定,默认就是在当前库下 # 查 select id,name from db1.t1; # db1可不指定,默认当前库下 select * from t1; # 改 update db1.t1 set name='DSB' where id > 1; update db1.t1 set name='DSB' where id = 2 or id = 3; # 删 delete from db1.t1 where id >3; delete from db1.t1 where name='egon' # 这里注意若是少了一个引号,后面不管敲什么都没有用了须要将引号补全
存储引擎
不一样的应用软件处理不一样类型的数据
mysql5.5版本及以上默认的存储引擎是innodb
innodb:支持行锁表锁,外键,事物,安全性更高,较myisam数据更安全
myisam:仅仅支持表锁不支持行锁,查询速度较innodb更快
memory:内存引擎,将全部的数据直接放在内存,一旦断电数据所有消失
blackhole:一切存入其中的数据都会消失
create table t1(id int,name char(16))engine=innodb;