数据库的本质其实就是一款基于网络通信的应用程序
那其实每个人都可以开发一款数据库软件 因为它仅仅就是一个基于网络通信的应用程序
也就意味着数据库软件其实有很多很多
关系型数据库
MySQL、oracle、db2、access、sql server
非关系型数据库
redis、mongodb、memcache
"""
# 关系型
1 数据之间彼此有关系或者约束
男生表和前女友表
2 存储数据的表现形式通常是以表格存储
name password hobby
jason 123 学习
egon 123 女教练
tank 123 吃生蚝
每个字段还会有存储类型的限制
比如姓名只能存字符串...
# 非关系型
存储数据通常都是以k,v键值对的形式
任何基于网络通信的应用程序底层用的都是socket
-服务端
-基于socket通信
-收发消息
-SQL语句
-客户端
-基于socket通信
-收发消息
-SQL语句
"""
MySQL不单单支持MySQL自己的客户端app还支持其他编程语言来充当客户端操作
如何解决语言沟通的障碍?
# 1 让服务端兼容所有的语言(一个人精通多国语言)
# 2 采用统一的语言(SQL语句)
https://www.cnblogs.com/heirenxilou/p/12797387.html
1.库相关
# 增create database db1;create database db2 charset=‘gbk‘;# 查show databases; # 查所有show create database db1; # 查单个# 改alter database db2 charset=‘utf8‘;# 删drop database db2;
2.表相关
"""在操作表(文件)的时候 需要指定所在的库(文件夹)"""# 查看当前所在的库的名字select database();# 切换库use db1; # 增create table t1(id int,name char(4));# 查show tables; # 查看当前库下面所有的表名show create table t1;describe t1; # 支持简写 desc t1;# 改alter table t1 modify name char(16);# 删drop table t1;"""create table db2.t1(id int); 也可以用绝对路径的形式操作不同的库"""
3.数据相关
"""一定要先有库 有表 最后才能操作记录"""# 增insert into t1 values(1,‘jason‘);insert into t1 values(1,‘jason‘),(2,‘egon‘),(3,‘tank‘);# 查select * from t1; # 该命令当数据量特别大的时候不建议使用select name from t1;# 改update t1 set name=‘DSB‘ where id > 1;# 删delete from t1 where id > 1;delete from t1 where name=‘jason‘;# 将表所有的数据清空delete from t1;