数据库之SELECT查询语句

目录

1 基础知识

1.1 数据库的基本形式

1.2 mysql数据库登陆的基本操作

2 常用字段类型

2.1 数值型

2.2 字符型

2.3 日期型

3 selete语句

4 where子句

4.1 条件操作符

4.2 逻辑运算符

5 排序

6、函数

6.1 单行函数

6.1.1 字符函数

6.1.2 数值函数

6.1.3 日期函数

6.1.4 转换函数

6.2 分组函数(多行函数)


本文主要讲解SELECT语句的具体用法,包括基本知识、常用的字段类型、where子句、常用函数等。

1 基础知识

1.1 数据库的基本形式

在关系型数据库中,所有数据都存在表中,一个表由字段和数据组成,如下图所示:

编号

姓名

性别

年龄

成绩

爱好

001

王成

18

91

打篮球

002

李四

19

92

踢足球

003

李三

20

93

羽毛球

字段

数据

数据

数据

 

1.2 mysql数据库登陆的基本操作

1、mysql -u root -p

登陆命令,需要输入密码,然后登陆mysql。

2、show databases;

可以查看现有数据库。

3、use 数据库名;

 可以使用指定的数据库,比如use mysql。

4、show tables;

可以显示当前数据库中的表。

5、show create table 表名;

显示指定表名的定义,即该表的所有字段信息。

6、desc 表名;

显示指定表名的定义,即该表的所有字段信息。

7、select * from 表名;

显示指定表名的表中的所有信息。

 

2 常用字段类型

常用的字段类型有数值类型、字符型、日期型。

2.1 数值型

numer(m)  表示m位的整数。

number(m,n) m表示总位数,m是小数点后的位数。

数值类型可以直接使用 + - * / 运算符。

2.2 字符型

char(m)   m位定长字符串

varchar2(m)  m位变长字符串

定长就是长度固定,不足的部分用空格填充。变长就是长度随数据的不同而不同,不去填充空格。定长字符串效率要略高于变长字符串,但是比较浪费空间,如果没有特殊的要求,一般选用varchar2。

2.3 日期型

date 即日期型,包括年月日,小时分秒。

日期型的字段可以使用 + - 运算符。

3 selete语句

select用来做数据查询,后面可以跟各种字段名,表示要查询的字段,多个字段用”,”隔开,也可以跟表达式和特殊内容。

select语句一般和from语句结合使用,from语句,后面跟表名,表示从哪些表中查询数据,多个表用”,”隔开。比如查看emp表中的id、first_name、sal字段,可以使用:

select id,first_name,sal from emp;

每个字段在select语句中,都可以定义一个别名,方便显示和使用,比如查看emp表中的id,显示成myid:

select id myid from emp;

如果要指定大小写,则需要用””来限定,如下:

select id “myid” from emp;

注:sql语句本身不包括分号,但是想要运行必须用” ; ” 或者”/”

“||”可以连接两个文本型(字符串)的数据,比如显示的时候,将first_name和last_name合并在一起显示出来:

select id , first_name || ‘ ’ || last_name name from emp;

在数据库中,有些数据不是必须的,有可能出现空缺的情况,可以用“NULL”表示数据的空缺。“NULL”是一种特殊的数据,不能简单地看作’’或者0。

一般的数据库(mysql和oracle都有)有一种特殊的表,叫做虚表,里面只有一个字段,但是这个字段类型可以是任意的,可以这样操作它:

select sysdate() from dual;

(mysql中sysdate()可以获取当前时间信息)

select 1+1 from dual;

4 where子句

在数据库的查询中,更多的不是查看所有的数据,而是根据一定的条件进行数据的筛选,按照条件进行的查询叫做条件查询,条件查询需要用到where子句。

4.1 条件操作符

select id , sal from emp

where sal >1000;

 

筛选sal大于1000的数据显示出来,同样,可以是:

操作符

说明                      

示例

=

等于

where sal =10000

<>

不等于

where sal <> 10000

!=

不等于

where sal != 10000

<

小于

where sal < 10000

<=

小于等于

where sal <= 10000

>

大于

where sal > 10000

>=

大于等于

where sal >= 10000

between and

在指定的两个值之间

where sal between 1000 and 10000

in()

在数据清单内

where sal in (2000,5000,10000)

not in()

不在数据清单内

where sal not in(2000,5000,10000)

like

模糊查询

where name like ‘a%’

is NULL

提取空值的数据

where sal is NULL

is NOT NULL

提取不是空值的数据

where sal is NOT NULL

like 模糊查询时,可以结合通配符进行查询:

“_” 代表任意的单个字符,like ‘a_’表示找出以a开头后面还有一个字符的数据。

“%”代表任意的0-n个字符,like ‘a%’表示找出以’a’开头,后面随意的数据。

4.2 逻辑运算符

查询条件也可以使用逻辑运算符来组合:与、或、非:

and 逻辑与

or 逻辑或

not 逻辑非

5 排序

查询结果经常需要排序,排序分为升序和降序。可以使用order by 子句来进行排序:

order by 字段名/别名/序号

order by后面可以跟多个拍寻条件,但是只有在前面的条件相等的情况下,才会考虑后面的。

 

6、函数

函数提供了某种功能,比如NVL()函数提供了对空值的处理。有些功能数据库提供了,开发的语言也提供了 类似功能的函数,可以根据需求进行选择。函数分为单行函数和多行函数(分组函数),单行函数就是输入一条数据,输出一条数据,多行数据就是输入多条数据,输出一条数据。

6.1 单行函数

单行函数分为:

1、字符函数,处理字符串类型的函数(类似C语言的string.h中的函数)。

2、数值函数,处理数值类型的函数。

3、日期函数,处理日期类型的函数。

4、转换函数,数值、日期、字符三种类型数据的转换。

5、其他函数,一些辅助函数,比如nvl(),空值替换函数。

6.1.1 字符函数

LOWER    ——转换所有大写字母为小写。

UPPER     ——转换所有小写字符为大写。

INITCAP   ——首字母大写,其他字母小写。

CONCAT   ——连接两个字符串,这个函数基本不用,使用“||”代替。

SUBSTR    ——截取字符串,获取字符串的一部分。

LENGTH   ——获取字符串的长度。

6.1.2 数值函数

round()     ——四舍五入。

trunc()     ——全部舍。

6.1.3 日期函数

round()    ——日期的四舍五入

trunc()    ——日期的全部舍。

Months_between()  ——计算两个日期间隔了多少个月。

6.1.4 转换函数

转换函数用于文本、日期、数值三者之间的类型转换,这种转换只发生在字符和日期之间或者数值和字符之间。

1、字符类型和日期类型之间的转换函数

to_date()     ——字符转日期。

to_char()    ——日期转字符。

to_date(‘文本格式的日期’,’日期格式’),其中,日期的格式如下:

Y    代表年,一般用 ‘yyyy’代表4位年,’yy’代表两位年

M    代表月,一般用’MM’代表2位月,不足会处理。

DD  代表日,一般用DD代表2位日。

H    代表小时,一般用’HH24’代表24小时制的2位小时。

MI    分

S      秒,一般用’SS’代表2位秒。

例如:

to_date(‘2019-3-17 10:10:10’,’YYYY-MM-DD HH24:MI:SS’)

to_char(stsdate(),’yyyy-mm-dd’) 

 

2、数值型和字符型的转换函数

to_char()      ——数值转字符。

to_number()   ——字符转数值。

to_char(数值,’数值格式’),格式如下:

9   表示这一位是数字,没有就空着。

0   表示这是一位数字,没有就补0.

$    货币美元符号。

L    本地货币符号。

.     小数点

,     千分位

to_char(1202,’000,000.00$’)  表示将1202转成字符,结果是: 001,202.00$。

 

单行函数可以无限层嵌套,计算的次序是从内到外:

round(nvl(commission_pct,0),2)  //函数嵌套

6.2 分组函数(多行函数)

常见的分组函数如下:

avg()   ——取平均值,只能用于数值型。

count()  ——总数,用于所有类型。

max()    ——最大值,用于所有类型。

min()    ——最小值,用于所有类型。

sum()    ——求和,只能数值型。

分组函数会自动过滤空值,如果需要考虑空值,需要借助nvl()函数来替换空值。

发布了33 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39545674/article/details/88618846