首页 > 数据库 >《MySQL必知必会》知识汇总一

《MySQL必知必会》知识汇总一

时间:2022-12-03 23:44:44浏览次数:36  
标签:name 必知 price MySQL products 必会 prod id select

一、使用MYSQL

  • 展示所有数据库
show databases;
  • 选择数据库
use crashcourse;
  • 展示该数据库中所有的表
show tables;
  • 还可以展示表列的shema约束
show columns from customers;

快捷方式

describe customers;
  • 其他show语句通过使用help shop命令来帮助使用

二、检索数据

本章讲述select、limit的基本使用

  • 检索单个列
select prod_name from products;

注意:SQL语句和大小写

sql语句不区分大小写,但是一般将sql语句写为大写,列名、表名写为小写,这样易于阅读和调试

但注意,mysql4.1之前数据库名、表名、列名区分大小写,而mysql4.1后不再进行区分

  • 检索多个列
select prod_id,prod_name,prod_price from products;

注意:多个列名直接通过逗号隔开

  • 检索所有列
select * from products;

其中 * 为通配符,当不需要检索所有列时,不建议使用 * 取获取所有列,因为会降低性能

  • 检索不同的行
SELECT DISTINCT vend_id from products;

使用DISTINCT关键字,返回的数据中则是不同的值,帮助我们为数据去重。

注意:DISTINCT作用于所有列,而不仅是前置它的列

  • 限制结果
SELECT prod_name FROM products LIMIT 5;

使用limit显示返回的数据,可以作用于分页查询

其中limit的参数 5 表示返回的数据不多于 5 行

SELECT prod_name FROM products LIMIT 5,5;

其中参数 5,5 表示返回从第六行开始的5行数据

因此,带一个值的limit都是从第一行开始,带两个值的limit都是从指定行号开始

注意:行0

检索出来的第一行为行0而不是行1,因此limit 1,1表示检索出第二行的一条数据

当然,上述参数理解有些困难的话,还可以使用以下sql

SELECT prod_name FROM products LIMIT 5 OFFSET 5

表示从第六行(行5)开始的5行数据

  • 使用完全限定的表名
select products.prod_name from products;

这种完全限定的表示方式其实是用于多表联查时的重复列名做区分的

三、排序检索数据

本章讲述order by的基本用法

  • 排序数据
select prod_name from products order by prod_name;

表示对 prod_name列 以字母顺序排列

  • 按多个列排序
select prod_id,prod_price,prod_name 
from products
order by prod_price,pord_name;

表示先对prod_price进行排序,当prod_price具有相同的prod_name时,再对prod_name进行排序

  • 指定排序方向
select prod_id,prod_price,prod_name 
from products
order by prod_price desc;

order by的排序方式模式是以升序排列的,通过desc指定降序排列

select prod_id,prod_price,prod_name 
from products
order by prod_price desc,prod_name;

表示按照产品价格降序排列,当价格相同时对产品名字进行默认的升序排列

  • 排序的规则

A与a相同吗?a位于B之前还是位于Z之后?这并不其ASCII排列有关,而是与数据库的排序规则有关

在MySQL的默认行为中,其字典(dictionary)排序顺序认为 A 与 a 相同,当然也可以根据需要去更改

  • 通过排序返回最值
select prod_price 
from products
order by prod_price desc
limit 1

通过order by 与 limit 的组合返回最大值与最小值

四、过滤数据

本章讲述where的基本使用

  • 使用WHERE子句
select prod_name,prod_price
from products
where prod_price=2.50;

结果只返回产品价格为2.50的数据

注意:

我们更建议使用这种服务器层的过滤,而不是将所有数据都搜索出来给了应用层让java代码去实现过滤,这样会提高性能

where应该位于order by语句之前

  • where子句操作符

where的过滤条件不仅仅是 = ,还可以使用 <>、!=、<、<=、>、>=、BETWEEN ... AND...等等

select prod_name,prod_price
from products
where prod_price between 5 and 10;
  • 空值查询
select cust_id
from customers
where cust_email is null;

通过 is null 来将返回未填写email的所有用户的id

五、数据过滤

本章讲述where的高级用法和NOT、IN操作符

组合where子句

  • AND操作符
select prod_id,prod_price,prod_name 
from products
where vend_id = 1003 and prod_price <=10;
  • OR操作符
select prod_id,prod_price,prod_name 
from products
where vend_id = 1002 or vend_id = 1003;

注意:两个操作符的计算次序

需求:返回10美金以上且有1002或者1003制造的所有产品

select prod_id,prod_price,prod_name 
from products
where vend_id = 1002 or vend_id = 1003 and prod_price >=10;

这条sql并不能满足需求!会先进行and操作,再进行or操作

select prod_id,prod_price,prod_name 
from products
where (vend_id = 1002 or vend_id = 1003) and prod_price >=10;

将or操作加上括号即可

  • IN操作符
select prod_id,prod_price,prod_name 
from products
where vend_id in (1002,1003); 

结果相当于底下的or查询

select prod_id,prod_price,prod_name 
from products
where vend_id = 1002 or vend_id = 1003

注意:in操作符比or操作符执行更快

  • NOT操作符
select prod_id,prod_price,prod_name 
from products
where vend_id not in (1002,1003); 

同样的,not操作符也可以对 between、exists取反

标签:name,必知,price,MySQL,products,必会,prod,id,select
From: https://www.cnblogs.com/Changes404/p/16949045.html

相关文章

  • Java实现MySQL binlog日志监听
    使用案例引入maven依赖<dependency><groupId>com.github.shyiko</groupId><artifactId>mysql-binlog-connector-java</artifactId><version>0.21.0</version></......
  • mysql中的表不同类型怎么的长度
    一文搞懂字符和字节的含义(qq.com)一文搞懂MySQL的数据类型中长度的含义(qq.com)学习MYSQL要对字符类型跟长度有个明确的认识,我当初很容易搞错!这里重新学习一下......
  • mysql字符集utf8和utf8mb4的使用问题
    一、MySQL中length()、char_length()的区别和用法char_length(str)计算单位:字符不管汉字还是数字或者是字母都算是一个字符length(str)计算单位:字节utf8编码:一个汉字三个字......
  • 面试大厂 看这篇MySQL面试题就够了
    MySQL一直是面试中的热点问题,也难道了很多的面试者。其实MySQL没那么难,只是大家没有系统化、实战性的过去学习、总结。同时很多开发者在实际的开发过程中也很少去接触一些偏......
  • mysql和sql server的区别是什么?
    https://blog.csdn.net/qq_51179608/article/details/124322292实际上,每个web应用程序和数据库都扮演着重要的角色。由于当前web开发的动态特性,即使是最基本的应用程序也......
  • cpp mysql ubuntu
    1.Installlibmysqlcppconn-devsudoapt-getinstalllibmysqlcppconn-dev2.//MySQLHelper.h#include<iostream>#include<mysql_connection.h>#include<mysql......
  • mysql--约束
        外键约束:altertableempaddconstraintfk_emp_dept_idforeignkey(dept_id)referencesdept(id);添加主键altertableempdropforeignkeyfk_em......
  • [MySQL] 索引失效的情况
    1.查询条件中有or,即使有部分条件带索引也会失效2.like查询是以%开头3.如果列类型是字符串,那在查询条件中需要将数据用引号引用起来,否则不走索引4.索引列上参与计算......
  • MySQL 5.7 主从复制 GTID
    GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID主库#开启gtidlog-bin=mysql-binexpire_logs_days=5binlog_format=mixedserver-id=1gtid_mode=onenforce_g......
  • MySQL数据库之事务
    一、事务的概念事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么......