MySQL8.0入门:即学即用【第二章】SQL语法

注:该学习笔记是根据莫振杰老师编写的《从0到1:MySQL即学即用》所学习整理的笔记。

第二章 SQL语法

一、SQL是什么

1、SQL简介

SQL即结构化查询语言,它是数据库的标准语言。SQL非常简洁,它只有6个常用动词:insert(增)、delete(删)、select(查)、update(改)、create(创建)、grant(授权)。

SQL可以分为三大类:数据定义语言、数据操纵语言、数据控制语言。

1)、数据定义语言

数据定义语言:主要用于对数据表进行创建、删除、修改等操作。

语句说明
create table创建表
drop table删除表
alter table修改表
2)、数据操作语言

数据操纵语言:主要用于对数据进行增、删、查、改的操作。

语句说明
insert增加数据
delete删除数据
select查询数据
update更新数据
3)、数据控制语言

数据控制语言:主要用于对数据库和表的权限进行管理。

语句说明
grant赋予用户权限
revoke取消用户权限

2、关键字

关键字指的是SQL本身“已经在使用”的单词或词组,因此在给数据库、表、列等命名时不能使用这些单词或词组。

常见的关键字有:select、from、where、group by、order by、distinct、like、insert、delete、update、create、table、alter、drop、is not、inner join、left outer join、right outer join、procedure、function等。

3、语法规则

1)、不区分大小写

对于表名、列名、关键字等,SQL是不区分大小写的。约定俗成是要求关键字一律大写,但是会增加初学者的辨识难度,所以可以不强求。

2)、SQL语句应该以分号结尾

如果执行一条SQL语句,则它的结尾加不加英文半角分号(;)都是可以的。但是如果同时执行多条SQL语句,则每一条语句的后面都必须加上银文半角分号才行。

4、命名规则

命名规则主要是针对数据库、表、列的。对于数据库、表、列的命名,需要遵循以下两条规则:

  • 不能是SQL关键字
  • 只能使用英文字母、数字、下划线

二、数据类型

MySQL的数据类型主要有以下四大类:

  • 数值
  • 字符串
  • 日期时间
  • 二进制

Mysq是不存在布尔类型的,但是在实际开发过程中,我们可以使用tinyint(1)、tinyint(0)这种方式来表示,其中1表示True、0表示False。

1、数值

数值是有0~9、正号(+)、符号(-)、小数点(.)组成的。
数值可以分为三大类:整数、浮点数、定点数

1)、整数
类型说明取值范围
tinyint很小的整数-2^7 ~ 2^7-1(-128~127)
smallint小的整数-2^15 ~ 2^15-1(-32768~32767)
mediumint中等的整数-2^23 ~ 2^23-1
int(或integer)普通的整数-2^31 ~ 2^31-1
bigint大整数-2^63 ~ 2^63-1
2)、浮点数
类型说明有效位
float单精度7位
double双精度15位
3)、定点数
类型说明有效位
decimal(m,d)定点数取决于m和d

decimal(m,d)的m表示该数值最多包含的有效数字的个数,d表示有多少为小数。

2、字符串

字符串起始就是一串字符。在MySQL中,字符串都是使用英文半角单引号或双引号引起来的。常用的字符串类型有下列7种:

类型说明字节
char定长字符串0~255
varchar变长字符串0~65535
tinytext短文本0~255
text普通长度文本0~65535
mediumtext中等长度文本0~16777215
longtext长文本0~4294967295
enum枚举类型取决于成员个数(最多64个)

实际开发中,最常用的是char、varchar、text、enum这4种类型。

1)、char

固定长度字符串,也叫作定长字符串,它的长度是固定的,存储相同数据时占用的空间大,但是性能稍高。

  • 语法结构:
    • char(n)
  • 参数说明:
    • n:表示指定的长度,它是一个整数,取值范围为0~255。
2)、varchar

可变长度字符串,也叫作变长字符串,它的长度是可变的,存储相同数据时占用的空间小,但是性能稍低。与char不同的是,varchar的占用空间是由字符串的实际长度来决定的。

  • 语法结构:
    • varchar(n)
  • 参数说明:
    • n:表示指定的长度,取值范围为0~65535。
3)、text

text相当于varchar(65535),它本质上也是一个变长字符串。

4)、enum

实际开发中,有些变量只有几种可能得取值,比如人的性别:男、女。星期的取值:1、2、3、4、5、6、7。
在MySQL中,可以将某个字段定义为enum类型,然后限定该字段在某个范围内取值。
如果enum类型加上not null属性,则其默认值就是枚举列表的第一个元素。如果不加not null属性,则enum类型将允许插入null,而且null为默认值。

3、日期时间

日期时间主要用于表示“日期(年月日)”和”时间(时分秒))“。MySQL的日期时间类型有5种,如下:

类型格式说明举例
dateYYYY-MM-DD日期型2023-01-01
timeHH:MM:SS时间型08:05:30
datetimeYYYY-MM-DD HH:MM:SS日期时间型2023-01-01 08:05:30
yearYYYY年份型2023
timestampYYYYMMDD HHMMSS时间戳型20230101 080530

每个类型都有特定的格式以及取值范围,当指定不合法的值时,系统就会将“0”插入数据库中。

4、二进制

二进制类型适用于存储图像、有格式的文本(如Word、Excel等)、程序文件等数据。MySQL的二进制类型有5种。

类型说明字节
bit0~255
tinyblob二进制类型的短文本0~255
blob二进制类型的普通文本0~65535
mediumblob二进制类型的中文本0~16777215
longblob二进制的长文本0~4294967295

实际开发中,并不推荐在数据库中存储二进制数据,主要是因为二进制数据往往非常大,占用的存储空间过多,这对数据库的性能会有所影响。

三、注释

方式1,适合单行注释
-- 注释内容

方式2,MySQL独有
# 注释内容

方式3,通用的注释方式,可注释多行
/*注释内容*/

/*  
	注释内容
	注释内容
	注释内容
*/
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 8 Cookbook: Over 150 recipes for high-performance database querying and administration Design and administer enterprise-grade MySQL 8 solutions MySQL is one of the most popular and widely used relational databases in the World today. The recently released MySQL 8 version promises to be better and more efficient than ever before. This book contains everything you need to know to be the go-to person in your organization when it comes to MySQL. Starting with a quick installation and configuration of your MySQL instance, the b ook quickly jumps into the querying aspects of MySQL. It shows you the newest improvements in MySQL 8 and gives you hands-on experience in managing high-transaction and real-time datasets. If you’ve already worked with MySQL before and are looking to migrate your application to MySQL 8, this book will also show you how to do that. The book also contains recipes on efficient MySQL administration, with tips on effective user management, data recovery, security, database monitoring, performance tuning, troubleshooting, and more. With quick solutions to common and not-so-common problems you might encounter while working with MySQL 8, the book contains practical tips and tricks to give you the edge over others in designing, developing, and administering your database effectively. What You Will Learn Install and configure your MySQL 8 instance without any hassle Get to grips with new features of MySQL 8 like CTE, Window functions and many more Perform backup tasks, recover data and set up various replication topologies for your database Maximize performance by using new features of MySQL 8 like descending indexes, controlling query optimizer and resource groups Learn how to use general table space to suit the SaaS or multi-tenant applications Analyze slow queries using performance schema, sys schema and third party tools Manage and monitor your MySQL instance and implement efficient
├─新版MySQL DBA 课件ppt │ 第一课数据库介绍篇.pdf │ 第七课MySQL数据库设计.pdf │ 第三十一课percona-toolkits 的实战及自动化.pdf │ 第三课MySQL授权认证.pdf │ 第九课MySQL字符集.pdf │ 第二十一课MySQL常见错误-converted.pdf │ 第二十课MySQL索引和调优.pdf │ 第二课MySQL入门介绍.pdf │ 第五课MySQL常用函数介绍.pdf │ 第八课InnoDB内核.pdf │ 第六课SQL高级应用.pdf │ 第十一课MySQL表分区8.0.pdf │ 第十七课Elasticsearch分享-张亚V4.pdf │ 第十三课MySQL5.7高可用架构之Mycat.pdf │ 第十三课MySQL8.0高可用架构之Mycat.pdf │ 第十九课MySQL备份和恢复.pdf │ 第十二课MySQL5.7复制.pdf │ 第十二课MySQL8.0复制.pdf │ 第十五课MySQL8.0高可用架构之MHA和MMM.pdf │ 第十五课MySQL高可用架构之MHA和MMM.pdf │ 第十八课mongo分享-张亚V1.pdf │ 第十六课Redis分享-张亚V2.pdf │ 第十四课MySQL8.0高可用架构之Atlas.pdf │ 第十课MySQL8.0锁机制和事务.pdf │ 第十课MySQL锁机制和事务.pdf │ 第四课SQL基础语法.pdf │ ├─新版MySQL DBA综合实战班 第01天 │ 0_MySQL高级DBA公开课视频.avi │ 1_数据库通用知识介绍.avi │ 2_MySQL8常规安装.avi │ 3_MySQL8非常规安装.avi │ 4_MySQL8常见客户端和启动相关参数.avi │ ├─新版MySQL DBA综合实战班 第02天 │ 10_MySQL Update课堂练习.mp4 │ 1_课后作业讲解.mp4 │ 2_MySQL权限系统介绍.mp4 │ 3_MySQL授权用户和权限回收.mp4 │ 4_MySQL8新的密码认证方式和客户端链接.mp4 │ 5_MySQL Create命令.mp4 │ 6_MySQL CreateTable命令.mp4 │ 7_课堂练习1.mp4 │ 8_MySQL Insert命令.mp4 │ 9_MySQL Insert课堂练习和Update命令.mp4 │ ├─新版MySQL DBA综合实战班 第03天 │ 1_课堂作业讲解.mp4 │ 2_MySQL Delete语法讲解.mp4 │ 3_MySQL Select语法讲解.mp4 │ 4_MySQL Select多表连接讲解.mp4 │ 5_MySQL其他常用命令讲解.mp4 │ 6_MySQL操作符和常用函数.mp4 │ 7_MySQL常用字符串和日期函数.mp4 │ delete.txt │ MySQL高级DBA大作业1.docx │ 作业.docx │ ├─新版MySQL DBA综合实战班 第04天 │ 1_课后作业讲解.mp4 │ 2_SQL课堂强化练习1.mp4 │ 3_SQL课堂强化练习2.mp4 │ 4_存储过程函数概念和创建讲解.mp4 │ 5_存储过程函数流程控制语句讲解.mp4 │ ├─新版MySQL DBA综合实战班 第05天 │ 1_课后作业讲解.mp4 │ 2_MySQL游标讲解.mp4 │ 3_MySQL触发器.mp4 │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战班 第06天 │ 1_课堂作业讲解.mp4 │ 2_InnoDB内核之事务和多版本控制.mp4 │ 3_InnoDB底层文件存储和体系结构.mp4 │ 4_InnoDB体系结构.mp4 │ 5_InnoDB存储引擎配置.mp4 │ 6_InnoDB统计资料和其他配置.mp4 │ 7_InnoDB锁原理和锁等待问题定位.mp4 │ ├─新版MySQL DBA综合实战班 第07天 │ 1_课后作业讲解.mp4 │ 2_MySQL锁机制原理讲解.mp4 │ 3_MySQL锁相关参数设置.mp4 │ 4_InnoDB事务隔离级别详解.mp4 │ 5_InnoDB死锁发生原理和规避.mp4 │ 6_MySQL字符集和排序规则.mp4 │ 作业.docx │ 锁等待分析.txt │ ├─新版MySQL DBA综合实战班 第08天 │ 1_课堂作业讲解.mp4 │ 2_MySQL乱码原理讲解.mp4 │ 3_MySQL排序规则权重.mp4 │ 4_MySQL字符集空间消耗.mp4 │ 5_MySQL表分区介绍和优势.mp4 │ 6_MySQL表分区类型.mp4 │ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制原理和搭建.mp4 │ 4_MySQL复制搭建part2.mp4 │ 5_MySQL复制相关参数.mp4 │ 6_MySQL复制状态和延迟复制.mp4 │ 7_MySQL半同步复制.mp4 │ 作业.docx │ ├─新版MySQL DBA综合实战班 第10天 │ │ 1_课后作业讲解.mp4 │ │ 2_MySQL传统复制手动切换和GTID复制原理及切换.mp4 │ │ 3_Mycat原理和schema配置讲解.mp4 │ │ 4_Mycat schema配置讲解.mp4 │ │ 5_Mycat企业高可用配置.mp4 │ │ 作业.docx │ │ │ └─MySQL DBA 课堂命令-复制和Mycat │ mysql-master.log │ mysql-master2.log │ mysql-mycat.log │ mysql-slave1.log │ mysql-slave2.log │ ├─新版MySQL DBA综合实战班 第11天 │ │ 1_课后作业讲解.mp4 │ │ 2_MyCat分库分表原理和常见方法.mp4 │ │ 3_MyCat管理操作.mp4 │ │ 4_Atlas配置和读写分离实现.mp4 │ │ 5_Atlas分库分表实现.mp4 │ │ 6_MHA搭建和故障切换原理剖析.mp4 │ │ │ └─MySQL DBA_课堂命令-Mycat和Atlas和MHA │ mysql-master.log │ mysql-mycat.log │ mysql-slave1.log │ mysql-slave2.log │ ├─新版MySQL DBA综合实战班 第12天 │ 01ES介绍.docx │ 01es介绍.mp4 │ 01redis介绍.mp4 │ 02es增删改查操作命令.mp4 │ 02ES的功能适用场景以及特点介绍.docx │ 02redis应用场景.mp4 │ 03ES的核心概念.docx │ 03redis单实例安装.mp4 │ 03集群分片副本操作.mp4 │ 04es集群运维.mp4 │ 04redis数据类型操作.mp4 │ 04安装search-guard.docx │ 05redis主从和哨兵操作.mp4 │ 06reids集群创建收缩扩容.mp4 │ 07redis运维工具.mp4 │ Elasticsearch分享V2.pdf │ Elasticsearch分享V4.pdf │ ES分享试验环境.docx │ ES操作.txt │ Redis分享-张亚V2.pdf │ 日志收集.txt │ 监控和分词.txt │ 防脑裂配置.txt │ ├─新版MySQL DBA综合实战班 第13天-mongo │ 01mongo介绍.mp4 │ 02mongo安装配置优化.mp4 │ 03mongo增删改查.mp4 │ 04授权认证和索引.mp4 │ 05mongo常用工具介绍.mp4 │ 06mongo副本集升级备份恢复.mp4 │ 07ELK模板收集mongo日志.mp4 │ mongodb.jpg │ Mongodb分享-贾海娇.pdf │ mongo数据库分享-张亚V1.pdf │ monogdb.conf │ ├─新版MySQL DBA综合实战班 第14天 │ │ 1_MHA手工切换和GTID支持.mp4 │ │ 2_MMM高可用架构.mp4 │ │ 3_MySQL备份概念.mp4 │ │ 4_Mysqldump备份原理.mp4 │ │ 5_Mysqldump基于表备份.mp4 │ │ 6_MySQL全量恢复和日志增量恢复.mp4 │ │ 7_xtrabackup全量和增量备份恢复.mp4 │ │ 作业及答案.docx │ │ │ └─MySQL DBA堂命令-mha和备份恢复 │ mysql-master_05-18_10-03-09.log │ mysql-master_05-18_14-02-01.log │ mysql-mycat_05-18_10-03-02.log │ mysql-slave1_05-18_10-03-14.log │ mysql-slave2_05-18_10-03-20.log │ ├─新版MySQL DBA综合实战班 第15天 │ │ 1_课后作业讲解.mp4 │ │ 2_MySQL索引原理介绍.mp4 │ │ 3_MySQL索引类型介绍.mp4 │ │ 4_MySQL索引底层结构和执行计划.mp4 │ │ 5_MySQL索引优化原则.mp4 │ │ 6_MySQL运维常见错误part1.mp4 │ │ 7_MySQL运维常见错误part2.mp4 │ │ ERROR1040_1917970.1.pdf │ │ ERROR1062_1593526.1.pdf │ │ ERROR1205_1911871.1.pdf │ │ ERROR2002_1023190.1.pdf │ │ How_to_Reset_the_RootPassword.pdf │ │ How_to_Reset_the_RootPassword5.7.pdf │ │ PacketTooLarge.pdf │ │ │ └─MySQL DBA课堂命令-索引调优和运维常见错误 │ mysql-master-05-25_11-10-39.log

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MeJonKing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值