数据库:
就是存储数据的仓库(容器)
存储数据的方式
1.变量 无法永久存储
2.文件处理,可以永久存储
文件处理存在的弊端:
1.文件的处理速度非常慢
2.文件只能在自己的电脑上读写,无法被共享(局域网除外)
单台计算机的性能终归是有限的:
1.升级你的硬件设备 提升幅度有限 垂直扩展
2.服务器集群,分布式,横向扩展
就是在一个服务器的后面增加更多的服务器,如果某一台并发达到最大了,就把请求交给其他的服务器 可插拔设计
一旦把服务器拆分开后,数据就必须能够被不同计算机共享,必须通过网络,也就是socket
数据库软件的本质,也就是一个基于socket(TCP)的C/S结构的程序
如果自己实现一个数据软件,需要解决的几个问题
1.一旦数据共享,就存在竞争问题,需要处理锁
2.不是所有的TCP连接请求都要接受,得加上安全验证
3.文件处理带来的效率问题,需要想办法来提高处理速度(索引)
有很多现成的数据库软件可以直接使用,分为两类:
关系型数据库:
该类型的数据库提供了某种机制,可以帮你维护数据与数据之间的关系
例如:学员数据和班级数据,可以通过其中一方,找到另外一方
一般都是基于文件实现的
优点:容量大,可以永久存储
mysql 免费开源,开源支持中小型企业并发
oracle 商业收费,学习免费,功能比mysql强大,用户管理和集群
SQLServer 属于微软生态圈
mariaDB ·
DB2
sqlite 非常轻量级的数据库·
非关系型数据库:
数据与数据之间是独立的,不存在任何关联关系,以key:value的关系来存储数据
一般基于内存
优点:速度快
问题:断电丢失
redis,MobgoDB,memcache
两类数据库的共同特征:
都支持SQL(结构化,查询语言)
数据库相关的概念:
数据本质是一堆带着含义的符号
数据记录
name=jack age=38 sex=man
表:本质就是一个文件
里面存储一堆数据记录
库:本质就是一个文件夹
里面放了一堆表文件
DBMS:
data base manager system
数据库管理系统(TCP)
负责一堆文件夹(即数据库)
数据库服务器:
指的是运行有数据库TCP服务器的程序的计算机
DBMS和服务器 一般运维管:
到公司之后会分给你一个账号密码,以及服务器的地址
该使用哪一类呢?
应该搭配使用,把数据量大的,存到关系型中,把经常访问的放到非关系型中,提高访问速度
mysqld是服务器主程序
mysqld警告说,创建文件失败,由于权限不足,用管理员权限运行即可
mysql是无界面的客户端需要在CMD运行
mysql连接服务器,需要指定以下参数
-h 主机地址(ip)
-p端口号
-u 用户名
-p 密码
服务器和客户端在同一台电脑,可以省略主机地址,可以省略
如果不指定用户名和密码,以游客模式登录,什么都看不到
修改管理员密码
1.如果知道原始密码,mysqladmin-uroot -p旧密码 password 新密码
2.不知道原密码 可以在启动服务器时,跳过授权表 mysqld--skip-grant-tables
用户密码信息,存储在mysql数据库中的user表中
update mysql.user set password=password('新密码') where user='root' and host='localhost'
关于库的语句:
创建库
create database 库名称
删除库
drop database 库名称
修改库的属性
alter database 库名称 charset ='新的编码'
使用数据库
use 库名称
查看创建库详细信息
show create database 库名称
查看使用数据库
show databases
列==字段
关于表:
增:
create table t1(name char,age int);
改:
alter table t1 charset="gbk"
必须为双引号
alter table t1 add sex char;
alter table t1 drop sex;
alter table t1 modify age chart
modify 是用来修改类型的;
desc t1 详细信息
alter table t1 change 旧列名 新列名 类型
表重命名:rename table 旧名 to 新名
查:
show create table t1
数据记录相关操作才是重点学习对象
插入数据:insert into table _name value()
查看数据
select * from table_name: *表示查看所有字段
update t2 set age=200 where name="陈"
删除数据
delete from t2 where name=" ":