MySQL 学习笔记(1)— 创建/连接/选择/显示数据库(表) 查询单列(多列/所有列)/查询返回特定的行数 各种排序(单列/多列/降序/组合排序) 过滤数据
本文是对之前学习 MySQL
的一个总结,使用思维导图的方式将涉及到的知识点罗列出来,一方面作为自己对于知识点的归纳,另一方面也便于日后查询。
在该篇文章中将对 MySQL
的基本使用、检索基本数据、数据排序和过滤数据部分做一小结,具体见图。
- 单行注释
– 注释
MySQL
中也可以使用#
单行注释 - 多行注释
/* 多行注释 */
1. 连接、创建、选择、显示数据库
数据库(Database
)由一组相关的对象组成,主要包括表、索引、视图、存储过程等。为了方便对象的管理和访问,数据库通常使用模式(Schema
)来组织这些对象;模式是一个逻辑单元,或者一个存储对象的容器。
一个数据库由多个模式组成,一个模式由许多对象组成;在不同模式中可以创建同名的对象。
MySQL
中的模式和数据库是相同的概念,一个数据库对应一个同名的模式。
删除数据库使用 DROP DATABASE <数据库名称>
;
1.1 管理模式
1.1.1 创建模式
创建了数据库之后,还需要创建模式才能够存储数据库对象。
创建模式 CREATE SCHEMA
命令用于创建一个新的模式:
-- SQL Server 以及 PostgreSQL 实现
CREATE SCHEMA hr[AUTHORIZATION user1];
以上语句创建一个名为 hr 的模式,可选的 AUTHORIZATION
表示为该模式指定一个拥有者 user1,拥有者是一个已经存在的数据库用户。
SQL Server
创建数据库时会自动创建一个名为 dbo 的模式;PostgreSQL
创建数据库时会自动创建一个名为 public 的模式。MySQL
中的模式等价于数据库,因此CREATE SCHEMA
等价于CREATE DATABASE
。Oracle
中的模式等价于用户,因此使用CREATE USER
命令创建用户时就相当于创建一个同名的模式:
CREATE USER hrIDENTIFIED BY xxx;
Oracle
也提供了CREATE SCHEMA
命令,但不是用于创建模式,而是用于在模式中创建表、视图以及执行授权操作。
1.1.1 删除模式
不需要的模式可以使用 DROP SCHEMA
命令删除:
-- SQL Server 以及 PostgreSQL 实现
DROP SCHEMA hr;
MySQL
中的模式等价于数据库,因此 DROP SCHEMA
等价于 DROP DATABASE
。
Oracle
中的模式等价于用户,因此使用 DROP USER
命令创建用户时就相当于创建一个同名的模式:
-- Oracle 实现
DROP USER hr;
如果模式中存在对象,则无法删除该模式;可以先删除其中的对象,再删除模式。某些数据库支持级联删除:
-- PostgreSQL 实现
DROP SCHEMA hr CASCADE;-- Oracle 实现
DROP USER hr CASCADE;
CASCADE
表示删除模式的同时,删除该模式中的所有对象。
2. 查询检索单列、多列、不重复数据及限制返回个数
SQL
使用 DISTINCT
关键字去除查询结果中的重复数据。注意两点:
DISTINCT
位于SELECT
之后而不是像其他过滤条件一样位于WHERE
之后;- 查询结果中重复的记录只会出现一次。
- 为列设置别名
SELECT product_id AS id, product_name AS name FROM product;
- 为表设置别名
SELECT p.product_id AS id, p.product_name AS name FROM product AS p;
3. 查询结果排序
ORDER BY
用于指定排序的字段;
ASC
表示升序排序(Ascending),DESC
表示降序排序(Descending),默认值为升序排序。
多列排序是指基于多个字段或表达式的排序,使用逗号进行分隔。多列排序的语法如下:
SELECT col1, col2, ...FROM tORDER BY col1 ASC, col2 DESC, ...;
首先基于第一个字段进行排序;对于第一个字段排序相同的数据,再基于第二个字段进行排序;依此类推。
- 对于含有空值
NULL
的排序,不同数据库有区别:
- MySQL 和 SQL Server 认为空值最小,升序时空值排在最前,降序时空值排在最后;
- Oracle 和 PostgreSQL 认为空值最大,升序时空值排在最后,降序时空值排在最前;同时支持使用 NULLS FIRST 和 NULLS LAST 指定空值的顺序。
解决空值的排序问题还有一个更通用的方法,就是利用 COALESCE
函数将空值转换为一个指定的值。例如,将奖金为空的数据转换为 0,这样升序排序时一定在最前:
SELECT emp_name, COALESCE(bonus, 0) AS bonusFROM employeeWHERE dept_id = 2ORDER BY COALESCE(bonus, 0);
4. 过滤数据(where 子句)
判断是否为 NULL
时,只能使用特定的谓词 IS NULL
或者 IS NOT NULL
- 选取
NULL
的记录使用is NULL
SELECT product_name, purchase_price FROM product WHERE purchase_price is NULL;
- 选取非
NULL
的记录使用is not NULL
SELECT product_name, purchase_price FROM product WHERE purchase_price is not NULL;
MySQL 学习笔记(1)— 创建/连接/选择/显示数据库(表) 查询单列(多列/所有列)/查询返回特定的行数 各种排序(单列/多列/降序/组合排序) 过滤数据相关推荐
- PHP + MySQL 学习笔记(三)--- 分页显示 MySQL 资料表,使用 PHP 程式做分页 page 画面输出,PHP\HTML\MySQL 的穿插使用
我在 "PHP + MySQL 学习笔记(一)- 延续前期 HTML + CSS 规划 插入 PHP 程式做画面输出" 这篇笔记里做了一个卜卦的 HTML 画面,也做了一个 MyS ...
- MySQL学习笔记8:权限管理、数据库备份与设计
1.前言 学习视频源自:[狂神说Java]MySQL最新教程通俗易懂 B站视频链接:https://www.bilibili.com/video/BV1NJ411J79W [狂神说Java]MySQL ...
- MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...
- MySql学习笔记(一):创建数据库,创建表,加载数据,数据检索
一.准备工作 1.1 安装mysql 一路next的操作这里就不做记录了. 1.2 配置mysql 安装完成后,将下面路径C:\Program Files\MySQL\MySQL Server 5.7 ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
- MySQL学习笔记(8) 创建用户和赋权,备份与恢复,日志
1. 背景 一般在开发中,我们需要新建一个账户,并赋予某个数据库的访问权限.本文说下操作方法. 2.创建用户和赋权 创建用户 CREATE USER 'zyf'@'%' identified by ' ...
- mysql 学习笔记 02创建表
表结构的创建 比如: create table userinfo (id int unsigned comment 'id号'name varchar(60) comment '用户名'passwor ...
- mysql 学习笔记--存储引擎、索引、sq优化
全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...
最新文章
- 题目1000:计算a+b
- 语义分割--Attention to Scale: Scale-aware Semantic Image Segmentation
- 【鸿蒙 HarmonyOS】UI 布局 ( 网格布局 TableLayout )
- OS_CORE.C(总结)
- 通过对代码进行调试讲解缓冲区溢出原理
- 系统思考与《第五项修炼》
- ADS_LPC2103开发板SPI 4位数码管测试试验
- 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)
- Android实现ListView异步加载图片总结
- Word 重新设置页码
- linux设置系统时间
- 中小企业SAAS产品选型之分析自己的需求
- 离散数学及其应用 第一章:集合论
- 智能汽车软件关键技术及应用趋势
- python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!
- win10系统Nessus下载插件错误
- C语言输出一个菱形图案,最优方案,不需要分上下两部分输出
- 3511. 倒水问题
- android app 退出功能,Android 完美退出 App (Exit)
- 一步步教你轻松学关联规则Apriori算法