今日内容: 一.认识数据库 什么是数据库? >>> 存放数据的库 文件处理就可以将文件的永久保存(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 表名