zhaojp0 2020-04-30
数据库的本质其实就是一款基于网络通信的应用程序
那其实每个人都可以开发一款数据库软件 因为它仅仅就是一个基于网络通信的应用程序
也就意味着数据库软件其实有很多很多
关系型数据库
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;