数据库-4

DQL语言

DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据。

DQL语言主要的语句:SELECT语句

DQL语言是数据库语言中最核心、最重要的语句,也是使用频率最高的语句。

查询的主要类型:简单的单表查询多表的复杂查询子查询。

什么是查询?

1.查询产生一个虚拟表。

2.看到的是表形式显示的结果,但结果并不真正存储。

3.每次执行查询只是从数据表中提取数据,并按照表格的形式显示出来。

SELECT语法

语法:SELECT   [ALL | DISTINCT]

{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }

FROM  table_name  [ as  table_ alias  ]    

[ left|out|inner  join  table_name2 ]    #多表连接查询    

[ WHERE  … ]       #指定结果需满足的条件    

[ GROUP BY …]    #指定结果按照哪几个字段来分组    

[ HAVING …]    #过滤分组的记录必须满足的次要条件    

[ ORDER BY… ]    #指定查询记录按一个或者多个条件排序    

[ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;  #分页查询

注意:[ ]   括号代表可选的;

          { }   括号代表必须的;

          #    MySQL语句中的注释符,也可以用   /*该处为注释*/

SELECT应用案例

1:查询表中所有的数据行和列,采用“*”符号。

语法:SELECT * FROM 表名;(效率低下,不推荐使用)

案例:SELECT   *   FROM student;

2:查询表中指定列的数据。

语法:SELECT   字段名1,字段名2,…字段名n   FROM 表名;

示例:SELECT  studentno, studentname, phone FROM student;

3:在查询中使用别名,使用“AS”关键字。

可给数据列取一个新别名

可给表取一个新别名

可把经计算或总结的结果用另外一个新名称来代替

语法:SELECT   field1 [ AS  alias1] [,field2 [AS  alias2]] […,fieldn [AS  aliasn]]

           FROM  table_name  [ AS  table_ alias  ];

示例:SELECT   studentno   AS “学号”   FROM  student;

           SELECT   s.studentno   FROM   student AS  s;

          SELECT CONCAT("S",studentno) FROM student;

4:在查询中使用常量列:如果需要将一些常量的默认信息添加到输出结果中,以方便统计或计算。可以使用常量列。

语法:

示例:SELECT  studentno AS “学号”, studentname AS “姓名”,

     phone AS “手机号”,address AS “家庭住址”,

   ‘郑州翔天信鸽’ AS “学校名称”

    FROM student;

5:DISTINCT关键字的使用:去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。

语法:SELECT   DISTINCT field1 [ AS  alias1] [,field2 [AS  alias2]] […,fieldn [AS  aliasn]]

          FROM  table_name  [ AS  table_ alias  ];

示例:#查询学生表中所包含的年级ID

          SELECT   DISTINCT  gradeid  FROM  student;

WHERE条件

WHERE条件:用于检索数据表中符合条件的记录

搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假

搜索条件的组成: 逻辑操作符 比较操作符;

逻辑运算符

操作符名称

语法

描述

AND或&& 

a AND b 或 a && b

逻辑与,同时为真,结果才为真

OR或||

a OR b 或 a||b

逻辑或,只要一个为真,则结果为真

NOT或!

NOT a 或 !a

逻辑非,若操作数为假,结果则为真

 比较运算符

操作符名称

语法

描述

IS NULL

a IS NULL

若操作符为NULL,则结果为真

IS NOT NULL

a IS NOT NULL

若操作符不为NULL,则结果为真

BETWEEN

a BETWEEN b AND c

若a范围在b与c之间则结果为真

LIKE

a LIKE b

SQL模式匹配,若a匹配b,则结果为真

IN

a IN (a1,a2,a3,….)

若a等于a1,a2…中的某一个,则结果为真

注意: 数值数据类型的记录之间才能进行算术运算

            相同数据类型的数据之间才能进行比较

NULL空值条件查询

NULL

NULL代表“无值”

区别于零值0和空符串“”

只能出现在定义允许为NULL的字段

须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

语法:SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  IS  NULL

BETWEEN AND范围查询

BETWEEN AND范围查询:根据一个范围值来检索

等同于 >= 和 <= 联合使用

语法:SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  BETWEEN  值1 AND  值2

示例:#查询课程表中课时在110和120之间的所有记录  

         SELECT * FROM subject WHERE classhour BETWEEN  110 AND 120;

         #等同于:  

         SELECT * FROM subject WHERE classhour >= 110 AND classhour <=120;

LIKE模糊查询

在WHERE子句中,使用LIKE关键字进行模糊查询

与“%”一起使用,表示匹配0或任意多个字符

与“_”一起使用,表示匹配单个字符

示例:#查询包含“数学”的所有课程

           SELECT   *  FROM subject WHERE SubjectName  LIKE  "%数学%";

          #查询所有姓名为“李**”三个字的学生信息

         SELECT  StudentNo,StudentName FROM student   WHERE StudentName LIKE "李__";

使用IN进行范围查询

在WHERE子句中使用IN进行范围查询

查询的字段x的值,至少与括号中的一个值相同

多个值之间用英文逗号隔开

语法:SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  IN  ( 值1,值2,值3…值n)

示例:SELECT  *  FROM  subject  where    ClassHour = 100  OR ClassHour =110

           OR ClassHour  = 120;  #普通处理方式

           SELECT  *  FROM  subject  where ClassHour  IN ( 100, 110,120 );

          #使用IN进行查询方式,更为简洁,效率更高

MySQL中常用的函数

聚合函数

字符串函数

日期时间函数

数学函数

MySQL中的聚合函数

函数名

作用

AVG()

返回某字段的平均值

COUNT()

返回某字段的行数

MAX()

返回某字段的最大值

MIN()

返回某字段的最小值

SUM()

返回某字段的和

MySQL中常用的数学函数 

函数名

作    用

举        例

CEIL(x)

返回大于或等于数值x的最小整数

SELECT CEIL(2.3)

返回:3

FLOOR(x)

返回小于或等于数值x的最大整数

SELECT FLOOR(2.3)

返回:2

RAND()

返回0~1间的随机数

SELECT RAND()

返回:0.5525468583708134

 MySQL中常用的字符串函数

函 数 名

作    用

举    例

CONCAT(str1, str1...strn)

字符串连接

SELECT    CONCAT('My','S','QL');

返回:MySQL

INSERT(str,pos,len,newstr)

字符串替换

SELECT INSERT(

    '这是SQL Server数据库',

    3,10,'MySQL');

返回:这是MySQL数据库

LOWER(str)

将字符串转为小写

SELECT LOWER('MySQL');

返回:mysql

UPPER(str)

将字符串转为大写

SELECT UPPER('MySQL');

 返回:MYSQL

SUBSTRING  (str,num,len)

字符串截取

SELECT SUBSTRING(

    'JavaMySQLOracle',5,5);

返回:MySQL

 MySQL中常用的日期时间函数

函数名

作用

举例(结果与当前时间有关)

CURDATE()

获取当前日期

SELECT CURDATE();   返回:2016-08-08

CURTIME()

获取当前时间

SELECT CURTIME();    返回:19:19:26

NOW()

获取当前日期和时间

SELECT NOW();   返回:2016-08-08 19:19:26

WEEK(date)

返回日期date为一年中的第几周

SELECT WEEK(NOW());  返回:26

YEAR(date)

返回日期date的年份

SELECT YEAR(NOW());  返回:2016

HOUR(time)

返回时间time的小时值

SELECT HOUR(NOW());  返回:9

MINUTE(time)

返回时间time的分钟值

SELECT MINUTE(NOW()); 返回:43

DATEDIFF(date1,date2)

返回日期参数date1和date2之间相隔的天数

SELECT DATEDIFF(NOW(), '2008-8-8’);  

返回:2881       

ADDDATE(date,n)

计算日期参数date加上n天后的日期

SELECT ADDDATE(NOW(),5); 

返回:2016-09-02  09:37:07  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值