为了账号安全,请及时绑定邮箱和手机立即绑定
慕课专栏

目录

索引目录

10+年DBA老司机带你轻松玩转 SQL

原价 ¥ 48.00

立即订阅
02 了解数据库和 SQL 语言的关系
更新时间:2020-08-19 09:42:47
知识犹如人体的血液一样宝贵。——高士其

2.1 什么是数据库?

数据库(Database)是以特定组织方式存储以及管理数据的仓库,我们日常生活中经常会接触到数据库,通过浏览器打开网站查阅的新闻,打开微信查看的朋友圈,你从银行账户中查询到的金额等等,这些数据都存储在数据库中。

这么说可能你还是有些疑惑。换个说法:你知道 Excel 电子表格吗?

电子表格和数据库之间有很多的相似点:都可以存储和访问数据,都可以按照需求筛选出自己需要的记录,也可以通过某些特定函数完成数据的统计。电子表格是一个后缀名为 .xls 或者 .xlsx 的文件。数据库同样是一个后缀名为 .sql 的文件。

2.2 有了 Excel 还需要数据库吗?

那你可能会问:既然有了Excel 了,为什么还要有数据库呢?它们两个有什么差别?

不知道你有没有经历过这样一个场景:当你在电子表格中操作数据还未完成时,电脑突然宕机,导致前功尽弃。但是数据库确具有完善的安全管理机制,在这种场景下能将数据进行完美恢复,并将数据损失降到最小。

另外,数据库是可以在线共享的,它允许多人同时操作同一张表格,却不会导致数据混乱。电子表格却无法实现多人同时编辑同一张表格,即使可以也需要设置复杂的共享操作。

并且,数据库在存储硬件允许的情况下,可以存放海量的数据,并且支持比较复杂的计算和查询,而且效率也是远超电子表格,当然数据库的功能远不止这些,我们在后面的章节会一一把数据库的优点向大家展示。

2.3 数据库管理系统

有了数据库,当然要对数据库进行管理,自然而然的数据库管理系统就应运而生了。数据库管理系统就类似于 WPS 和 Office。这两个软件都可以管理后缀名为 .xls 或者 .xlsx 的电子表格。而数据库管理系统就是用来管理后缀名为 .sql 的数据库文件的一个软件。

不同于 WPS 和 Office 的划江而治,数据库管理系统可以说是百花争艳,比如说付费的有甲骨文公司的 Oracle、IBM的DB2、微软的 SQL Server,开源的有 MySQL 和 PostgreSQL。都是比较成熟的数据管理系统产品。

在选择数据库时需要结合具体项目业务及投入成本等因素综合考虑,比如银行、金融、物流等数据量大、对安全性要求高且投入较大的项目使用Oracle和SQLL Server会更好,Mysql 和 PostgreSQL 则更适合互联网方向的中小型项目,对于初学者可以选择 SQLL Server 或者 Mysql 来入门。

为了让大家更全面了解各个主流数据库的差异,后续各小节会对同一功能 SQL 查询在不同数据库上进行对比验证,如没有特殊说明,本课程执行 SQL 语句的具体数据库版本默认为 MariaDB 10.3.12(MySQL的一个分支)或者 SQL Server 2012、Oracle 11.2.0.1、PostgreSQL 11.6。

2.4 安装 MariaDB 10.3.21

在使用数据库之前,和大家一起了解下数据库 MariaDB 10.3.21 的安装过程:

首先 Vmware 上新建虚拟机安装 CentOS7.5,root 用户登录:

图片描述

进入 /etc/yum.repos.d 生成 MariaDB.repo 文件 :

[root@zh01 ~]# cd /etc/yum.repos.d/
[root@zh01 yum.repos.d]# cat Mariadb.repo 
[Mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

运行安装命令安装 MariaDB :

yum -y install MariaDB-server MariaDB-client

安装成功之后启动 MariaDB 服务,并设为开机自启:

systemctl start mariadb #启动服务  

systemctl enable mariadb #设置开机启动

登录到 MariaDB 数据库:

  mysql -uroot -p

输入上面命令后,系统会提示我们输入密码,此时 root 默认密码为空,直接回车即可。

图片描述

如果要退出 MariaDB,输入 exit; 后回车即可。

进行MariaDB的相关简单配置,在 Linux 命令行输入命令:

mysql_secure_installation 

回车后,系统会提示我们进行以下内容的设置:

Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车(后面授权配置)
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

初始化MariaDB完成,再次登陆需要输入设置的密码。

配置 MariaDB 的字符集,使得 MariaDB 服务端支持中文 :

vi /etc/my.cnf  
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

systemctl restart mariadb #重新启动  

2.5 什么是表?

表-Table,是数据库存贮数据的基本单元。你可以把表设想为电子表格中的 Sheet 页。而表就是数据库中的 Sheet 页。

上面的例子可能不太形象,换个说法。如果把数据库比作一列货运火车,那么Schema(模式,也叫架构)就是这列火车的一节节的车厢,每间车厢中放置有很多包装箱,这些包装箱就是表。

在同一个车厢中,包装箱编号不能重名,但不同车厢中的包装箱编号可以重名,Schema和表也同样具有这个特点。同一间车厢存放着相同规格的包装箱,就像同一个模式下的表具有相同的特性(表如何存储,什么样的数据,数据如何分解等)。也可以将 Schema 看做操作系统上的目录,里面的文件就是表,只是 Schema 里面不能创建 Schema,而目录里面是可以继续创建目录。

火车 ———>> 数据库
车厢 ———>> Schema
包装箱 ———>>
货物 ———>> 表中存放数据

一张表只能存一种相关的实体,比如可以存放学生信息,课程信息,学生选课记录等。 学生信息和课程信息不能存放在一张表中,这样会导致查询很困难,而且数据混乱。

值得注意的是,Schema 除包含表之外,还可以包含与表相关的视图,索引,数据类型,函数以及操作符等数据库对象。另外 Schema 在不同数据库中它的含义稍有差别,在 SQL Server 和 PostgreSQL 中默认 Schema 分别为 dbo 和 public ,它们和用户权限有很大关系,在你创建数据库对象时,如果没有指定 Schema,数据库对象归属于这些默认的 Schema。而在 MySQL 中,Schema 就是指的数据库,在Oracle 中一个 Schema 对应着一个用户。

2.6 什么是列、行和数据类型

如果说一张表就是一个实体,那么表中的列就是这个实体的属性,比如学生(实体)表中有年龄,性别和学号等列来表示学生的属性,一行就是指一条记录,一名学生的相关属性数据就可以存放成一行数据。从上面可以看出数据库中的行和列与Excel中的行和列很类似。

数据库的数据类型是和列并存的,它指定了列在计算中以什么数据形式存储,虽然常用的数据类型就几种,但在各种数据库中却存在名称上或用法上的细微差异,下表列出了四种数据库主要数据类型对比:

SQLServer MySQL ORACLE PostgreSQL
int int NUMBER int4
varchar varchar VARCHAR2 varchar
nvarchar varchar NVARCHAR2 varchar
datetime datetime DATE timestamp
decimal decimal NUMBER numeric
text longtext CLOB text
tinyint tinyint NUMBER int2
bit tinyint NUMBER bool
float float FLOAT foloat8

2.7 SQL 语句

现在大家已经知道了数据库,表,行列数据的概念了。那么问题就来了:我该怎么操作数据库,表,行列数据呢?

这时,就不得不说一下本门课程的重点 SQL 语句了。Sql是操作和管理数据库的工具,是人们与数据库交互的一种计算机语言,它由关键字(如select ,from,where,order by ,create等)、表名、字段等组合成的一条语句,Sql 语句分为以下几种类型:

  • DDL(Data Definition Language,数据定义语言) 日常使用的创建数据库或表的Create 语句,删除数据库或表的Drop语句,以及修改数据库或表的alter 语句都属于该类型,比如我们在SQL Server上的数据库中创建一张学生表:

图片描述

  • DML(Data Manipulation Language,数据操作语言)对表的增删改查都属于 DM L语句,比如我们查询年龄大于29岁的学生:

图片描述

  • 除此之外,还有 DCL(Data Control Language,数据控制语言),它主要完成对数据库变更操作的确认和取消,以及用户对数据库对象权限的设定。比如 update 语句后面出现 commit 表示确认更新完成,出现 rollback 代表取消更新,数据保持不变。

2.8 测试数据获取

本专栏相关表结构和数据可以通过以下链接获取:https://github.com/zhujianhui/sql_zhuanlan

}
立即订阅 ¥ 48.00

你正在阅读课程试读内容,订阅后解锁课程全部内容

千学不如一看,千看不如一练

手机
阅读

扫一扫 手机阅读

10+年DBA老司机带你轻松玩转 SQL
立即订阅 ¥ 48.00

举报

0/150
提交
取消