MySQL学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

SQL 是一种标准 - 但是...
不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!

RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。

注意:SQL 对大小写不敏感!

SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 
SQL 的 DML 部分:
    SELECT - 从数据库表中获取数据
    UPDATE - 更新数据库表中的数据
    DELETE - 从数据库表中删除数据
    INSERT INTO - 向数据库表中插入数据

SQL 中最重要的 DDL 语句:
    CREATE DATABASE - 创建新数据库
    ALTER DATABASE - 修改数据库
    CREATE TABLE - 创建新表
    ALTER TABLE - 变更(改变)数据库表
    DROP TABLE - 删除表
    CREATE INDEX - 创建索引(搜索键)
    DROP INDEX - 删除索引

DISTINCT 关键词 DISTINCT 用于返回唯一不同的值

 
  1. SELECT DISTINCT Company FROM Orders 



引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。

结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

 
  1. SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William'AND LastName='Carter'



ORDER BY 语句默认按照升序对记录进行排序。

SQL 通配符

SQL 通配符必须与 LIKE 运算符一起使用。
%     替代一个或多个字符
_     仅替代一个字符
[charlist]     字符列中的任何单一字符
[^charlist] 或者 [!charlist]    不在字符列中的任何单一字符

从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人:

 
  1. SELECT * FROM Persons WHERE FirstName LIKE '_eorge'



从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

 
  1. SELECT * FROM Persons WHERE City LIKE '[ALN]%'



从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

 
  1. SELECT * FROM Persons WHERE City LIKE '[!ALN]%'



BETWEEN ... AND 和 NOT BETWEEN ... AND

 
  1. SELECT * FROM aa WHERE pid BETWEEN 2 AND 6;(mysql中包含2和6) 
  2. SELECT * FROM aa WHERE pid not BETWEEN 2 AND 6; 



SQL Alias(别名)
表的 SQL Alias 语法:

 
  1. SELECT a.pid FROM book AS a WHERE a.pid=6; 


列的 SQL Alias 语法:

 
  1. SELECT pid AS a,title AS b FROM book; 



SQL join (连接)用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
INNER JOIN(内连接)

 
  1. SELECT * FROM book INNER JOIN USER ON book.id=user.bookid; 


注释:INNER JOIN 与 JOIN 是相同的。

LEFT JOIN(左连接):
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

 
  1. SELECT * FROM book LEFT JOIN USER ON book.id=user.bookid; 



RIGHT JOIN(右连接):
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

 
  1. SELECT * FROM book RIGHT JOIN USER ON book.id=user.bookid; 



FULL JOIN (全连接):
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
注意:mysql不支持full join

UNION (联合)
UNION 操作符用于合并两个或多个 SELECT 语句的结果集(两表要联合查询的字段名必须相同,或者*)。

 
  1. SELECT NAME FROM book UNION SELECT NAME FROM user


注释:默认地,UNION 操作符选取不重复的值。如果允许重复的值,请使用 UNION ALL。

 
  1. SELECT NAME FROM book UNION ALL SELECT NAME FROM user



SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据【插入】另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
注意:mysql不支持此操作。可用下语句替换:

 
  1. CREATE TABLE book2 (SELECT * FROM book);//没有book2表情况下 
  2. INSERT INTO book2 (SELECT * FROM book);//已经有book2表情况下 


mysql表类型:MySQL 数据表七种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB、MERGE。


NULL 值是遗漏的未知数据。默认地,表的列可以存放 NULL 值。
NULL 用作未知的或不适用的值的占位符。注释:无法比较 NULL 和 0;它们是不等价的。
无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符。
1、等价于没有任何值、是未知数。
2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。
3、对空值做加、减、乘、除等运算操作,结果仍为空。
4、NULL的处理使用NVL函数。
5、比较时使用关键字用“is null”和“is not null”。
6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。
7、排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。


      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/965516,如需转载请自行联系原作者





相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
328 80
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
231 6
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
163 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
132 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
MySQL学习笔记
MySQL学习笔记
61 0
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
107 1
|
8月前
|
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
88 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
409 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
59 6
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。