那Mysql能干吗呢?它就是一款软件,安装在任何一台计算机或者服务器上的时候,只要我告诉它建立一个文件,新增一个数据,删除一个数据它就能帮我去作想要的操做java
那咱们暂且能不能理解为mysql就是用来帮咱们操做文件的!python
MySQL:用于管理文件的一个软件(两个程序)mysql
-服务端软件c++
-socket服务端redis
-本地文件操做sql
-解析指令mongodb
-客户端软件数据库
-socket客户端编程
-发送指令
-解析指令
客户端能够有不少个,python,java,php,c++均可以编程一个客户端,用代码指定ip port连接上服务端便可操做
那么问题来了,不一样的客户端练我一个服务端,语言不相同没法实现交流。因此应该有共同的语言才行>>>解析指令(sql语句)
技能:
-安装 服务端和客户端
-连接
-学习sql语句规则,指定服务端作任何操做
mysql只是一种可以帮助咱们管理数据的软件,还有其余相似的软件也是经过发送指令来帮你管理数据库
其余相似软件:
关系型数据库:sqlite,db2,oracle,access,sql server,MySQl(必需要表格存储,须要创建表格(k能够就是user, v就是能够是多类型的,好比说是大列表,大字典,大字典中又大字典等))
非关系型数据库:mongodb,redis (数据存储方式k,v键值对的形式)
关系型:彼此之间有约束或者有联系
总结:mysql就是帮助咱们远程在文件上作相应操做的
mysqld服务端
mysql客户端
软件目录结构初识
终端最好以管理员身份运行
切换到mysql目录下启动mysqld服务端(阻塞,监听地址,固定的ip和端口)
cd D:\mysql56 D:
新开cmd窗口启动mysql客户端
连接mysql:
mysql -h 127.0.0.1 -P 3306 -uroot -p 密码不输,直接回车
若是是在本机登录mysqld服务端,能够简写为mysql -uroot -p
客户端服务端请求流程分析
show databases诠释文件夹和库概念
环节变量配置
系统服务制做(制做以前必定要先把mysql关闭)
# 查看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 "新密码"
先关闭mysqld服务端
以跳过受权表的方式在命令行中启动mysqld服务端
mysqld --skip-grant-tables
客户端直接以无密码的方式登录root用户修改密码
mysql -uroot -p
修改管理员密码
update mysql.user set password=password("123") where user="root" and host="localhost"; flush privileges; # 刷新权限
命令行杀死mysqld服务
tasklist |findstr mysqld taskkill \F \PID 'PID'
服务管理正常启动mysqld
mysql命令:"\s" 查看编码
修改配置文件,执行时会自动查找my.ini文件
mysql不输用户名和密码,会默认以游客模式登录,很差!
# my.ini配置文件特色 [mysql] #终端输入mysql打头的命令就会加载下面的配置 username='root' # 演示确实加载改文件,可是username叫user才正确 password = '123' [mysqld]
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
mac系统
finder中切换到默认安装路径下/usr/local/mysql
下面就是一大堆文件目录
配置文件是my.cnf,没有int等windows上的配置文件
对数据的增删改查
sql书写错误,只要没加分号,能够加\c使前面的sql语句失效
针对文件夹的(库)
# 增 create database db1 charset utf8; # 改 alter database db1 charset gbk; # 查 show databases; show create database db1; # 删 drop database db1;
针对文件的(表)
文件首先须要在文件夹下面,因此在操做文件以前,应该先肯定操做的是哪一个文件夹下面的文件
# 切换文件夹 use db1; select database(); # 查看当前所在的库 # 增 create table t1(id int,name char); # 建立出来的多是多个文件,解耦管理 # 改 alter table t1 modify name char(16); # 查 show tables; show create table t1; # 查看表的详细信息 describe t1; == desc t1; # 查看表结构 select name from userinfo where name='egon' or id=3 # 删 drop table t1;
针对(记录)
# 增 insert into db1.t1 values (1,'egon'),(2,'kevin'),(3,'jason'); # into可加可不加,db1能够不指定,默认就是在当前库下 # 改 update db1.t1 set name='DSB' where id > 1; update db1.t1 set name='DSB' where id = 2 or id = 3; # 查 select id,name from db1.t1; # db1可不指定,默认当前库下 select * from t1; select name from t1 # 删 delete from db1.t1 where id >3; delete from db1.t1 where name='egon' # 这里注意若是少了一个引号,后面不管敲什么都没有用了须要将引号补全
支持多个客户端来连,不一样的编程语言c++,java等,链接池就是减缓硬件压力的,保证数据库的安全,客户端接口来了先到链接池等着,而后到sql接口,数据管理语言和数据定义语言,存储过程,视图,触发器等,而后到解析器,查询\事务对象优先级,而后到优化访问数据顺序,而后到缓存和缓冲池,全局和具体引擎的缓存和缓冲地。之前的默认的引擎是myisam,如今就是innodb,innodb数据更安全,支持行锁表锁,myisam 查询数据比innodb快,可是不安全, show engines;查看引擎,结果中的memory就是根本不会刷入硬盘,都是只存在内存,断电就数据就没了,还有backhole黑洞,往里面丢什么数据都没有了,
文件格式有不少种,对应的软件也有不少种txt,pdf等
针对不一样类型的文件,须要对应有不一样的软件帮助咱们去操做
# 查看全部的存储引擎 show engines; # 查看不一样存储引擎存储表结构文件特色 create table t1(id int)engine=innodb; 会有两个文件,一个是t1.frm表结构;t1.ibd就是存在的真实的数据 create table t2(id int)engine=myisam;会有三个文件,一个是t2.frm表结构;t2.MYD表示存储数据,D就是数据的意思,t2.MYI这个I表示index索引,查询数据根据索引来查 create table t3(id int)engine=blackhole;只有一个表结构,t3.frm create table t4(id int)engine=memory;只有一个表结构 insert into t1 values(1); insert into t2 values(1); insert into t3 values(1);查看数据的时候没有了 insert into t4 values(1);重启服务端,查询数据的时候也没了