1、认识数据库java
1.什么是mysql?python
数据库mysql
永久存储数据的仓库linux
1.管理不方便 2.文件操做效率问题 3.一个程序不太可能仅运行在同一台电脑上 提升计算机性能的方式 1.垂直扩展 指的是更换性能更好的硬件 2.水平扩展 指的就是添加更多的计算机 把任务分配给每一台 (分布式计算) 分布式计算 的好处 1.其中某一台挂了 不会致使整个系统瘫痪 稳定性高 2.理论上性能能够无限扩展 分布式计算其实也是总体 数据须要被共享 这就须要socket技术 共享就存在竞争问题 加锁处理 文件存取效率问题 数据库 本质上就是一套软件 由服务器端 和 客户端组成 C/S B/S 早些年 没有数据库的时候 程序员要想实现功能 得本身写一套socket 并解决上述问题 因而就有了数据库软件公司
目前常见的数据库
关系型数据库
数据与数据之间能够创建关联关系(用户数据和购买信息)
SQLServer
仅支持windows
MySQL
免费 开源 性能也不差 mysql 前后被sun 和 oracle收购
mariaDB mysql的创始人 担心mysql的将来 因而推出mariaDB 使用起来彻底一致
Oracle
目前最牛逼的数据库 收费很高
DB2
IMB 收费的 通常与计算机绑定销售
非关系型数据库
速度贼快
key value 存取
MongoDB
redis
memcache
数据 用于记录某事物状态的符号 或 别的形式 数字 音频 age = 20 记录 就是一个事物的典型特征的组合 在文件中体现为一行文本 yyh,20,man,180 表 就是一个一个的文件 库 就是一个文件夹 数据库管理系统(DBMS) 就是一个软件用来管理库的 C/S程序 数据库服务器 运行着DBMS的计算机称为数据库服务器
2、安装mysql程序员
1.下载安装包 下载的时候提供了带界⾯的和不带界⾯的 ⽤哪一个呢? 你到公司后你想一想服务器是什么系统? linux 有界⾯吗? 因此咱们安装不带界⾯的 2.mysql⽬录解析 bin mysqld mysql data ⽂件夹 库 my-default.ini 3.启动mysql服务器 cd ...... mysqld 这是⼀个socket程序 这时候至关于作了什么事? 启动服务器socket 并监听端⼝ 默认绑定当前ip 端⼝默认3306 接下来作什么呢? 启动客户端, 运⾏mysql 注意他是⼀个socket程序 要链接服务器须要什么? ip 和 端⼝ mysql -h ip -P port -uroot -p 密码默认为空 看到欢迎界⾯了是吧 说明socket连接成功了 这个命令提示符本质是什么? 就是⼀个input 对不对 接受⼀条指令而后怎么办? 发送个服务器 服务器接收到以后呢? 解析指令 取出你要的数据在send给客户端 那问题来了 指令确定不能随便写,不认服务器不认识,⼤家的有套规范 就是sql show databases; 对⽐data⽂件夹 那在讲命令以前呢 你想一想 咱们每次要使⽤mysql都得先cd到这个⽬录中 ⾮常麻烦 怎么解决呢? 4.加到环境变量 命令总结: 启动服务器 mysqld 启动客户端 mysql -h -P -u -p 简写 mysql -u -p 关闭服务器 tasklist | findstr mysqld taskkill /F /PID 8372 5.服务器的启动和关闭都须要执⾏命令 仍是不够⽅便 怎么办呢? 将mysql注册到系统服务中 终端执⾏ mysqld --install 运⾏->services.msc 查看系统服务 三.修改管理员密
3、修改管理员密码redis
如今密码默认为空 这样安全吗? 不安全 万⼀谁过来把你数据删了 怎么办? 改密码 怎么改: mysqladmin -uroot -p旧密码 password "123' 警告 不要紧 破解密码: 万⼀你不⼩⼼把密码忘记了 怎么办?不可能卸载重装吧 因此咱们下来说的是如何破解密码,如何破解呢? 那你就要想 这个密码它确定要找地⽅存储起来 ,那存客户端仍是服务器呢? 服务器 ,那存在内存仍是硬盘呢? 必然是硬盘,既然如此,⼀定有⼀⽂件⽤于⼲嘛 ? 存放密码信息 那你有没有什么思路? ⽅式1:删⽂件 没问题 简单粗暴 可是,这个⽂件⾥不仅有你的帐号信息 还有别⼈帐号数据 还 有受权相关的数据 因此你最好不要这么⼲! 那你在思考⼀下,服务器验证⽤户的本质是什么,是否是读取⼀个⽂件的数据来 和你输⼊的数据进⾏对⽐, 那你可不能够这样⼦ 我告诉我服务器说你不要去读那个受权⽂件,能够! ⽅式2: 跳过受权表 进⼊系统修改受权表 跳过这个操做是服务器相关的操做因此 咱的先关掉服务器从新开 在从新开的 时候来告诉它 1.停⽌服务 2.启动服务器并添加参数 mysqld --skip-grant-tables 3.使⽤客户端登陆服务器 执⾏修改命令 此时不须要输⼊密码 update mysql.user set password = password("123123") where user="root" and host="localhost" 刷新权限 flush privileges 命令⾏中重启服务器验证新密码
4、编码设置sql
来看⼀下 当前服务器的设置信息 使⽤客户端执⾏\s 来看⼀下 这边latin1 gbk 什么意思 是否是就是编码? 那这样有没有什么问题? 服务器是拉丁 客户端是 GBK 乱码 如何解决乱码? 保证编码⽅式⼀致! 如何设置呢? 在mysql安装⽬录下有个my_default.ini 他就是配置⽂件,可是他不是正在使⽤ 的 ⽽是⼀个模板⽂件,咱们若是要⾃⼰编写配置⽂件,须要⾃⼰复制⼀个叫作 my.ini的⽂件来编写 编写格式? 你已经学习过了 configpaser 回顾⼀下 conf⽂件包含什么? 分区 和 选项 [section] option = value 要设置客户端的内容就写在mysql分区 要设置服务器的内容就写在mysqld分区下 原理:mysql在启动的时候会⾃动到安装⽬录下找my.ini⽂件 找到命令对应的标 题加载⾥⾯的设置项 在思考⼀下 咱们在登陆的时候是否是每次都须要输⼊⽤户信息 麻不麻烦? 麻烦 那怎么解决? 你看在mysql -uroot -p123 中 -u -p是否是参数 是在你执⾏命令是⼿动传的参数,那既然是参数可不能够定义到配置⽂件中呢? 能够! 来看看如何定义 [mysql] user = "root" pasword = "123" 下⾯咱们来测试⼀下看⾏不⾏? ok 报错了 说明他确实读取了配置⽂件 报错缘由 名字写错了 思考 好如今我问你: 你如今这个配置⽂件是给谁⽤的 是客户端仍是服务端? 便是客户端也是服务器端 由于咱们如今客户端和服务器端在同⼀台电脑上 正常状况下 咱们不会这么⼲ 你客户端想要⽤你就在客户端安装⽬录中建⼀个 my.ini 只写客户端相关的内容 一样服务器要⽤就在服务器端建 只写服务器相关内容 最终结果 [mysqld] character-set-server = utf-8 collation-server = utf-8_general_ci [mysql] default-character-set = utf-8 [client] default-character-set = utf-8 思考? client是什么意思呢? 就是客户端的意思 和mysql有什么区别? mysql也是客户端的其中⼀种 除了它 还有python客户端 java客户端等等 client是全部客户端的总称 若是都有的话 同时设置了两个的话 哪一个⽣效呢? 固然是mysql 由于他指名道姓说了mysql这个程序 验证⼀下 将client中加⼀个不存在的⽤户名 user = xxxxxxxxx 看看是否能成功登录 删除mysql分区 再次验证 注意:修改了mysqld配置须要重启服务器
5、基本sql语句数据库
1.库相关windows
增安全
create database mydb charset utf8;
查
show databases;
show creat databases mydb;
改
alter database mydb charset gbk
删
drop database mydb;
2.表相关
增
切换文件夹(选择数据库)
use mydb;
create table t1(id int,name,char)
查
show tables;
show create table t1;
desc t1;
改
改字段
alter table 表名 add | modify | drop | change
add 跟列名和类型
modify 跟列名和类型
drop 跟列名
change 跟 旧列名 新列名 类型
改字符编码
alter table 表名 default character 类型
更名称
rename table tname1 to tname2
删
drop table 表名
3.记录相关
增
insert into tablename values(data,...),(data)
查
select id,name from t1; 列名可用*号表示通配符
改
update 表名 set 列名 =值 where 条件;可同时修稿多个字段
用逗号隔开 列名=值,列名=值....
删
delete from 表名 where 条件;
没有条件则删除全部;
truncate table t1;
重建表,清空全部数据;