Mysql基础学习Day01

本文介绍了SQL语言的三大类别:DDL、DML和DCL,涵盖了注释、基本SELECT语句、去重、空值处理、表结构展示和数据过滤等内容。通过实例演示了如何使用SQL进行数据操作和表结构查看,适合初学者快速上手。
摘要由CSDN通过智能技术生成


突然发现java基础内容学的差不多了
就又开一个mysql基础学习


1.SQL语言的分类

SQL语言在功能上主要分为如下3大类:
(1)DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
(2)DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。
主要的语句关键字包括INSERT、DELETE、UPDATE、SELECT等。
SELECT是SQL语言的基础,最为重要。
(3)DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。
主要的语句关键字包括GRANT、REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。

2.注释

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(–后面必须包含一个空格。)
多行注释:/* 注释文字 */

3.基本的select语句

(1)select…from…
语法:

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

(2)列的别名
重命名一个列
便于计算
紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特
殊的字符并区分大小写。
AS 可以省略
示例:

SELECT last_name AS name, commission_pct comm FROM employees;

SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;

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

SELECT DISTINCT department_id FROM employees;

这里有两点需要注意:
①DISTINCT 需要放到所有列名的前面,如果写成

SELECT salary, DISTINCT department_id FROM employees

会报错。
②DISTINCT 其实是对后面所有列名的组合进行去重,你能看到最后的结果是74条,因为这74个部门id不同,都有salary这个属性值。如果你想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id即可,后面不需要再加其他的列名了。

(4)空值参与运算
所有运算符或列值遇到null值,运算的结果都为null
在 MySQL 里面,空值不等于空字符串。一个空字符串的长度是0,而一个空值的长
度是空。而且,在MySQL里面,空值是占用空间的。

(5)着重号
我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来。

(6)常数查询
SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。

比如说,我们想对employees数据表中的员工姓名进行查询,同时增加一列字段 corporation,这个字段固定值为“公司”,可以这样写:

SELECT '公司' as corporation, last_name FROM employees;

4.显示表结构

使用DESCRIBE 或 DESC 命令,表示表结构。
DESCRIBE employees;
或DESC employees;

mysql> desc employees; 
+----------------+-------------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+----------------+-------------+------+-----+---------+-------+ 
| employee_id | int(6) | NO | PRI | 0 | | 
| first_name | varchar(20) | YES | | NULL | | 
| last_name | varchar(25) | NO | | NULL | | 
| email | varchar(25) | NO | UNI | NULL | | 
| phone_number | varchar(20) | YES | | NULL | | 
| hire_date | date | NO | | NULL | | 
| job_id | varchar(10) | NO | MUL | NULL | | 
| salary | double(8,2) | YES | | NULL | | 
| commission_pct | double(2,2) | YES | | NULL | | 
| manager_id | int(6) | YES | MUL | NULL | | 
| department_id | int(4) | YES | MUL | NULL | | 
+----------------+-------------+------+-----+---------+-------+ 
11 rows in set (0.00 sec)

Field:表示字段名称。
Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
Null:表示该列是否可以存储NULL值。
Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一
部分;MUL表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,那么值是多少。
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

5.过滤数据

语法:
SELECT 字段1,字段2 FROM 表名 WHERE 过滤条件

使用WHERE 子句,将不满足条件的行过滤掉
WHERE子句紧随 FROM子句

6.算术运算符
算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。
在这里插入图片描述
(1)加法与减法运算符
①一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;
②一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;
③加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;
④在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL中字符串拼接要使用字符串函数CONCAT()实现)
(2)乘法与除法运算符
①一个数乘以整数1和除以整数1后仍得原数;
②一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;
③一个数除以整数后,不管是否能除尽,结果都为一个浮点数;
④一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;
⑤乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。
⑥在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。

(3)求模(求余)运算符

mysql> SELECT 12 % 3, 12 MOD 5 FROM dual; 
+--------+----------+ 
| 12 % 3 | 12 MOD 5 | 
+--------+----------+ 
| 0 | 2 | 
+--------+----------+ 
1 row in set (0.00 sec) 

7.比较运算符
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
在这里插入图片描述在这里插入图片描述

(1)等号运算符
等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。

在使用等号运算符时,遵循如下规则:
①如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSI编码是否相等。
②如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
③如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
④如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
(2)安全等于运算符
安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

(3)不等于运算符
不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

(4)非符号类型的运算符:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)空运算符
空运算符(IS NULL或者ISNULL)判断一个值是否为NULL,如果为NULL则返回1,否则返回0。

(6)非空运算符
非空运算符(IS NOT NULL)判断一个值是否不为NULL,如果不为NULL则返回1,否则返
回0。

(7)最小值运算符
语法格式为:LEAST(值1,值2,…,值n)。其中,“值n”表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

(8)最大值运算符
语法格式为:GREATEST(值1,值2,…,值n)。其中,n表示参数列表中有n个值。当有
两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

(9)BETWEEN AND运算符
BETWEEN运算符使用的格式通常为SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,
当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

(10)IN运算符
IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。

(11)NOT IN运算符
NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一
个值,则返回1,否则返回0。

(12)LIKE运算符 LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

LIKE运算符通常使用如下通配符:
“%”:匹配0个或多个字符。
“_”:只能匹配一个字符。

8.逻辑运算符
逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。
MySQL中支持4种逻辑运算符如下:
在这里插入图片描述

(1)逻辑非运算符
逻辑非(NOT或!)运算符表示当给定的值为0时返回1;当给定的值为非0值时返回0;当给定的值为NULL时,返回NULL。
(2)逻辑与运算符
逻辑与(AND或&&)运算符是当给定的所有值均为非0值,并且都不为NULL时,返回1;当给定的一个值或者多个值为0时则返回0;否则返回NULL。
(3)逻辑或运算符
逻辑或(OR或||)运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;当两个值都为NULL时,返回NULL。
(4)逻辑异或运算符 逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。

9.排序数据
(1)排序规则
使用 ORDER BY 子句排序
ASC(ascend): 升序
DESC(descend):降序
ORDER BY 子句在SELECT语句的结尾。

(2)单列排序

SELECT last_name, job_id, department_id, hire_date 
FROM employees 
ORDER BY hire_date ;

默认为升序排序

(3)多列排序

SELECT last_name, department_id, salary 
FROM employees 
ORDER BY department_id, salary DESC;

可以使用不在SELECT列表中的列排序。
在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

10.分页
(1)分页原理
所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。

MySQL中使用 LIMIT 实现分页
格式:
LIMIT [位置偏移量,] 行数
第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。

分页显式公式:(当前页数-1)*每页条数,每页条数

SELECT * FROM table 
LIMIT(PageNo - 1)*PageSize,PageSize;

注意:LIMIT 子句必须放在整个SELECT语句的最后!

使用 LIMIT 的好处:
约束返回结果的数量可以减少数据表的网络传输量 ,也可以提升查询效率。如果我们知道返回结果只有1条,就可以使用LIMIT 1,告诉SELECT语句只需要返回一条记录即可。这样的好处就是 SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。


明天会更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TonyLiuys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值