SQL基础操作
- 安装及使用(MySQL8.0)
- 数据库基础
- 基础查询语句
: 检索数据
: 排序
: 过滤
安装及使用
安装教程在网上随处可见,但请注意,MySQL已经更新至8.0版本,它的安装界面已经变了,并且过程十分多。
但是很少有人讲安装后怎么用,8.0的workbench真的很好用,有点pycharm的意思,其实使用也非常简单。
找到开始里面的MySQL文件夹,打开workbench(图标如图所示)
在workbench开始界面
点击MySQL Connections下的哪个灰色框框,输入你设定的密码,就能够连接并使用数据库了。workbench本身自带了三个数据库供你练习使用。
数据库基础
先大致了解一下数据库的构成,在左侧的导航栏里,形如水桶的图标就是一个个单独的数据库(database),点开它们,看到tables再点开,根据图标我们就可以知道,这是表(table)。
而我们经常说的主键(key)就是用来识别表的某一列(或者某几列),也就是说主键之间互不相同,并且如果单独作为作为主键,那么那一列上所有数不能相同。
SQL语言基础
在R和python中有很多package都引用了类SQL语言来进行data frame的检索,如果你有一定的英语基础,那么SQL的基础语句就像大白话一样简单。
注意,MySQL8.0中不区分大小写,但是为了识别,我推荐使用大写来规范语句。虽然它自己补充的都是小写。
每一句用 ; 来结束一行命令,并且选中语句后用ctrl+enter来执行命令,单纯enter是用来换行的,这与jupyter notebook比较相似。
检索数据
当我们确定要使用某一个数据库后,使用
USE database_name;
来选中它,这样的话有助于我们引用其中各个表,写起来也方便许多。
先从最简单的开始,*就表示全选,而database和tabel中用.连接
SELECT * FROM database.tabel;
而如果你想检索单个或特定的多个列
SELECT col1_name,col2_name FROM database.tabel;
在每一列中,可能会有重复,如果想确定某一列中所有不重复的数
SELECT DISTINCT col1_name FROM database.tabel;
如果想检索有限行,使用LIMIT函数
SELECT * FROM database.tabel LIMIT 2;#这是用来检索第一 第二行
SELECT * FROM database.tabel LIMIT 2,3;#这是用来检索第三四五行
排序
排序的话,我们使用 ORDER BY 函数
SELECT col1_name FROM database.tabel ORDER BY col1_name;#默认正序
SELECT col1_name FROM database.tabel ORDER BY col1_name DESE;倒序
而当我们遇见如下情况
SELECT col1_name,col2_name FROM database.tabel ORDER BY col1_name,col2_name;
那么就是,我们先遵循第一列排序,当第一列排序后有相同的行,那么这几行按照第二列排序。
过滤数据
这里我们将使用一个非常熟悉的子句,WHERE
SELECT * FROM database.tabel WHERE col1_name = number(‘word’);
在 = 后面,不仅可以接数字,也可以接文字,注意文字要用引号括起来。
而WHERE后面可以跟的操作符就是通常的那几个数字符号,单独要说一下的就是
!= 表示 不等于,BETWEEN 后接 AND。
看一下下面这个句子,我们要注意,在WHERE后面SQL优先处理AND函数,所以当我们和AND同用时,我们要给OR的两边加上括号
SELECT * FROM world.country WHERE (GNP>500 OR Population<1000) AND SurfaceArea >500
如果括号内检索的为同一列(同一种)数据 我们可以使用 IN
SELECT * FROM world.country WHERE (GNP>500 OR GNP<1000) AND SurfaceArea >500
SELECT * FROM world.country WHERE GNP IN(500,1000) AND SurfaceArea >500
下文表示检索(500,1000)之外的数据,在IN之前添加了NOT
SELECT * FROM world.country WHERE GNP NOT IN(500,1000) AND SurfaceArea >500