上一节讲了SQL基本概念及数据库的安装,这一节讲SQL语句的简单用法,如何从数据库里面查找数据。
在不同的数据库(MySQL、Oracle、Microsoft SQL Service等)中,SQL语法使用起来不太一样,但整体类似,只有个别语法不同。学习一种数据库的SQL语法的使用,其他的也就会触类旁通。
SQL语句一般分成三类
第一种是数据定义语言(DDL),它的操作对象是数据库和表。包括创建、删除和、修改数据库和表的结构。常用的关键字如下:
creat:创建数据库和表
drop:删除数据库和表
alter:修改数据库和表的结构
说明:关键字就是SQL语句中有特殊含义的单词。在Navicat等客户端中,关键字一般会用蓝色字体高亮显示。
第二种是数据操作语言(DML),可以操作表里的数据。常用的关键字如下:
insert:向表中插入数据
delete:删除数据表中的数据
select:查询表中的数据
update:修改表中的数据
第三种是数据控制语言(DCL),用来确认或者取消对数据库中的数据进行的变更。除此之外还可设定用户对关系数据库的操作权限。
create:确认对数据库中数据进行的变更
rollback:取消对数据库中数据进行的变更。
crant:赋予用户操作权限。
在哪里写SQL语句?
打开Navicat客户端,找到对应的数据库,进行如下操作
找到【查询】,右键【新建查询】,如下图1
软件会出现代码书写区域,可在该区域编写代码,如下图2
写完代码后,点击编写区域上方的三角形,运行代码,运行结果会在下方区域展示,如下图3
基本查询语句
SQL语句里面最基本的查询语句之一是Select语句,可以说掌握了select语句,就相当于是掌握了一半SQL语句。select语句怎么用?
举个例子,数据库中有一张名为‘student’的表,表里面的数据如下:
现在,你想从表里面找出所有学号和学生的姓名,则对应的语句应该这样写
select 学号,姓名
from sutdent;
写完后,点击编写区域上方的三角形,运行代码,运行结果会在下方区域展示,展示如下为:
语句解析:
select 学生,性别 /*意思是你想查询这两列的数据*/
from student; /*意思是你从'student'这张表里面查询数据*/
使用select from 等关键字开头的句子,有一个通用的称呼,叫【子句】
抽象一下这个语句的基本用法:
select 列名1,列名2
from 表名;
书写规则:
1. 写完SQL语句后,要用英文分号结尾。
2. SQL语句不区分关键字的大小写。
3. 表明和列名也不区分大小写,但是插入表中的数据会区分大小写。
4. 输入符号的时候只能使用英文符号。
5. 列名不能够加单引号。
6. select语句中列的顺序与表内列的顺序没有关系,可以依据自己的需求决定select子句中列的顺序。
select语句的几种延伸用法:
1.如果你不知道一张表里面有多少列,想查看全部列,可以用*代替,写法如下:
select *
from student;
2.如果表的列名都是英文名称,为了方便理解,你想改成汉字,可以使用as关键字,写法如下:
select name as 姓名
from student;
这样展示的结果列中,【name】自动更名为【姓名】。
3.如何删除一列内重复的值,使用distinct
select distinct 姓名
from student;
注意事项:
1. 如果distinct后面跟着多个列名,则每一列的重复数据都会被去重
2. distinct只能放在列名前面,不能放在其他位置。
对查询的结果添加条件
举个例子,这里有一张数学成绩表'score',你想从表中查处成绩是80分的学生,写法如下:
select 姓名,成绩
from score
where 成绩 = '80';
语句解析:
select 姓名,成绩 /*选择表中姓名和成绩这两列*/
from student; /*从'score'这张表里面选择*/
where 成绩 = '80'; /*筛选出成绩是80分的数据*/
注意事项:
1. SQL语句的运行顺序和书写顺序是不同的。上面的例子中,书写顺序是1-2-3。SQL语句运行顺序是2-3-1。SQL语句先运行from子句,找到查询数据的表格;再运行where子句,找到符合要求的数据;最后运行select子句,展示出符合要求的数列。
2. 为什么运行顺序和书写顺序不同?是SQL语句基本规则之一,记住就好。
运算符
如果你想对查询出来的数据进行计算处理,就需要用到运算符。运算符一般有三种:算术运算符、比较运算符、逻辑运算符。
算术运算符:
常见的运算符有:(+-*/)加减乘数,算数运算符只能和数值类型的列进行计算
使用规则和数学里的使用规则一样,要特别一下说明两点:
如果有括号的,优先计算括号里的内容,例:(1+2)*3
运算符与空值(null)一起计算,结果为空值。例:1+nulll=null
案例:从成绩表里面(score),计算处学生成绩的百分比成绩。
select 学号,姓名,成绩/100 as 百分比成绩
from scorebi;
比较运算符
常见的比较运算符如下:
案例:从学生表里面,筛选出出生日期小于1990-10-1的学生,写法如下:
select 姓名,出生日期
frome student
whrere 出生日期 <‘1990-10-1’;
注意事项:
比较运算符可以和所有类型的值进行比较,日期类型、数值类型等。
如果是字符串类型的比较,则按照对应字符的顺序比较,例如10 < 2,因为字符串10是1开头,1<2 ,所以10<2
逻辑运算符
逻辑运算符可以将多个查询条件组合起来,常见的逻辑运算符如下:
案例1:从学生表里面,筛选出出生日期不小于1990-10-1的学生,写法如下:
select 姓名,出生日期
frome student
whrere not 出生日期 <‘1990-10-1';
可以看到, where not 出生日期 < ‘1990-10-1’ 的效果等同于:where not 出生日期 >= ‘1990-10-1’。所以,使用石板语句也能实现not语句的效果,因此简单句式中一般不适用not运算符。在编写复杂SQL语句的时候,有时候经常会使用not。
案例2:从学生表里面,筛选出出生日期大于1990-10-1,小于1999-10-1的学生,写法如下:
select 姓名,出生日期
frome student
whrere not 出生日期 >‘1990-10-1’
and 出生日期 <‘1999-10-1';
其他的运算法的用法大同小异,可以依据上面的句子类推。
注释的写法
为什么要写注释?
如果之后写的代码太长太复杂,写注释可以帮你回忆关键点。而且良好的注释也能方便别人阅读你的代码。
SQL语句有两种注释的方法,一种是单行注释,一种是多行注释。
单行注释写法(两个横线):-- 这是单行注释,汉字和横线之间要留有空格
多行注释写法:/* 这是多行注释*/
以上就是SQL简单查询的常见用法,接下来将分享复杂查询,多表查询和一些实战数据分析。欢迎持续关注,公号:数据产品经理之路。