数据库基础—上

  • 一. 数据库概念
  • 1.1 术语
  • 1.2 查询操作
  • 1.3 操作符:star:
  • 二. 数据库定义-DDL
  • 2.1 操作库
  • 2.2 操作表
  • 2.3 列类型
  • 2.4 完整性约束:star:
  • 三. 数据库操作-DML:star:
  • 3.1添加
  • 3.2 修改
  • 3.3 删除
  • 四. 数据库查询-DQL:star:
  • 4.1 指定查询字段
  • 4.2 联表查询
  • 4.3 分组、排序、分页
  • 4.4 子/嵌套查询
  • 4.5 函数


一. 数据库概念

MySQL 是一个关系型数据库管理系统

1.1 术语

DataBase - 数据库

DBMS - 数据库管理系统

DBS -数据库系统

1.2 查询操作

操作名称

符号

说明

⭕️选择

σ

选择符合条件的字段

⭕️投影

Π

显示选中的列

连接


有可比属性组的连接


÷

等值连接,并且与S属于元组有组合



属于R 并且 属于S

⭕️差


属于R,不属于S

⭕️并


属于R 或者 属于S

⭕️笛卡尔积

×

列数两表相加,行数两表相乘

* 注:自然连接是在等值连接的基础上,去除重复的列。

*注:说明部分为个人理解,仅供参考

1.3 操作符⭐️
  • andor:对应 && 和 ||
  • in:用来指定条件范围,范围中的条件个数有限且明确 a in(a1,a2...)
  • between:用来指定条件范围,条件个数无限,包括开始和结束值
  • ont:用于否定给出的条件(取反)
  • is null:是否为空
  • like:匹配 a like b (用 % 表示0到多个,用 _ 表示1个字符)

例:匹配姓王的人 : select * from studen where Sname like '王%'

二. 数据库定义-DDL

不设置字符集编码(如utf8)则不支持中文

2.1 操作库
  • 增:create database 库名
  • 删:drop database 库名
  • 使用:use 库名
  • 查看所有数据库:show databases

注:可以将数据库保存到指定位置以及所在字符集

2.2 操作表
  • 查看所有表 show tables
  • 查看表的定义 show create table 表名
  • 创建表 create table 表名(...)
  • 修改表
  • 修改表名 alter table 旧表名 rename as 新表名
  • 添加字段 alter table 表名 add 字段名 字段类型
  • 删除字段 alter table 表名 drop 字段名
  • 修改字段约束 alter table 表名 modify 字段名 约束;
  • 修改字段名称 alter table 表名 change 旧字段名 新字段名 约束;

**【区别】**modify只能修改约束,change可以修改约束和字段名

  • 删除表 drop table 表名;
2.3 列类型
  • 数值:int、float、double、decimal(金融等高精度适用)
  • 字符:char、varchar、text
  • 日期:datatime(YY-MM-DD HH-mm-ss)、timestamp(时间戳)
  • null
2.4 完整性约束⭐️

2.4.1 实体完整性

主键约束:primary key

2.4.2 参照完整性

外键约束:foreign key(列名) references 表名(列名)

2.4.1 用户自定义完整性

非空:not null

唯一:unique

检查:check 例check(Ssex in('男','女'))

默认值:default

备注:comment

三. 数据库操作-DML⭐️

数据库的意义:数据存储、数据管理

3.1添加

格式:insert into 表名(字段名) values(1列数据),(2列数据)

--不指定列名
mysql> insert into `demo01` values('李四',1002,'男');
--指定列名
mysql> insert into `demo01`(`name`,`id`) values('孙五',1003);
--同时插入多行
mysql> insert into `demo01` values('灵六',1006,'男'),('灵七',1007,'女');

注:表名后面不指定列名时,需按顺序依次填入值

3.2 修改

格式:update 表名 set 修改目标 where 判断条件;

3.3 删除

格式:delete from 表名 where 删除条件;

四. 数据库查询-DQL⭐️

4.1 指定查询字段

【格式】:

select <目标列> from <表名>
[inner join <联合的表> on <比对属性表达式>]
[where <条件表达式>]
[group by <列名> having <条件表达式>]
[order by <列名> [asc|desc]]
[limit 起始行,pagesize]
  1. 选择全部列可用通配符 * 替代
  2. 为表或列起别名,使用 AS 关键字 select * from table as T
  3. 需按【格式】中的顺序使用条件语句
4.2 联表查询

等值连接 inner join

select <目标列>
from tableA as a
inner join tableB as b
on a.key = b.key

左连接 left join:返回左表所有的值,右表无匹配则为null

右连接 right join:返回右表所有的值,左表无匹配则为null

自连接(了解):一张表拆成两张,自己连接自己

自连接例:

select a.'tname',b.'tname'
from tabe as a,tabe as b
where a.'sonid' = b.'faderid'
4.3 分组、排序、分页

分组 group by <列名> having <条件表达式>

一般和sum、max、avg等聚合函数一起使用

select r.studentno,s.studentname,sum(studentresult) as '总分'
from result r
inner join student s
on r.studentno = s.studentno
group by r.studentno

排序 order by [asc|desc]

例:order by <列名> asc

分页 limit

页面大小(行数):pageSize

单前页:n

起始参数值:(n-1)*pageSize

总页数:总行数/pageSize(向下取值)

4.4 子/嵌套查询

查询语句条件中嵌套另一个查询语句

例:任意科目分数大于90分的学生信息

select * from student
where studentno in(
	select studentno from result
	where score > 90
)
4.5 函数

函数

描述

参数

count()

计算行数

任意列、*、1

sum()

求和

/

avg()

平均值

/

max()\min()

最大值\最小值

/

distinct

去重

/

MD5()

加密

密码列表

*注:经过加密的元素在数据库中以密文形式显示,相同的值多次加密密文相同

SELECT * FROM pass
WHERE users=3001 AND `password`=MD5(123456)