目录
注意:表中的数据,无论CURD,基本单位都是以行/一条记录为基本单位
b.AI:Auto Increment 自增,只能用于INT类型主键
d.UQ:Unique 唯一键,不允许出现重复的(非主键的字段)
6)为上一步找到的表(名词),确定有哪些字段(非主键、关系字段)
一、数据库概述及常见概念理解
1.出现背景(为什么要有这套东西)
Data(数据) Date(日期)Information 信息
为了保存和管理数据,我们不能把数据存储在内存中,内存中的数据(断电后不保留)是容易丢失的,所以需要具备持久化能力的存储,即硬盘中的数据(持久化后的数据)。
需求出现:开发使用软件、程序时,需要进行硬盘数据的管理。
前提:硬盘中数据的管理要比内存中数据的管理复杂
导致:如果让程序员们完全自由的管理硬盘中的数据变得困难
因此,数据库管理软件就基础诞生了,由这些软件进行科学的、高效的管理硬盘中的数据。作为数据库管理软件的用户(一般理解为程序员),可以直接通过该软件方便的使用管理数据。
2.数据库管理系统(即数据库管理软件):DBMS
DataBase Management System(我们安装的MySQL服务器+客户端就是DBMS)
其他目前市场上常见的DBMS:Postgres、SQLServer、Oracle...(这些主要是单机场景下的);ToplingDB,RocksDB...(分布式的);Sqlite(浏览器,手机上)
DBMS中有一类,将数据以“关系 Relationship”进行组织,这里被称为关系型数据库管理系统:RDBMS
数据库/方案:Database/Schema
假设有这五张表,可以组成三种不同的应用方式,就可以做一个单独的database/schema,五张表可以统一存在于一个MySQL服务器上。
具体结构总结:
3.服务器与客户端(server and client)
服务器:特指一类用来提供服务(service)的软件/程序
如:我们这的MySQL服务器提供的是数据管理服务,类比厨师,空调,java中的对象,服务器并不会让我们真正接触到
客户端:为了使用服务器,需要的一个中介的软件
中介软件类比服务员、遥控器、java中的引用,我们要使用服务器,得通过客户端去接触到服务器。一个服务器可以有不同客户端,如一个mysql服务器,客户端就可以有:workbench;命令行;navicat;idea自带客户端。
4.理解计算机的三个位面/层次
5.SQL:结构化查询语言
Structure Query Language 组织了一种统一的语言,进行结构和数据的管理
1)SQL分类
a.DDL【用来处理结构】
数据定义语言 -> 新建一个database、删除一个database、新建一张table、修改表结构、删除一个table(Data Defination Language)(low-不是那么重要)
b.DCL【控制DBMS行为】
数据控制语言 -> 添加一个DBMS用户、修改DBSM密码、重启...(Data Control Language)(每个DBMS都不一样)
c.DML【进行真正数据(行)增删改查】
数据操控语言 -> 添加一行数据、删除一行数据、查询某些符合条件的数据,修改某行中的数据(DML Data Manipulation language)⭐⭐
2)SQL与Java的不同
注意:表中的数据,无论CURD,基本单位都是以行/一条记录为基本单位
6.数据库主要使用场景
a.OLTP:做事务处理
发表文章、写个作业、批改作业、短期的对数据的一系列动作。(增删拆改都有)
b.OLAP:做事务分析
某班级一共写了多少作业,完成率是多少,CSDN三月份用户比2月份增长了多少。(一次涉及到很多数据,一般只查询,很少修改)
聚集查询;联表查询;子查询
二、MySQL中的建库建表语句
workbench;命令行上......