SELECT基础语句

1.SQL的分类

DDL:数据定义语言。 从无到有创建数据库对象CREATE/ALTER/DROP/RENAME/TRUNCATE

DML:数据操作语言。
INSERT /DELETE / UPDATE / SELECT
(增删改查insert / delete / update / select)

DCL:数据控制语言。 控制数据操作
COMMIT / ROLLBACK(回改) / SAVEPOINT(保存点) /GRANT / REVOKE

DQL:数据查询语言。 SECELT(由于select使用频率极高,难度大,有些分类单独把select归为一类)

SELECT
基本的select语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询
DDL(含DCL)  创建和管理表 
DML(非SELECT)数据处理之增删改
数据类型精讲

2.select基本查询语句

查看数据库:show databases;
创建数据库:create database +dbname;
使用数据库:use + dbname;
添加数据到指定位置:insert into + dataname + value;
搜索数据: select ... from ... ;

SELECT 标识选择哪些列
FROM 标识从哪个表中选择

列的别名

  • 紧跟列名:last_name lname
  • 加关键字AS(alias):last_name AS lname
  • 别名使用双引号,可以避免空格错误:last_name "lname"

删除重复行(去重)

在SELECT语句中使用关键字DISTINCT去除重复行

SELECT DISTINCT department_id 
FROM employees;

空值参与运算

#空值:null,不是0,而是不知道(缺失值)

着重号

避免和关键字等重名SELECT * FROM `order`;

查询常数

每一行都多出一列常数a

SELECT "A公司",123,employss_id
FROM employees;

显示表结构

使用describe或desc命令

DESCRIBE employees;#显示表字段详细信息
DESC emoloyees;

过滤数据

  • 返回符合WHERE子句的信息
  • 在SELECT…FROM…语句后添加WHERE语句进行筛选所需信息
  • 多组过滤条件用AND连接WHERE A AND B;
  • WHERE子句(过滤条件)要紧挨FROM结构后后面
#查询90号部门的员工信息 
SELECT *
FROM employees
WHERE department_id = 90;

3.运算符

等于运算符:’ = ’

  • 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
    -如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

NULL = NULL,返回NULL;
NULL = 1,返回NULL;

安全等于运算符: ‘<=>’

同’ = ',唯一区别:能对NULL值进行判断

NULL = NULL,返回1;
NULL = 1,返回0;

其他符号运算符

求余(求模)运算符: % 或 MOD
不等于运算符:<> 或 !=

非符号运算符

在这里插入图片描述

BETWEEN AND运算符

#判断 a <= c <= b,返回结果为0或1,或者返回c中符合条件的个体
SELECT employee_id
FROM employees
WHERE employee_id BETWEEN 100 and 120;

IN,NOTIN运算符

#返回 employees 中有employee_id是(100,200,300)的员工信息
SELECT *
FROM employees
WHERE employee_id IN(100,200,300);

LIKE运算符

主要用来匹配字符串(模糊匹配)

‘%’:匹配0个或多个字符
‘_’:只匹配1个字符

 WHERE name LIKE '_a%';
 >> ba bas bsadd ...

ESCAPE

回避特殊符号的:使用转义符。

[%]转为[$%][_]转为[$_],然后再加上[ESCAPE ‘$’].
SELECT job_id FROM jobs WHERE job_id LIKE 'IT$_%' escape '$';
使用\表示转义,要省略ESCAPESELECT job_id FROM jobs WHERE job_id LIKE 'IT\_%';

REGEXP

  • ‘^’匹配以该字符后面的字符开头的字符串。
  • ‘$’匹配以该字符前面的字符结尾的字符串。
  • ‘.’匹配任何一个单字符。
  • “[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一 个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
  • ’匹配零个或多个在它前面的字符。例如,“x”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字, 而“”匹配任何数量的任何字符

逻辑运算符

逻辑或:OR 或 ||
逻辑异或运算符:XOR
逻辑与:AND 或 &&
逻辑非:NOT 或 !

OR可以和AND一起使用,但AND优先级高于OR

正则表达式查询

用来检索或替换文本内容

符号说明例子意思
^匹配起始字符^bb开头的字符串
$匹配结束字符bt$以bt结尾的字符串
.匹配单个字符c.tc和t中间只有一个字符的字符串
*匹配0个或多个字符c*tc和t之间可存在0或多个字符的字符串
<字符串>匹配含指定字符串的文本含ca的字符串
[字符集合]匹配含[ ]任意字符[xz]任何含x或z的字符串
[^]匹配不含[ ]任意字符[^xz]任何不含x或z的字符串
字符串{n}匹配前面字符串至少n次ab{2}匹配两个或更多的ab
字符串{n,m}匹配前面字符串的次数范围[n,m]a{2,5}匹配最少2个,最多5个a的字符串

4.排序

排序规则

ORDER BY子句排序

  • ASC(ascend):升序,可省。
  • DESC(descend):降序。

ORDER BY子句在SELECT语句的结尾。

## ORDER BY子句降序
SELECT * 
FROM employees 
ORDER BY hire_date DESC;

多列排序

  • 多列排序时,优先第一列,第一列有相同值,才会对第二列排序
  • 可以使用不在SELECT列表中的列排序
## 多列排序 
SELECT last_name, department_id, salary 
FROM employees 
ORDER BY department_id, salary DESC;

5.分页

  • LIMIT子句必须放在整个SELECT子句的最后
  • LIMIT子句分页:LIMIT 位置偏移量,行数

“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数
第一条记录的位置偏移量是0
“行数”指示返回的记录条数

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值