MySQL(基础篇)——SQL

一.SQL分类

 二.DDL(数据定义语言)

1.DDL——数据库操作

① 查询

        查询所有数据库          SHOW  DATABASES

        查询当前所处数据库    SELECT  DATABASE()

② 创建

        CREATE  DATABASE  [IF NOT EXISTS] 数据库名(通常以db结尾) [DEFAULT  CHARSET 字符集] [COLLATE 排序规则]

③ 删除

        DROP DATABASE [IF EXISTS] 数据库名

④ 使用

        USE 数据库名 

2.DDL——表操作——查询

① 查询当前数据库所有表

        SHOW TABLES  

前提:通过USE指令,使用该数据库 

② 查询表结构

DESC  表名 

③ 查询指定表的建表语句

 SHOW CREATE TABLE  表名

3.DDL——表操作——创建 

CREATE TABLE  表名(

        列名1  数据类型  [约束]  [默认值]  [注释] ...,

        列名2  数据类型  [约束]  [默认值]  [注释] ...,

        列名3  数据类型  [约束]  [默认值]  [注释] ...

        ...

) [COMMENT  表注释]

注:[...]为可选参数,最后一个字段后面没有逗号。 

4.DDL——表操作——数据类型

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

(1) 数值类型

① 整数

② 浮点

FLOAT、DOUBLE、DECIMAL(依赖于M(精度)和D(标度)的值)

 DECIMAL(M,D)

M:精度,数据的总长度

D:标度,小数点后面的长度

(2) 字符串类型

CHAR(n)   长度为n的定长字符串,最大长度为255个字符

VARCHAR(n)  最大长度为n的可变字符串

(3) 日期时间类型

5.DDL——表操作——修改 

(1) 添加字段

 ALTER  TABLE  表名  ADD  字段名  数据类型  [约束]  [默认值]  [注释]

(2) 修改数据类型

  ALTER  TABLE  表名  MODIFY  字段名  新数据类型

(3) 修改字段名和数据类型

 ALTER  TABLE  表名  CHANGE 旧字段名  新字段名  数据类型  [约束]  [注释]

(4) 删除字段

  ALTER  TABLE  表名  DROP  字段名

(5) 修改表名

  ALTER  TABLE  表名  RENAME  TO  新字段名

6.DDL——表操作——删除 

 ① 删除表

DROP  TABLE  [IF  EXISTS]  表名

② 删除指定表,并重新创建该表

TRUNCATE  TABLE  表名 

三.DML(数据操作语言) 

        用来对数据库中的数据记录进行增删改操作。

  • 添加数据(insert)
  • 修改数据(updata)
  • 删除数据(delete)
1.DML——添加数据

(1)给指定字段添加数据

INSERT  INTO  表名(字段1,字段2,...)  VALUES  (值1,值2,...) 

(2)给全部字段添加数据

 INSERT  INTO  表名  VALUES  (值1,值2,...) 

(3) 批量添加数据

INSERT  INTO  表名  (字段名1,字段名2,...)  VALUES  (值1,值2,...)(值1,值2,...) 

 INSERT  INTO  表名  VALUES  (值1,值2,...)(值1,值2,...) 

注:

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

UPDATE  表名  SET  字段名1=值1,字段名2=值2,...[WHERE  条件] 

注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

eg: update  student  set  name  =  'gty'  where  id = 2 

3.DML——删除数据 

DELETE  FROM  表名  [WHERE  条件] 

注:

  •  DELETE的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
  • DELETE语句不能删除某一个字段的值(可以使用UPDATE(将该字段的值置为NULL))

补充:

TRUNCATE  TABLE  表名      -------  清空整张表 

四.DQL(数据查询语言) 

        用来查询数据库中的数据。

查询关键字:SELECT 

  • DQL——语法 

  • 基本查询
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(GROUP  BY)
  • 排序查询(ORDER  BY)
  • 分页查询(LIMIT) 
1.DQL——基本查询

(1) 查询多个字段

SELECT  字段1,字段2,字段3 ...  FROM  表名

 SELECT   FROM  表名

(2) 设置别名(增加可读性,不是必须的,设置别名时AS可以省略)

 SELECT  字段1  AS  别名1,字段2  AS  别名2 ...  FROM  表名

(3) 去除重复记录

SELECT  DISTINCT  字段列表  FROM  表名 

eg : select  distinct  subject  from  student 

2.DQL——条件查询

 (1) 语法

SELECT  字段列表  FROM  表名  WHERE  条件列表

(2)  条件

eg: select  *  from  student  where  name  like  '_ _'               查询名字为两个字的学生

      select  *  from  student  where  phoneNum  like  '%6'      查询手机号最后一位为6的学生

3.DQL——聚合函数

(1) 介绍

        将一列数据作为一个整体,进行纵向计算。

(2) 常见聚合函数

 

(3) 语法

SELECT  聚合函数(字段列表)  FROM  表名 

注:NULL值不参与所有聚合函数运算 

eg:① select  count(*)  from  student  / select  count(id)  from  student    统计学生人数

     ② select  avg(age)  from  student              计算学生的平均年龄

     ③ select  max(age)  from  student             计算学生的最大年龄

     ④ select  min(age)  from  student              计算学生的最小年龄

4.DQL——分组查询 

(1) 语法

SELECT  字段列表  FROM  表名  [WHERE  条件]  GROUP  BY  分组字段名  [HAVING  分组过滤条件] 

(2) where与having的区别

① 执行时机不同:where是分组前进行过滤,不满足where条件,不参与分组;而having是分组后对结果进行过滤。

②  判断条件不同:where不能对聚合函数进行判断,而having可以。

注:

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

eg: select  gebder, count(*)  from  student  group  by  gender

                                                        根据性别分组,统计男同学和女同学的数量

      select  gender, avg(age)  from  student  group  by  gender

                                                        根据性别分组,统计男同学和女同学的平均年龄

      select  homeAddress, count(*)  from  student  where  age < 20 group by  homeAddress        having  count(*) >= 3                 

        查询年龄小于20的学生,并根据家庭地址分类,获取学生数量大于等于3的家庭地址

5.DQL——排序查询

(1) 语法

 SELECT  字段列表  FROM  表名  ORDER  BY  字段1  排序方式1, 字段2  排序方法2 

                                                                                                 (支持多字段排序)

(2) 排序方式

  • ASC:升序(默认值)
  • DESC:降序 

注:

    如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 

eg: select * from  student  order  by  age  asc

                                                根据年龄升序排序

      select * from  student  order  by  age  asc, intime  desc 

                                                根据年龄升序排序,年龄相同,根据入学时间进行降序排序

6.DQL——分页查询 

(1) 语法

SELECT  字段列表  FROM  表名  LIMIT  起始索引, 查询记录数 

注:

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

eg: select * from  student  linit 0,10       查询第一页学生数据,展示10条数据

      select * from  student  linit  10     ------>上一行的简写形式

  • DQL——执行顺序 

 

 五.DCL(数据控制语言)

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

1.DCL——管理用户 

(1) 查询用户

USE  mysql

SELECT * FROM  user 

(2) 创建用户

CREATE  USER  '用户名'@'主机名'  IDENTIFIED  BY  '密码' 

(3) 修改用户密码

ALTER USER  '用户名'@'主机名'   IDENTIFIED WITH  mysql_native_password BY  '新密码'

(4) 删除用户

 DROP  USER  '用户名'@'主机名'

注:

  • 主机名可以用%通配。
  • 这类SQL开发人员操作的比较少,主要是DBA(DataBase ADministrator  数据库管理人员)使用。 
2.DCL——权限控制 

        MySQL中定义了很多种权限,但是常用的就一下几种:

(1) 查询权限

SHOW  GRANTS  FOR    '用户名'@'主机名'

(2) 授予权限

GRANT  权限列表  ON  数据库名.表名  TO   '用户名'@'主机名' 

(3) 撤销权限

REVOKE  权限列表  ON  数据库名.表名  FROM   '用户名'@'主机名' 

 注:

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费的 UI 设计资源网站 Top 8

今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站&#xff0c;尤其是一些材料站。它们是免费下载的&#xff0c;材料的风格目前很流行&#xff0c;适合不同的项目。非常适合平面设计WEB/UI设计师收藏&#xff0c;接下…

HTTP协议简介

什么是HTTP 超文本传输协议( HyperText Transfer Protoco&#xff0c;缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP(HyperText Transfer Protocol&#xff0c;超文本传输协议)是一个基于请求与响应&#xff0c;无状态的&#xff0c;应用层的协议常…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量&#xff0c;使用工具时&#xff0c;发现有些代码无法统计。 原因时UTF-8中有某些特殊字符&#xff0c;工具不能识别。 但是&#xff0c;如果把代码转换为SJIS格式&#xff0c;就能正常统计了。 因此&…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展&#xff0c;新能源充电桩作为电动汽车的重要基础设施&#xff0c;其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数&#xff0c;如温度、湿度等&#xff0c;为管理人员提供及时、准确的数据&#xff0c;以便做出相应的调…

云手机与实体手机的对比

在数字化时代&#xff0c;云手机作为一种虚拟手机在云端服务器上运行&#xff0c;与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别&#xff0c;以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量&#xff0c;占据一定…

[极客大挑战 2019]LoveSQL1

万能密码测试&#xff0c;发现注入点 注意这里#要使用url编码才能正常注入 测试列数&#xff0c;得三列 查看table&#xff0c;一个是geekuser另一个是l0ve1ysq1 查看column&#xff0c;有id&#xff0c;username&#xff0c;password&#xff0c;全部打印出来&#xff0c;…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷&#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 &#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

架构师之路(十六)计算机网络(传输层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…

一款相对比较强大的国产ARM单片机HC32F4A0

已经用了3年的HC32F4A0&#xff0c;已经对它比较熟悉了&#xff0c;与STM32相比它的外设使用这些的确是挺大大&#xff0c;不像GD32一类的单片机很多都能兼容STM32。用久了之后就更喜欢用HC32F4A0&#xff0c;功能强大&#xff0c;外设使用灵活&#xff0c;用点向FPGA靠拢的感觉…

MAX27——处理max模型导出Zbrush中,无UV,或者UV炸开,反向等问题。

现在很多小伙伴要做数字人的时候会用到zbrush拓补高模。制作法线。有些人喜欢在zbrush中去做封套。也有喜欢直接用max做低模&#xff0c;做好的uv导入到Zbrush中&#xff0c;直接把高模法线&#xff0c;烘焙到低模UV的。这里主要讲解以下max导出到zbrush中&#xff0c;UV炸开&a…

来自世坤!寻找Alpha 构建交易策略的量化方法

问&#xff1a;常常看到有人说Alpha seeking&#xff0c;这究竟是什么意思&#xff1f; 推荐这本《Finding Alphas: A Quantitative Approach to Building Trading Strategies》。我拿到的PDF是2019年的第二版。来自WorldQuant&#xff08;世坤&#xff09;的Igor Tulchinshky…

热门技术问答 | 请 GaussDB 用户查收

近年来&#xff0c;Navicat 与华为云 GaussDB 展开一系列技术合作&#xff0c;为 GaussDB 用户提供面向管理开发工具的生态工具。Navicat 现已完成 GaussDB 主备版&#xff08;单节点、多节点&#xff09;和分布式数据库的多项技术对接。Navicat 通过工具的流畅性和实用性&…

内网穿透、远程桌面、VPN的理解

最近在研究内网穿透的相关技术&#xff0c;然后回想起一些相关的技术&#xff0c;比如说要远程桌面公司的电脑&#xff0c;VPN连入内网等。然后想着在此处记录一下&#xff0c;各个的区别&#xff0c;这个纯粹是从技术层面的理解&#xff0c;此处不详细解释怎么去实现或者用什么…

k8s的图形化工具rancher

1、rancher&#xff1a;是一个开源的企业级多集群的k8s管理平台 2、rancher和k8s的区别 &#xff08;1&#xff09;都是为了容器的调度和编排系统 &#xff08;2&#xff09;但rancher不仅能够调度&#xff0c;还能管理k8s集群&#xff0c;自带监控&#xff08;普罗米修斯&a…

仅使用 Python 创建的 Web 应用程序(前端版本)第05章_共通代码

前面介绍了很多,但是让我们从本章开始实现 WTS。 在本章中,我们将实现所有页面的公共部分:SessionManager、MockDB、Model 和 Application。 SessionManger 与 Streamlit 会话交互。 在WTS中,我们的目标是使代码清晰,SessionManager负责读写st.session_state数据。 Mock…

插入排序

插入排序 概述步骤代码示例输出结果 概述 插入排序是一种最简单直观的排序算法&#xff0c;它的工作原理是通过创建有序序列和无序序列&#xff0c;然后再遍历无序序列得到里面每一个数字&#xff0c;把每一个数字插入到有序序列中正确的位置。 插入排序是一种简单直观的排序…

UI 自动化测试框架:PO 模式+数据驱动

1. PO 设计模式简介 什么是 PO 模式&#xff1f; PO&#xff08;PageObject&#xff09;设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类&#xff0c;并以页面为单位来写测试用例&#xff0c;实现页面对象和测试用例的分离。 PO 模式的设计思想与…

云计算项目五:部署数据库服务mysql |部署共享存储服务NFS | 配置网站服务

部署数据库服务mysql |部署共享存储服务NFS | 配置网站服务 案例1:配置逻辑卷步骤一:创建LV步骤二:格式化案例2:配置数据库服务器步骤一:安装软件MySQL服务软件(2台数据库服务器都要安装)步骤二:挂载lv设备步骤三:启动服务步骤四:管理员登录案例3:配置主从同步步骤一…

wsl利用netsh端口转发实现http代理

1、端口转发 netsh interface portproxy add v4tov4 listenaddress192.168.1.102 listenport10086 connectaddress127.0.0.1 connectport99992 端口检查 上面命令执行完成后&#xff0c;检查命令是否执行成功 netsh interface portproxy show all检查端口是否正常监听 nets…

Spring什么是控制反转IOC和依赖注入DI的关系?什么是IOC容器?IOC容器管理组件的例子

控制反转IOC的概念 控制反转IOC 是Spring的一个思想&#xff0c;我们具象化到它是一个容器&#xff0c;包含并管理组件对象的生命周期&#xff0c;容器主动的将资源注入给需要的组件&#xff0c;开发人员不需要知道容器是如何创建资源对象的&#xff0c;只需要提供接收资源的…