一周学会SQL (一)

概述

结构化查询语言](Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;

sql 语句就是对数据库进行操作的一种语言。

本教程有参考:廖雪峰教程

简单的说只要我们编写程序就要涉及到操作数据库,数据库就好比一个大仓库,比如一个电商网站需要把用户和商品信息存入数据库;或者一个手机游戏需要把用户的道具、通关信息存入数据库,都必须通过SQL来完成。

所以,现代程序离不开关系数据库,要使用关系数据库就必须掌握SQL。

本教程立不懂SQL的人在一周内学会SQL

SQL语言按照功能可以分为4大类 :

  • 数据查询语言(DQL)(Data Query Language):称为"数据检索语句",从表中获得数据确定数据怎样在应用程序给出。

    其他DQL常用的保留字WHEREORDER BYGROUP BYHAVING

  • 数据定义语言(DDL)(Data Definition Language):用于改变数据库结构,包括创建更改删除数据库对象

    CREATE(create)—创建ALTER(alter)—修改DROP(drop)—删除

  • 数据操纵语言(DML)(Data Manipulation Language):最常见SQL命令用于检索删除插入修改数据

    INSERT(insert)—添加SELECT(select) –查询UPDATE(update)—修改DELETE(delete)—删除

  • 数据控制语言(DCL)(Data Control Language):用户角色赋予权限以及收回权限授权(grant)回收权限(revoke)

在事务方面还有一个:

  • 事物控制语言(TCL)(Thing Control Language):

    提交事物(commit)事物节点(savepoint)事物回滚(rollback)

数据库的分类:

​ 数据库基于存储介质的不同分为两类:

  • 关系型数据库(SQL)
  • 非关系型数据库(NoSQL:Not Only SQL,不是关系型的数据库都叫做非关系型数据库)

目前,主流的关系数据库主要分为以下几类:

  1. 商用数据库,例如:OracleSQL ServerDB2等;
  2. 开源数据库,例如:MySQLPostgreSQL等;
  3. 桌面数据库,以微软Access为代表,适合桌面应用程序使用;
  4. 嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。

非关系型数据库:

​ memcached、mongodb、redis(同步到磁盘)

两种数据库的区别:

  • 关系型数据库:安全(保存到磁盘基本不可能丢失),容易理解,比较浪费空间(二维表)
  • 非关系型数据库:效率高,不安全(断电会丢失)

数据模型

数据库按照数据结构来组织、存储和管理数据,实际上,数据库一共有三种模型:

  • 层次模型
  • 网状模型
  • 关系模型

层次模型就是以“上下级”的层次关系来组织数据的一种方式,层次模型的数据结构看起来就像一颗树:
在这里插入图片描述

网状模型把每个数据节点和其他很多节点都连接起来,它的数据结构看起来就像很多城市之间的路网:
在这里插入图片描述

关系模型把数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定,它的数据模型看起来就是一个Excel表:
在这里插入图片描述

随着时间的推移和市场竞争,最终,基于关系模型的关系数据库获得了绝对市场份额

关系数据库的关系模型是基于数学理论建立的。 虽然讲起来挺复杂,但是,基于日常生活的关系模型却十分容易理解。

我们以学校班级为例,一个班级的学生就可以用一个表格存起来,并且定义如下:

ID 姓名 班级ID 性别 年龄
小明 201 M 9
2 小红 202 F 8
3 小军 202 M 8
4 小白 201 F 9

其中,班级ID对应着另一个班级表:

ID 名称 班主任
201 二年级一班 王老师
202 二年级二班 李老师

通过给定一个班级名称,可以查到一条班级记录,根据班级ID,又可以查到多条学生记录,这样,二维表之间就通过ID映射建立了“一对多”关系。


数据类型

对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等:

名称 类型 说明
INT 整型
BIGINT 长整型 4字节整数类型,范围约+/-21亿
REAL 浮点型 8字节整数类型,范围约+/-922亿亿
DOUBLE 浮点型 4字节浮点数,范围约+/-1038
DECIMAL(M,N) 高精度小数 8字节浮点数,范围约+/-10308
CHAR(N) 定长字符串 由用户指定精度的小数,例如,DECIMAL(20,10)表示一共20位,其中小数10位,通常用于财务计算
VARCHAR(N) 变长字符串 存储指定长度的字符串,例如,CHAR(100)总是存储100个字符的字符串
BOOLEAN 布尔类型 存储True或者False
DATE 日期类型 存储日期,例如,2018-06-22
TIME 时间类型 存储时间,例如,12:20:59
DATETIME 日期和时间类型 存储日期+时间,例如,2018-06-22 12:20:59

上面的表中列举了最常用的数据类型。很多数据类型还有别名,例如,REAL又可以写成FLOAT(24)。还有一些不常用的数据类型,例如,TINYINT(范围在0~255)。各数据库厂商还会支持特定的数据类型,例如JSON

选择数据类型的时候,要根据业务规则选择合适的类型。通常来说,BIGINT能满足整数存储的需求,VARCHAR(N)能满足字符串存储的需求,这两种类型是使用最广泛的。

猜你喜欢

转载自blog.csdn.net/weixin_43650254/article/details/88559738
今日推荐