MySQL知识点总结(一)

server/2025/2/8 4:39:18/

1.SQL分类

数据定义(DDL):创/改/删/名/清(cadrt)

        数据库对象:表/视图/存储/函数/触发器/事件

数据操作(DML):增/删/改/查(idus)

        操作数据库对象

数据控制(DCL):提/回/保/赋/收(权限)(crsgr)

2.SQL语言规则

  • 子句分行可缩进
  • 命令记得要加;
  • 关键字不可缩分
  • 标点符号要成对

3.注释

单行注释:#注释文字(MySQL特有的方式)

单行注释:-- 注释文字(--后面必须包含一个空格。)

多行注释:/*注释文字*/

4.select语句

4.1最基本select语句

SELECT字段1,字段2,...FROM表名

SELECT 1 + 1,3 * 2
FROM DUAL; #dual:伪表

结果集:

4.2别名

#.列的别名

#as:全称:alias(别名),可以省略

#列的别名可以使用一对" "引起来。

SELECT employee_id emp_id, last_name AS lname, department_id "部门id" 
FROM employees; I

4.3去除重复行

SELECT DISTINCT department _ id
FROM employees;

4.4空值参与运算

#空值参与运算
#1.空值:null
#2.null不等同于0,",'null'
#3.空值参与运算:结果一定也为空。
SELECT employee id, salary "月工资", salary * (1 + commission_pct ) * 12 "年工资", commisssion_pct
FROM employees;
#实际问题的解决方案:引入IFNULL
SELECT employee id, salary "月工资", salary * (1 + IFNULL (commission _ pct , 0 ) * 12 "年工资", commission_pct
FROM employees;

4.5着重号 ``

与关键字冲突

SELECT * FROM `order`;

4.6查询常数

SELECT 123,employee_id,last_name
FROM employees;

4.7显示表结构

DESCRIBE employees;#显示了表中字段的详细信息

4.8过滤数据(条件查询)

#练习:查询90号部门的员工信息
SELECT *
FROM employees
#过滤条件:声明在FROM结构的后面
WHERE department id = 90;
#练习:查询last_name为'King'的员工信息
SELECT
*
FROM employees
WHERE last_name = 'King';|

5.运算符

5.1算术运算符

5.1.1加法

#在SQL中,+没有连接的作用,就表示加法运算。此时,会将字符串转换为数值(隐式转换)
SELECT 100 + '1' #在Java语言中,结果是:1001。
FROM DUAL;
SELECT 100 + 'a' #此时将'a' 看做0处理
FROM DUAL;
SELECT 100 + NULL #nu11值参与运算,结果为null
FROM DUAL;

5.1.2加减乘除

SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,
100 + 2 * 5 / 2,100 / 3,100 DIV 0 #分母如果为0,则结果为null
FROM DUAL;

5.1.3取模运算

# 取模运算(计算余数): % mod
SELECT 12 % 3,12 % 5, 12 MOD -5,-12 % 5,-12 % -5
FROM DUAL;

 5.2比较运算符

5.2.1 等于=

SELECT 1 = 2, 1 ! = 2,1 = ' 1', 1 = 'a', 0 = 'a' # 字符串存在隐式转换。如果转换数值不成功,则看做0
FROM DUAL;SELECT'a'='a''ab'='ab','a'='b'#两边都是字符串的话,则按照ANSI的比较规则进行比较。
FROM DUAL;SELECT 1 = NULL, NULL = NULL # 只要有null参与判断,结果就为null
FROM DUAL;

关于NULL的条件比较查询

SELECT last name, salary, commission_pct
FROM employees
#where salary = 6000;
#此时执行,不会有任何的结果,因为比较结果为null非1
WHERE commission_pct = NULL;

5.2.2安全等于<=>

SELECT last name, salary, commission_pct
FROM
employees
WHERE
commission_pct <=> NULL; #解决null比较问题

5.2.3不等于<>,!=

SELECT 3 <> 2,'4' <> NULL,'' != NULL, NULL != NULLFROM DUAL;

5.2.4比较(IS NULL\IS NOT NULL\ ISNULL)

#IS NULL \ IS NOT NULL \ ISNULL
#练习:查询表中commission_pct为nul1的数据有哪些
SELECT last name , salary , commission_pct
FROM employees
WHERE commission_pct IS NULL;
#或
SELECT last name, salary, commission_pct
FROM employees
WHERE ISNULL(commission_pct);
#练习:查询表中commissionpct不为nu11的数据有哪些
SELECT last name , salary , commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
#或
SELECT last_name,salary,commission_pct
FROM employees
WHERE NOT commission_pct <=> NULL;

5.2.5字符串大小LEAST()/GREATEST()

SELECT LEAST('g','b','t','m'),GREATEST('g','b','t''m''m')
FROM DUAL;SELECT LEAST(first_name,last_name),#比较字符串大小
LEAST(LENGTH(first_name),LENGTH(last_name))#比较字符串长度大小
FROM employees;

5.2.6区域查询BETWEEN ...AND ...

#BETWEEN 条件下界1 AND 条件上界2(查询条件1和条件2范围内的数据,包含边界)
#查询工资在6000到8000的员工信息
SELECT employee_id, last_name, salary
FROM employees
#where salary between 6000 and 8000;
WHERE salary >= 6000 && salary <= 8000;
#交换6000和8000之后,查询不到数据
SELECT employee_id, last_name, salary
FROM employees
WHERE salary BETWEEN 8000 AND 6000;#错误写法
#查询工资不在6000到8000的员工信息
SELECT employee id, last name, salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
#where salary < 6000 or salary > 8000;

5.2.7in()/not in()

#练习:查询部门为10,20,30部门的员工信息
SELECT last_name, salary, department_id
FROM employees
#where department_id = 10 or department_id = 20 or department_id = 30 ;
WHERE department id IN (10,20,30);
#练习:查询工资不是6000,7000,8000的员工信息
SELECT last_name , salary , department_id
FROM employees I
WHERE salary NOT IN (6000,7000,8000);

5.2.8模糊查询:LIKE

#练习:查询last_name中包含字符'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';
#练习:查询last_name中以字符a’开头的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE 'a%';
#练习:查询last_name中包含字符'a'且包含字符'e'的员工信息
#写法1
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
#写法2
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%';
#_:代表一个不确定的字符
#查询第2个字符是'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '_a%';
#练习:查询第3个字符是'a'的员工信息
SELECT last name
FROM employees
WHERE last_name LIKE '__a%';
#练习:查询第2个字符是且第3个字符是'a'的员工信息
#需要使用转义字符:\
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';
#或者将$作为转义字符(了解)
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE'$';

 5.2.9正则表达式REGEXP(略)

5.3逻辑运算符

5.3.1 OR(||)  AND(&&)

# or and
SELECT last_name, salary, department_id
FROM employees
#where department_id = 10 or department_id = 20;
#where department_id = 10 and department_id = 20;
WHERE department id = 50 AND salary > 6000;

5.3.2 not

# not
SELECT last_name, salary, department_id
FROM employees
#where salary not between 6000 and 8000;
#where commission_pct is not null;
WHERE NOT commission_pct <=> NULL;

5.3.3 XOR

# XOR 只满足一个条件,追求”异“
SELECT last name, salary, department id
FROM employees
WHERE department_id = 50 XOR salary > 6000;

OR可以利AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。

 5.4位运算符

5.4.1 &(按位与) |(按位或)^(按位异或)

SELECT 12 & 5,12 | 5,12 ^ 5
FROM DUAL;

原理如下:

5.4.2 ~(按位取反)

SELECT 10 & ~1 FROM DUAL

原理如下

5.4.3 <<(左移) >>(右移)

在一定范围内,左移一位相当于每一项乘2右移一位相当于每一项除以2

SELECT 4 << 1,8 >> 1
FROM DUAL;

 原理如下:


http://www.ppmy.cn/server/165850.html

相关文章

深度学习篇---深度学习框架图像预处理各部分组件

文章目录 前言第一部分&#xff1a;图像预处理PaddlePaddle 图像预处理PyTorch 图像预处理 第二部分&#xff1a;框架各部分组件PaddlePaddle1.卷积层 (Convolutional Layer)2.池化层 (Pooling Layer)3.全连接层 (Fully Connected Layer)4.激活函数 (Activation Function)5.优化…

Node.js学习指南

一、模块化规范 nodejs使用的模块化规范 叫做 common.js 规范: 每一个模块都有独立的作用域 代码在各自模块中执行 不会造成全局污染 每一个模块都是一个独立的文件&#xff08;module对象&#xff09; 模块可以被多次加载&#xff08;module.exports 属性&#xff09; 但是仅…

使用Python的Tabulate库优雅地格式化表格数据

使用Python的Tabulate库优雅地格式化表格数据 在数据分析和软件开发中&#xff0c;表格数据的展示是一个常见的需求。无论是简单的数据报告&#xff0c;还是复杂的数据可视化&#xff0c;表格都是一种直观且有效的信息展示方式。Python作为一门强大的编程语言&#xff0c;拥有…

Nginx如何实现 TCP和UDP代理?

文章目录 前言 Nginx之TCP和UDP代理 工作原理示意图 配置文件和命令参数注释 基本命令 配置实例说明 TCP代理实例UDP代理实例 总结 前言 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;同时也支持TCP/UDP代理。在1.9.13版本后&#xff0c;Nginx已经支持端口转发&…

input 超出maxlength限制后,输入框变红

一、前言 最近收到产品的一个需求&#xff1a;输入框限制了maxlength“11”&#xff0c;需要在输入第12位时&#xff0c;输入框变红&#xff1b;当然&#xff0c;第12位是不能真正输入到输入框中的。 二、实现难点 其实&#xff0c;单纯的要监听 字母和数字以及字符 还是比较容…

selenium记录Spiderbuf例题C01

防止自己遗忘&#xff0c;故作此为记录。 步骤&#xff1a; &#xff08;1&#xff09;进入例题&#xff0c;找到需要点击的元素。 可得button xpath&#xff1a; click_xpath: str r//li/a[title"mnist"] WebDriverWait(driver, 10).until(expected_conditions.…

洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

洛谷题目传送门 题目描述 某市有 n 个路口&#xff0c;有 m 段道路连接这些路口&#xff0c;组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因&#xff0c;在一部分道路的中间设置了一些限高杆&#xff0c;有限高杆的路…

介绍使用 WGAN(Wasserstein GAN)网络对天然和爆破的地震波形图进行分类的实现步骤

以下将为你详细介绍使用 WGAN&#xff08;Wasserstein GAN&#xff09;网络对天然和爆破的地震波形图进行分类的实现步骤&#xff0c;包含代码实现和项目结题报告的大纲。 代码实现 1. 环境准备 确保你已经安装了必要的库&#xff0c;如 torch、torchvision、numpy、matplot…