今日内容:
一.认识数据库
什么是数据库? >>> 存放数据的库
文件处理就可以将文件的永久保存(open f )
问题:
1.管理不方便
2.文件操作效率问题
3.一个程序不太可能运行在同一台电脑上
提高计算机的性能:
1.垂直扩展:指的是更换性能更好的硬件
2.水平扩展:添加更多的计算,把任务分配给每一台计算机(分布式计算)
分布式计算的好处:
1.其中一台计算机挂了,不会导致整个系统奔溃 >>>>>稳定高
2.理论上性能可以无限扩展
分布式运算其实也是一个整体,
问题一:数据需要被共享 >>>>> 需要socket技术
问题二:共享就存在竞争问题>>加锁处理(互斥锁)
问题三:文件存取效率
数据库:本质上就是一套基于socket编写的软件 由服务器端和客户端 C/S B/S
早些年 没有数据库的时候,程序员想要实现功能的自己写一套socket 并解决上述问题>>>>>有了数据库
常见的数据库:
1. 关系型数据库(数据间可以建立联系):
SQLServer(微软):只支持Windows
MYSQL(最火目前也属于Oracle):免费,开源,性能也不差(支持高并发) 先后被 sun 和 Oracle收购
Oracle(甲骨文):目前最牛逼的数据库 收费高
DB2(IBM):收费的 IMB主要是做硬件 ,一般与自己卖的计算机绑定
2. 非关系型数据库(数据之间没有联系): 优点:速度快, 以key:values取 >>>一般放在缓存中
MongoDB
Redis
mencache
二.数据库相关的概念:
1.数据:用于记录某事物的状态的符号 数字 音频
age = 200
2.记录:一个事物的典型特征的组合 在文件中就是一行文本
name age .......
3.表:就是一个文件 存放的是一个记录
4.库:就是有个文件夹 存放是的是表
数据>>记录>>表>>库
5.数据库管理系统:(Database Management System DBMS) 就是一个软件用来管理库的 >>> C/S socket
6.数据库服务器:(Database Server DBS)运行着DBMS的计算机称之为数据库服务器
三.安装mysql
mysqld:服务端
mysql:客户端
1.添加环境变量:(bin)
2.注册了系统服务: mysql --install
3.修改密码:mysqladmin :用于设置密码
mysqladmin -uroot -p 旧密码 新密码
4.破解密码:
1.删除存储密码的文件
2.重装mysql
3.可以在启动服务器时不要读取密码文件
1.mysqld +-skip-grant-tables
2.无密码登入
3.使用updata 来更新数据 data.mysql.user
updata mysql.user set password = password("321") where user = "root" and host = "localhost";
4.重启服务,验证新密码
5. 解决编码问题:(添加一个文件 )my-default- ini
sql基础:
数据库服务器存放的是 库(文件夹) 表(文件) 表里面的记录(一行数据)
库相关(database):
创建:
create database 数据库名字 charset 编码名称
删除:drop database 数据库名
修改:
alter database 数据库名字 charset gbk
查:
show databases
show database 数据库名字 查看建库语句
表相关:(table)
创建:
create table 文件夹名.t1(id int,name chr)
删除:
drop table 表名
truncate table 表名(重建表) >>清空数据
修改:
该结构:
alter table 表名 add|drop(删)|modify(修改)|change(修改)
add 字段名 数据类型
drop 字段名
modify 字段名 新类型
change 久字段名 新的字段名 新类型
该属性:
编码:alter table t1 charset gbk
表名: rename table 久表名 to 新表名
查:
show tables;
show create table 表名 查看建表语句
desc 表名 查看表结构
记录相关:
添加:
insert into 表名 values(值1.....),插入时值得顺序和类型必须与表一致
删除:
delete from 表名 where 条件
修改:
update 表名 set 字段名=新的值 where 条件
可以同时多个字段名的数据
查:
select *|字段名 from 表名