数据库基础回顾

数据库基础回顾

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。数据库是长期储存在计算机内、有组织的、可共享的数据集合。类似于图书馆,各种各样的书按照某个特定的规律存放在指定的书架上。

分类

SQLite

小型数据库,接触最多,常见于智能手机操作系统中储存如短信、电话号码、浏览器的浏览记录等个人信息

MYSQL、MSSQLServer

中型数据库,常用于存储论坛、中小企业网站、学校网站等。

Oracle

数据库中的王者,由甲骨文公司开发,常用于银行系统、医院系统等

Access、Mongodb、DB2、Sybase、Informix

基本知识

基本数据类型

int 存储用户IP,集体编号等

double 存储银行系统中的钱,游戏中的属性值

char(固定长度字符) 存储非中文的短字符串(如英文+数字的用户名、密码等,但存储unicode的字符时会出现乱码)

varchar(可变长度字符) 对unicode的自如支持良好,但效率不如char

text(文本型) 用于存储长度大于255的大文本

blog(二进制大对象) 用于存储大型的二进制数据对象,如图片、用户模型等

基本名词解释

查询

第一层意思是在数据库中检索想要的数据,第二层意思是执行一段SQL代码

表、字段、记录

image-20201204110612618

字段指的是表中的列,通常情况下将字段看成是某个对象的一个属性。

表的集合

image-20201204110903877

常见问题

乱码(编码问题)

现象:

image-20201204111328404

某个用户提交了一个文本给服务器,当这个用户再次查看此文本时出现乱码

原因:

有可能是数据库中的编码与提交的编码不一致

解决策略:

保证数据库编码、表编码、字段编码保持一致

注:utf8在Linux和浏览器中会正常显示,而在Windows命令控制台中依然会乱码,这时需要将字符编码设置为GBK就可解决乱码问题。

不同国家和地区的标准

ANSI 在简体中文windows中表示GBK(GB2312),繁体windows表示Big5,日文windows中表示Shift_JIS。
(表示英文字符时用一个字节,表示中文时用两个或四个字节)

UNICODE 国际通用编码

UTF-8 是UNICODE编码在网络(主要是网页)之间传输的“桥梁”编码。传输时可以节约数据量。

报错

常见的有程序逻辑问题、语法错误等

如果使用控制台操作MySql,那么出错的原因大部分是语法错误;若在开发过程中由程序连接MySql,操作时报错的原因一般有MySql服务未开启、配置连接错误、语法错误。

Mysql基本语法

传送门:

基础语法

排序分组筛选查询

多表联合查询

image-20201204173955008

union联合查询

  • 无重复 (有重复数据时去重)

select * from 表1 union select * from 表2;

  • 有重复(查询两张表中所有数据,不去重)

select * from 表1 union all select * from 表2;

注意:两次查询的列数(字段数必须一致),因为union会将两次查询结果的值合并到一张表格中

子查询

就是将一个查询语句的结果当作另一个查询语句的条件。

image-20201204180622282

区别:返回的结果集数量不同。

注意:条件的个数必须和子查询的列数相同

  • 标量子查询

select * from 表1 where 表1.id=(select id from 表2 where 条件 limit 0,1)

  • 行子查询

select * from 表1 where (列1,列2)=(select 列1,列2 from 表2 where 条件 Limit 0,1)

  • 列子查询

select * from 表1 where 表1.id in (select id from 表2 where 条件)

注:in 表示表1的条件在子查询的返回结果中存在

  • 表子查询

select * from 表1 where (列1,列2) in (select 列1,列2 from 表2 where 条件)

子查询的几个关键字
  • any, in, some

对于子查询返回的列中的任何一个数值,如果比较结果为TRUE,就返回TRUE

in与any效果等同,some是any的别名用的比较少,也就是说这三个是一个东西

  • all

与any效果相反,查询的条件必须与子查询的条件完全相同

  • exists

子查询是否有结果,若返回0行则表示FALSE,否则为TRUE。

常用函数
  • 聚合函数

image-20201204183520242

聚合函数会将每一个分组中的数据合并成一条

image-20201204183655856
  • 数学函数
image-20201204183747388 image-20201204183959607

也可在虚拟表中查询,就是一个计算器作用

image-20201204183921152

  • 字符串处理函数

sql注入中用的比较多

image-20201204184054629
  • 日期和时间函数
image-20201204184234878
  • 加密函数

用于加密数据

image-20201204184321961
  • 系统信息函数

sql注入中用的比较多

image-20201204184411327

猜你喜欢

转载自blog.csdn.net/qq_43665434/article/details/110670888