MySQL 数据库 - SQL

SQL通用语法

SQL通用语法

  1. SQL语句可以单行或者多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
    注意:空格和缩进的个数是没有限制的,可以是 “一个” 也可以是 “多个”。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  4. 注释:
    单行注释:-- 注释内容 或者 # 注释内容(MySQL特有)
    多行注释:/* 注释内容 */

SQL分类

SQL分类

  • DDL
    数据定义语句,用来定义数据库对象(数据库字段
  • DML
    数据操作语言,用来对数据库表中的数据进行 增删改
  • DQL
    数据查询语言,用来查询数据库表中的记录
  • DCL
    数据控制语言,用来创建数据库用户,控制数据库的访问权限

DDL

DDL

  • 查询
    查询所有数据库
    SHOW DATABASES;
    

在这里插入图片描述

  • 查询当前数据库

    SELECT DATABASE();
    
  • 创建

    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
    

在这里插入图片描述

[IF NOT EXISTS] 如果不存在,则执行

在这里插入图片描述

[DEFAULT CHARSET 字符集] 给数据库添加字符集 

在这里插入图片描述

  • 删除
    DROP DATABASE [IF EXISTS] 数据库名;
    

在这里插入图片描述

  • 使用
    USE 数据库名;
    

在这里插入图片描述

DDL - 表操作 - 查询

DDL - 表操作 - 查询

  • 查询当前数据库所有表
show tables;

在这里插入图片描述

  • 查询表结构
desc 表名;

在这里插入图片描述

  • 查询指定表的建表语句
show create table 表名;

在这里插入图片描述

DDL-表操作-创建

DDL - 表操作 - 创建

create table 表名{字段1 字段1类型 [comment 字段1注释],字段2 字段2类型 [comment 字段2注释],字段3 字段3类型 [comment 字段3注释],字段n 字段n类型 [comment 字段n注释]
}[comment 表注释];注意:[]为可选参数,最后一个字段后面没有 “逗号”

在这里插入图片描述

DDL-表操作-数据类型

DDL - 表操作 - 数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型。

  • 数值类型

类型:tinyint		大小:1 byte		有符号(signed)范围 :(-128,127)					无符号(unsigned)范围:(0,255)				描述:小整数值
类型:smallint		大小:2 byte		有符号(signed)范围 :(-3276832767)					无符号(unsigned)范围:(065535)				描述:大整数值
类型:mediumint  	大小:3 byte		有符号(signed)范围 :(-83886088388607)				无符号(unsigned)范围:(016777215)			描述:大整数值
类型:intinteger	大小:4 byte		有符号(signed)范围 :(-21474836482147483647)		无符号(unsigned)范围:(04294967295)		描述:大整数值
类型:bigint			大小:8 byte		有符号(signed)范围 :(-2^632^63-1)					无符号(unsigned)范围:(02^64-1)			描述:极大整数值
类型:float			大小:4 byte		有符号(signed)范围 :(-3.402823466 E+383.402823466351 E+38)					无符号(unsigned)范围:0(1.175494351 E-383.402823466 E+38)						描述:单精度浮点数值
类型:double			大小:8 byte		有符号(signed)范围 :(-1.7976931348623157 E+3081.7976931348623157 E+308)		无符号(unsigned)范围:0(2.2250738585072014 E-3081.7976931348623157 E+308)		描述:双精度浮点数值
类型:decimal		有符号(signed)范围 :依赖于M(精度)和D(标度)的值							无符号(unsigned)范围:依赖于M(精度)和D(标度)的值			描述:小数值(精确定点数)
  • 字符串类型

类型:char		大小:0-255 bytes 			描述:定长字符串
类型:varchar	大小:0-65535 bytes 			描述:变长字符串
类型:tinyblob	大小:0-255 bytes			描述:不超过255个字符的二进制数据
类型:tinytext	大小:0-255 bytes			描述:短文本字符串
类型:blob		大小:0-65 535 bytes 		描述:二进制形式的长文本数据
类型:text		大小:0-65 535 bytes			描述:长文本数据
类型:mediumblob 大小:0-16 777 215 bytes 	描述:二进制形式的中等长度文本数据
类型:mediumtext 大小:0-16 777 215 bytes		描述:中等长度文本数据
类型:longblob	大小:0-4 294 967 295 bytes	描述:二进制形式的极大文本数据
类型:longtext	大小:0-4 294 967 295 bytes	描述:极大文本数据
  • 日期类型

类型:date		大小:3		范围:1000-01-019999-12-31			格式:YYYY-MM-DD			描述:日期值
类型:time		大小:3		范围:'-838:59:59838:59:59			格式:HH:MM:SS			描述:时间值或持续时间
类型:year		大小:1		范围:19012155						格式:YYYY				描述:年份值
类型:dateTime	大小:8		范围:1000-01-01 00:00:009999-12-31 23:59:59				格式:YYYY-MM-DD HH:MM:SS			描述:混合日期和时间值
类型:timestamp	大小:4		范围:1970-01-01 00:00:012038-01-19 03:14:07				格式:YYYY-MM-DD HH:MM:SS			描述:混合日期和时间值,时间戳

案例:

create table emp(id			int 			 comment '编号',		// 纯数字workno		varchar(10)		 comment '员工工号',	// 字符串类型,长度不超过10位name		varchar(10) 	 comment '姓名',		// 字符串类型,长度不超过10位gender		char(1)			 comment '性别',		// 男/女,存储一个汉字age			tinyint unsigned comment '年龄',		// 正常年龄,不可能存储负数idcard  	char(18)		 comment '身份证号',	// 18位entrydate	date			 comment '入职时间'	// 取年月日即可
) comment '员工表';

在这里插入图片描述

DDL-表操作-修改

DDL - 表操作 - 修改(字段)

  • 添加字段
alter table 表名 add 字段名 字段类型(长度) [comment 注释] [约束];

案例:
为emp表增加一个新的字段 “昵称” 为 nickname,类型为 varchar(20)
在这里插入图片描述

  • 修改数据类型
alter table 表名 modify 字段名 新的字段类型(长度);
  • 修改字段名和字段类型
alter table 表名 change 旧字段名 新的字段名 字段类型(长度) [comment 注释] [约束];

案例:
将 emp 表中的 nickname 修改为 username ,类型为 varchar(30)
在这里插入图片描述

  • 删除字段
alter table 表名 drop 字段名;

案例:
删除 emp 表中的 username 字段;
在这里插入图片描述

DDL-表操作-修改(表)

DDL - 表操作 - 修改(表)

  • 修改表名
alter table 表名 rename to 新的表名;

案例:
将 emp 表的表名修改为 employee

在这里插入图片描述

  • 删除表
drop table [if exists] 表名;

在这里插入图片描述

  • 删除指定表,并重新创建该表
truncate table 表名;

在这里插入图片描述

注意:在删除表时,表中的全部数据也会被删除。

DML

DML - 添加数据

  • 给指定的字段添加数据
insert into 表名 (字段名1,字段名2,...) values (1,2,...);

在这里插入图片描述

  • 给全部字段添加数据
insert into 表名 values (1,2,...);

在这里插入图片描述

  • 批量添加数据
insert into 表名 (字段名1,字段名2,...) values (1,2,...),(1,2,...);
insert into 表名 values (1,2,...),(1,2,...);

在这里插入图片描述

注意:

  • 插入数据时,指定字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

DML-修改数据

DML - 修改数据

update 表名 set 字段名1=1,字段名2=2,....[where 条件];

在这里插入图片描述
在这里插入图片描述

DML-删除数据

DML - 删除数据

delete from 表名 [where 条件];

在这里插入图片描述

注意:

  • delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的数据。
  • delete 语句不能删除某一个字段的值(可以使用update)。

DQL - 数据查询语言,用来查询数据库中表的记录

DQL - 数据查询语言,用来查询数据库中表的记录

  • DQL-语法
select字段列表
from表名列表
where条件列表
group by分组字段列表
having分组后条件列表
order by排序字段列表
limit分页参数

在这里插入图片描述

DQL - 基本查询

  1. 查询多个字段
select 字段1,字段2,字段3 from 表名;select * from 表名;

在这里插入图片描述
在这里插入图片描述

  1. 设置别名
select 字段1 [as 别名1], 字段2 [as 别名2] ... from 表名;

在这里插入图片描述

  1. 去除重复记录
select distinct 字段列表 from 表名;

在这里插入图片描述

DQL - 条件查询

  1. 语法
select 字段列表 from 表名 where 条件列表;
  1. 条件
    在这里插入图片描述

DQL - 聚合函数

  1. 介绍
    将一列数据作为整体,进行纵向的计算

  2. 常见的聚合函数
    在这里插入图片描述

  3. 语法

select 聚合函数(字段列表)from 表名;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:所有的 null 值是不参与聚合函数的运算的。

DQL - 分组查询

  1. 语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. where 与 having 区别
  • 执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而 having 是分组之后对结果进行过滤。
  • 判断条件不同:where 不能使用聚合函数进行判断,而 having 可以。

注意:

  • 执行顺序:where > 聚合函数 > having。
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有意义。

DQL - 排序查询

  1. 语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 排序方式
  • ASC :升序(默认)
  • DESC:降序

DQL - 分页查询

  1. 语法
select 字段列表 from 表名 limit 起始索引,查询记录数;

在这里插入图片描述

注意:

  • 起始索引从 0 开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是 limit 。
  • 如果查询的是第一页数据,其实索引可以省略,直接简写为 limit 10 。

语句练习:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

DQL - 执行顺序

在这里插入图片描述

DCL - 用来管理数据库用户,控制数据库的访问权限

DCL - 管理用户

  1. 查询用户
use mysql;
select * from user;
  1. 创建用户
create user ‘用户名’@‘主机名’ identified by '密码';

在这里插入图片描述

  1. 修改用户密码
alter user ‘用户名’@‘主机名’ identified with mysql_native_password by '新密码';

在这里插入图片描述

  1. 删除用户
drop user ‘用户名’@‘主机名’;

在这里插入图片描述
注意:

  • 主机名可以使用 % 通配。
  • 这类SQL开发人员操作的比较少,主要是 DBA(数据库管理员) 使用。

DCL - 权限管控

MySQL中定义了很多权限,但是常用的就一下集中:
在这里插入图片描述

  1. 查询权限
show grants for '用户名'@'主机名';

在这里插入图片描述

  1. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

在这里插入图片描述

  1. 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

在这里插入图片描述
注意:

  • 多个权限之间,使用逗号隔开。
  • 授权时,数据库名和表名可以使用 * 进行通配,代表所有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3246143.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【转型Web3开发第二课】Dapp开发入门基础 | 02 | MetaMask配置网络

本文首发于公众号:Keegan小钢 前言 完成了《转型 Web3 开发第一课》之后,得到了不少读者的认可,很多都在问什么时候开始下一课,近期终于抽出了时间开始搞起这第二课。 这第二课的主题为「Dapp开发入门基础」,即想要转…

【Linux】Ubuntu部署K8S集群-图文并茂(超详细)

Ubuntu部署K8S集群 1. 模版机系统环境准备1.1 安装Ubuntu1.2 设置静态IP地址 2. 主机准备2.1 使用模板机创建主机2.2 主机配置2.2.1 修改静态IP2.2.2 修改主机名2.2.3 主机名-IP地址解析2.2.4 时间同步2.2.5 内核转发、网桥过滤配置2.2.6 安装ipset和ipvsadm2.2.7 关闭SWAP分区…

Android调用FFmpeg解码MP3文件并使用AudioTrack播放操作详解

文章目录 总体流程Android读取MP3文件调用FFmpeg进行MP3文件解码AudioTrack播放PCM原理工作原理1. 缓冲区和流模式2. 缓冲区管理3. 音频渲染流程4. 缓冲区大小和延迟5. 线程和同步 使用示例 使用JNI调用AudioTrack播放PCM1.通过JNI创建AudioTrack对象2.调用AudioTrack的write方…

QT实现滑动页面组件,多页面动态切换

这篇文章主要介绍了Qt实现界面滑动切换效果,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。 一、简述 一个基于Qt的动态滑动页面组件。 二、 设计思路 1、自定义StackWidget类,继承自QWidget,实现一个堆叠…

乐尚代驾项目概述

前言 2024年7月17日,最近终于在低效率的情况下把java及其生态的知识点背的差不多了,投了两个礼拜的简历,就一个面试,总结了几点原因。 市场环境不好 要知道,前两年找工作,都不需要投简历,把简历…

《绝区零》公测“翻车”

“《绝区零》重塑米哈游荣光”到“《绝区零》翻车米哈游没招了”,这样极与极的舆论反转,只用了不到一天的时间。 7月,米哈游自研游戏《绝区零》上线公测。虽然品类略显小众,主打动作手游,但系出名门的优势还是让《绝区零》在公测前预下载阶段大放异彩——直接登上了百余国…

Ubuntu/Kali简洁高效安装最新版的docker-compose

基于docker已安装的情况下,通过执行一下代码完成docker-compose的安装 sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep \"tag_name\": | sed …

区块链资料

Quantstamp - Public Security Assessments smart-contract-sanctuary-bsc/contracts/mainnet at master tintinweb/smart-contract-sanctuary-bsc GitHub https://github.com/slowmist/Cryptocurrency-Security-Audit-Guide/blob/main/README_CN.md sFuzz: 高效自适应的智…

有赞群团团开团大团长跑路,用户资金保护并没有保障到位!

近日群团团的开团大团长“肥肥购物”已经跑路了,留下了一堆烂账。有的团长5月21号买的购物卡到现在还没有进行成功交付,据帮卖团长反馈该笔订单一直没有确认收货且处于未完结的状态,但是这笔订单货款钱却迟迟无法进行成功退款。 下方是帮卖团…

Windows搭建RTMP视频流服务器

参考了一篇文章,见文末。 博客中nginx下载地址失效,附上一个有效的地址: Index of /download/ 另外,在搭建过程中,遇到的问题总结如下: 1 两个压缩包下载解压并重命名后,需要 将nginx-rtmp…

若依微服务集成手机短信验证码登陆

为了响应公司项目的特定需求,增强用户体验与安全性,集成手机短信验证码登录功能至基于若依微服务框架开发的应用中,故创作此篇为未来类似项目提供了可借鉴的实施范例。 文章目录 1.设计思路2.发送手机验证码接口3.发送手机验证码接口4.post请…

云动态摘要 2024-07-16

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

开放式耳机性价比推荐!免费总结功课给你参考!

在选择适合自己的耳机时,确实需要考虑多方面的因素,包括音质、舒适度、佩戴方式、续航能力、防水性能等。开放式耳机因其独特的设计,不仅能够提供良好的音质体验,还能让你在享受音乐的同时,保持对周围环境的感知&#…

AI数字人直播源码解析:灰豚私有化部署背后的技术分析

随着AI数字人技术的应用潜力不断显现,与AI数字人相关的多个项目逐渐成为创业者们的重点关注对象,作为当前AI数字人典型应用场景之一的数字人直播意向人数更是屡创新高,AI数字人直播源码部署的热度也因此不断飙升,与各大数字人源码…

python-区间内的真素数(赛氪OJ)

[题目描述] 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。 例如,11,13 均为真素数,因为 11 的反序…

Python入门------pycharm加载虚拟环境

pycharm虚拟环境配置: 在按照前面的办法,配置好虚拟环境后,如果我们需要到虚拟环境开发,就需要给编译器配置虚拟环境 1.打开编译器,点击右下角的interpreter选项 2. 点击ADD Interpreter,添加虚拟环境 3. 因为我们使用的是原始…

Hadoop安装报错

报错:ERROR 2023-03-09 21:33:00,178 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. 解决方案: 在安装失败得客户端执行 编辑 /etc/python/cert-verification.cfg 配置文件,将 [https] 节的 verify 项 设为禁用…

linux上Mysql的安装

1.先检查有没有安装mariadb,有的话将其卸载,不然会和mysql冲突 [rootweb1 ~]# yum list | grep mariadb 2.卸载mariadb,按Y确认 [rootweb1 ~]# yum remove mariadb-libs.x86_64 3.下载mysql [rootweb1 ~]# wget https://downloads.mysql.com/archi…

大模型训练数据白皮书

大模型训练数据白皮书 关键要点一、合成数据解决方案探讨二、ChatGPT的案例分析三、大模型训练所需数据及特点四、多模态、知识性和安全性五、中文大模型发展受限于中式价值观类语料短缺六、高质量数据的重要性及其对模型的影响七、三重不确定性和有效搭配八、从质量、规模、多…

Self-Attention 自注意力机制(二)——实例过程说明

一、自注意力机制核心过程 自注意力机制(Self-Attention Mechanism),也称为内部注意力机制,是一种在序列模型中用于捕捉序列内部不同位置之间依赖关系的技术。这种机制允许模型在处理序列时,对序列中的每个元素分配不…