数据库
什么是数据库
就是存储数据的仓库( 容器)
存储数据的方式
1 变量 无法永久存储
2 文件处理 可以永久存储
文件处理存在的弊端:
1 文件处理速度慢
2 文件只能在自己的计算机上读写,无法被共享(局域网除外)
单台计算机的性能终归是有限的
1 升级你的硬件设备 提升幅度有限 称之为垂直拓展
2 服务器集群 分布式 横向拓展
一旦把服务器拆分开后,数据就必须能够被不同的计算机共享
必须通过网络 也就是socket
数据的本质就是一个socket(tcp)的c/s结构的程序
如果自己实现一个数据软件 需要解决的几个问题
1 一旦数据共享,就存在竞争问题,需要处理锁
2 不是所有的tcp连接请求都要接受,需要加上安全验证
3 文件处理带来的效率问题,需要想办法来提高梳理速度(索引)
有很多现存在的数据库软件可以直接使用,又分为两大类
1 关系型数据库
该数据的类型 提供某种机制可以帮你维护 数据与数据之间的关系
例如 学员数据和班级数据 可以通过一方找到另一方
一般都是基于文件来实现的
优点是:
容量大,可以永久储存
MySQL 免费开源 开源支持中小型企业并发
Oracle 商业收费 学习免费 功能比MySQL强大,用户管理和集群
SQLServer 属于微软生态圈 只能运行在Windows中
MariaDB MySQL创始人在MySQL的基础上开发了MariaDB
DB2 ibm 360
sqllite 非常轻量级的数据库
共同的特点都支持SQL
结构化 查询语言,学习数据库的重点也就是SQL语言
2 非关系型数据库
数据与数据之间是独立的,不存在任何关联关系
以key :value的形式来存储数据
一般基于内存 优点:速度快 缺点:断电丢失
MongoDB
redis
memcache
该使用哪一类数据库?
应该搭配使用,把数据量大的存在关系型中 把经常访问的放到非关系型中,提高访问速度
数据库的相关概念
数据 本质上一堆带有含义的符号
name= Jack
数据记录
多个数据组成了一条完整的记录
表 本质上就是一个文件
里面存储着一堆数据记录
库 本质上就是一个文件夹
里面放着一堆表文件
DBMS (data base manager system)
数据库管理系统(tcp的服务器)
负责管理一堆文件夹(即数据库)
数据库服务器
指的是运行有tcp服务器程序的计算机
MySQLd 是服务器的主程序
MySQL警告说:创建文件失败 由于权限不足 用管理员权限运行即可
MySQL是无界面的客户端 需要在cmd运行
MySQL 连接服务器 需要cmd运行
MySQL连接服务器 需要指定以下cmd运行
-h 主机地址(ID)
-P 端口号
-u 用户名
-p 密码
服务器和客户端在同一台电脑 可以省略主机地址 端口号默认3306 可以忽略 如果不指定用户名和密码 以游客身份登录 什么也看不到
MySQL 的安装
1 带界面
2 压缩包 字直接解压
2.1添加环境变量
2.2注册系统服务
修改管理员密码
1 如果知道原始密码 MySQLadmin -uroot -p passwort 123
2 不知道原密码 可以在启动服务器时 跳过 授权表
mysqld --skip-grant-tables
无密码登录服务器 执行修改密码的指令
upload MySQL。user set password = password(“新密码”) where user = 'root' and host = 'localhost';
库的增删改查
创建库
create databases 库名称
删除库
drop database 库名称
修改库属性
alter database 库名称 charset = "新的编码“
查看创建库的详细信息
show create database 库名称
查看所有数据库
show databases
选择一个数据库
use 库名称
表的增删改查
增
create table 表名称(name char ,age int);
create table 表名称(name char ,age int);
查看所有表
show tables
查看表的详细信息
show create table 表名称
查看表结构 (字段)
改
alter table 表名称 charset = "gbk" 改编码
alter table 表名称 add ses char ;添加字段
alter table 表名称 drop sex ;删除字段
alter table 表名称 modify age char ;修改字段的类型
alter table 表名称 change age ages int ;修改字段的名字和类型
rename table 表名称(旧表名称) to 表名称(新表名称)
删除
drop table 表名称;
记录的增删改查
一次插入一条数据
insert into 表名称 values(值1,值2);
一次性插入多条数据
insert into 表名称 values(值1,值2),(值1,值2)....;
上述语法 值的个数必须与字段的个数相同
指定要插入的数据的字段
insert into 表名称(字段名称) values(值);
查看数据
select * from 表名称;*表示查看所有的字段 多个字段用逗号隔开
修改
update 表名称 set age = 100;没有条件则全部修改
update 表名称 set age = 100 where name = "陈“;
update 表名称 set age = 100 ,name = “刘铁柱” where name = “陈” 把陈替换成刘铁柱
删除数据
delete form 表名称 删除整个表
delete from 表名称 where name = “刘铁柱” 删除一条数据