数据库基础

什么是数据库?

数据库(Database)就是专门存储数据的仓库。

例如学生信息:

id name age
1 张三 20
2 李四 21

常见的数据库

  • MySQL(最常见)
  • SQL Server

什么是 C/S 和 B/S?

C/S(Client/Server)客户端/服务器模式

用户需要安装客户端才能访问。

例如:

  • QQ
  • 王者荣耀

结构:

客户端
   ↓
服务器
   ↓
数据库

B/S(Browser/Server)浏览器/服务器模式

用户直接通过浏览器访问

例如:

  • 淘宝网页版
  • 学校教务系统

结构:

浏览器
   ↓
Web服务器
   ↓
数据库

数据库操作

创建数据库

create database school;

查看数据库

show databases;

进入数据库

use school;

删除数据库

drop database school;

常用数据类型

数字类型

整数类型:int

age int

定点小数类型

  • decimal:钱、金额、账单、工资必须用decimal
salary decimal(10,2)
10:金钱的总位数
2:小数部分

其他小数类型

  • 普通小数:温度、重量、单价(非钱款)→ float(4 字节,7 位有效)
  • 超大数值、高精度实验统计 → double(8 字节,15 位有效)

字符串类型

varchar(50):表示最多存放50个字符

name VARCHAR(50)

日期类型

date

例如:

birthday date;

结果:

2004-01-01

表的基本操作

创建表

create table student(,,,);

查看表

show tables;

查看表结构

describe student;
或者desc student;

删除表

drop table stu;

增删改查(重点)

增(Insert)

增加一条数据:

增加多条数据:

查(Select)

查询全部:

查询部分:

按条件查询where

例如:在student表中查询年龄=20的所有数据。

例如:在score表中查分数>90的id。

模糊查询:like

区间查询:between and

排序查询order by

升序:

降序:加上desc

去重查询(distinct)

分组查询group by

按照某个字段分类统计。

例如:按照每个班级统计·班级人数

分组后筛选having

WHERE 是分组前过滤。

HAVING 是分组后过滤。

例如:先按班级分组,再查询班级人数大于1的班级。

分页查询limit

limit 起始位置,每页条数

注意:第一个位置为0

改(Update)

例如:更改id为101的学生,age改为19

删(Delete)

删除表中所有数据

delete from student;

删除表中部分数据

例如:删除id=104的学生数据

修改表结构

alter table student

查询进阶

聚合函数

统计数量:count()

最大值:max()

最小值:min()

平均值:avg()

求和:sum()

数据库约束

主键Primary key

修改表结构:添加主键

外键:foreign key

用于建立两张表之间的关系(不会出现score表存在在student表中找不到id的情况)

例如:新建一张score成绩表

这里score.student_id 就引用了 student.id。

非空not null

modify用来修改已有字段的数据类型 / 约束

唯一unique

联合查询(三种连接)

现在school数据库中有两张表:

内连接(最常用)inner join(取表之间的交集)

书写时inner可直接省略,JOIN 连表,ON 写主键 = 外键

student表主键:id

score表外键:student_id

例如:

左连接(left join)

左表全部保留:

右连接(right join)

右表全部保留:

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐