MySQL 单表查询

SQL的语言分类

SQL功能动词
DQL ( Data Query Language ) : 数据查询语言select
DDL (Data Define Languge) : 数据定义语言create、drop、alter
DML ( Data Manipulate Language) : 数据操作语言insert、update、 delete
DCL ( Data Control Language ) : 数据控制语言gtant、revoke

数据查询

语句格式:
SELECT [ALL|DISTINCT] <目标列表达式> FROM <表名或视图名>
WHERE <条件表达式>
GROUPBY <列名1> [ HAVING <条件表达式>]
ORDERBY <列名2> [ ASCIDESC ];

单表查询

一、选择表中的若干列

1.查询指定列

SELECT 列名 FROM 表名;

2.查询全部列

SELECT * FROM 表名;

3.查询经过计算的值

SELECT子句的<目标列表达式>可以为:

  • 算术表达式
  • 字符串常量
  • 函数
  • 列别名

4.选择列

(1)常量
(2) 表达式

select sname , 2020 - sage from student ;

(3) 函数

select sno ,year(getdate( ))-sage from student;

(4) 列别名

select sno ,year(getdate( ))-sage (AS)出生年份 from student ;
如果别名包含SQL关键字或特殊符号,需带双引号""

二、选择表中的若干元组

1.消除取值重复的行

  • DISTINCT
  • ALL(默认)

2.查询满足条件的元组

常用查询条件

查询条件谓词
比较= > < >= <= (!= ) <> !> !<
去冗余DISTINCT
确定范围BETWEEN AND,NOT BETWEEN AND
确定集合IN,NOT IN
字符匹配LIKE,NOT LIKE
空值IS NULL, IS NOT NULL
多重条件AND, OR , NOT

3.mysql中的+号:

只有一个功能:运算符

  • select 100+90; 两个操作数都为数值型,则做加法运算
  • select ‘123’+90; 只要其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算
  • select ‘john’+90; 如果转换失败,则将字符型数值转换成0
  • select nul1+10; 只要其中一方为null,则结果肯定为null
    mysql中的连接
  • SELECT CONCAT (‘a’, ‘b’, ‘c’) AS 结果;
  • SELECT CONCAT (last_ name, first_ name) AS 姓名 FROM employees;
    若连接时有一项为null值
    SELECT IFNULL (为null的字段名 , 若为null则显示的值) FROM 表名;
  • eg:SELECT IFNULL (commission_ pct , 0) AS 奖金率, comnission pct
    FROM employees;

4.字符匹配

like
特点:
①一般和通配符搭配使用
通配符:

  • % : 任意多个字符,包含0个字符
  • _ :任意单个字符
(1)匹配串为固定字符串

查询学号为200215121的学生的详细情况
SEL ECT * FROM Student
WHERE Sno LIKE ‘200215121’;
等价于:
SELECT * FROM Student
WHERE Sno= ’ 200215121’;

(2)匹配串为含通配符的字符串

查询所有姓刘学生的姓名、 学号和性别
SELECT Sname,Sno ,Ssex FROM Student
WHERE Sname LIKE‘刘%’ ;

查询姓"欧阳"且全名为三个汉字的学生的姓名
SELECT Sname FROM Student
WHERE Sname LIKE '欧阳_ ’ ;

查询所有不姓刘的学生姓名
SELECT Sname,Sno,Ssex FROM Student
WHERE Sname NOT LIKE ‘刘%’ ;

(3)使用换码字符将通配符转义为普通字符

查询DB_ Design 课程的课程号和学分
SELECT Cno, Ccredit FROM Course
WHERE Cname LIKE ‘DB \ _ Design’ ESCAPE ’ \ ';

查询以"DB_ " 开头,且倒数第3个字符为i 的课程的详细情况
SELECT * FROM Course
WHERE Cname LIKE ‘DB \ _ %i__’ ESCAPE’ \ ';

ESCAPE’ \ ’ 表示 \ 为换码字符
’ ’ 中的符号可以为任意符号
eg:ESCAPE’ ¥ ’ 表示 ¥ 为换码字符

(4) 涉及空值的查询

IS NULL 或 IS NOT NULL
“IS"不能用”="代替
IS NULL: 仅仅可以判断NULL值,可读性较高,建议使用
<=> NULL : 既可以判断NULL值,又可以判断普通的数值,可读性较低

(5) 多重条件查询
  • AND和OR来联结多个查询条件
    AND的优先级高于OR,可以用括号改变优先级
  • 可用来实现多种其他谓词
    [NOT] IN
    [NOT] BETWEEN AND

三、组函数 ( 组函数的返回值只有一个 )

关键字功能
COUNT()计算所选数据(记录)的个数
SUM()计算某一数值列的和
AVG()计算某一数值列的平均值
MAX()求(字符、 日期、数值列)的最大值
MIN()求(字符、 日期、数值列)的最小值

四、GROUP BY子句

  • 将查询结果表按某一列或多列值分组,值相等的为一-组;
  • 未对查询分组,组函数作用于整个查询结果
  • 对查询分组后,组函数作用于每个组
  • 包含GROUP BY子句的查询语句中,SELECT子句后面的所
    有字段列表(除组函数外),均应该包含在GROUP BY子句中

HAVING与WHERE区别

作用对象不同

  • WHERE子句作用于基表或视图,从中选择满足条件的元组
  • HAVING短语作用于,从中选择满足条件的组

五、ORDER BY 子句

升序: ASC(默认)
降序: DESC
缺省值为升序.
当排序列含空值时

  • DESC : 含有空值的行位于最前面
  • ASC : 含有空值的行位于最后面
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值