[牛客数据库SQL实战] 准备篇

资源准备

MySQL提供的示例数据库

  • Employees

资源介绍页面: https://dev.mysql.com/doc/employee/en/

员工样本数据库提供了分布在六个独立表中的大量数据库(约160Mb)的组合,总共包含400万条记录。
它支持多种存储引擎类型(InnoDB,MyISAM,Maria...)。

数据库结构显示
employees-schema

  • Sakila

资源介绍页面:https://dev.mysql.com/doc/sakila/en/

MySQL官方提供的一个模拟DVD租赁信息管理的数据库

数据库结构显示
sakila-schema

工具准备

数据库管理工具和 SQL 客户端 DBeaver
下载页面: https://dbeaver.io/download/

技术准备

常用的SQL语法

显示当前数据库列表
> show databases;

显示当前表格列表
> show tables;

切换当前活动数据库
> use [database_name];

显示表格详情/描述
> desc [table_name];

查看表格内容(*全部/某些属性)
> select [*/feature_name] from [table_name];

条件查询 where
> select [features_name] from [table_name] where [features_name] = ?;

排序 使用order by子句   
desc 降序 asc 升序
> select [features_name] from [table_name] order by [features_names] [desc/asc];

限制输出 
LIMIT m,n : 表示从第m+1条开始,取n条数据;
LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。
> select [features_name] from [table_name] limit m, n;

去重查询 distinct
> select distinct [features_name] from [table_name];

分组条件查询  group by ... having
> select [feature_name] from [table_name] group by [feature_name] having [expr];

> WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。   
> HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。

两表合并 join - left join - right join
> select [*/feature_names] from [table_name_A] as a left join [table_name_B] as b on a.[feature_name]=b.[feature_name];

资源查询

MySQL 菜鸟教程: https://www.runoob.com/mysql/mysql-tutorial.html

个人运行环境

操作系统:Linux Deepin 15.9.2桌面版
MySQL版本:5.7.21-1 (Debian)
DBeaver版本:6.1.2 社区版

实战地址

牛客网 数据库SQL实战
https://www.nowcoder.com/ta/sql?page=0

原文地址:https://www.cnblogs.com/slowbirdoflsh/p/11199539.html