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   '用户名'@'主机名' 

 注:

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全 -> 防御与保护】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 网络安全——防御与保护 &#xff08;一&#xff09;.信息安全概述 &#xff08;二&#xff09;.防火墙组网

第04章_IDEA的安装与使用(上)(认识,卸载与安装,JDK相关设置,详细设置,工程与模块管理,代码模板的使用)

文章目录 第04章_IDEA的安装与使用&#xff08;上&#xff09;本章专题与脉络1. 认识IntelliJ IDEA1.1 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA的主要优势&#xff1a;(vs Eclipse)1.4 IDEA 的下载 2. 卸载与安装2.1 卸载过程2.2 安装前的准备2.3 安装过程2.4 注册2…

逻辑回归中的损失函数梯度下降

一、引言 逻辑回归中的损失函数通常采用的是交叉熵损失函数&#xff08;cross-entropy loss function&#xff09;。在逻辑回归中&#xff0c;我们通常使用sigmoid函数将线性模型的输出转换为概率值&#xff0c;然后将这些概率值与实际标签进行比较&#xff0c;从而计算损失。 …

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践&#xff1a;二分类模型&#xff08;iris数据集&#xff09;数…

web漏洞总结大全(基础)

前言 本文章是和cike_y师傅一起写的&#xff0c;cike_y博客&#xff1a;https://blog.csdn.net/weixin_53912233?typeblog 也欢迎大家对本文章进行补充和指正&#xff0c;共同维护这个项目&#xff0c;本文的github项目地址&#xff1a; https://github.com/baimao-box/Sum…

Linux系统Shell脚本编程之条件语句

一、条件测试 Shell 环境根据命令执行后的返回状态值 " $? " 来判断是否执行成功&#xff0c;当返回值为0时表示成功&#xff0c;否则表示失败或异常&#xff08;非0值&#xff09;。使用专门的测试工具 test 命令&#xff0c;可以对特定条件进行测试&#xff0c;并…

VI / VIM的使用

vi/vim 的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是 vim 是 vi 的升级版本&#xff0c;它不仅兼容 vi 的所有指令&#xff0c;而且 还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行&#xff0c;也可以运行于 x win…

【Linux】糟糕,是心动的感觉——与Linux的初次相遇

初识Linux 导言一、计算机的发展1.1 历史背景1.2 计算机的发明 二、操作系统2.1 什么是操作系统&#xff1f;2.2 操作系统的诞生2.3 操作系统的发展2.3.1 批处理系统的发展2.3.2 分时系统2.3.3 实时系统2.3.4 通用操作系统 2.4 UNIX操作系统2.4.1 UNIX的诞生2.4.2 UNIX的发展 2…

Git学习 -- 分支合并、版本修改相关

目录 learn GIT Learn Git Branching merge和rebase的使用 基础命令 版本回退 工作区和暂存区 管理修改 撤销修改 删除修改 learn GIT Learn Git Branching 这是Gitee上的Git学习教程 Learn Git Branching Git Rebase Learn Git Branching 最终的实操 merge和rebase的…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

2024年 全新 HTTP 客户端 你用了?

我们平时开发项目的时候&#xff0c;经常会需要远程调用下其他服务提供的接口&#xff0c;于是我们会使用一些 HTTP 工具类比如 Hutool 提供的 HttpUtil。SpringBoot 3.0 出了一个Http Interface的新特性&#xff0c;它允许我们使用声明式服务调用的方式来调用远程接口&#xf…

重磅!Salesforce推出UE+无限版餐套,企业如何选择?

孤立的应用程序和脱节的技术堆栈是所有企业的噩梦。目前&#xff0c;市场上产品和服务种类繁多&#xff0c;无缝集成和清晰、直接的购买流程可以决定整体体验的成败。 Salesforce云以及其他应用程序在过去几年中经历了巨大增长。随着越来越多的功能被捆绑在一起&#xff0c;Un…

威联通QNAP NAS结合cpolar内网穿透实现公网远程访问NAS中存储的文件

文章目录 推荐 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣…

Tarjan 算法(超详细!!)

推荐在 cnblogs 上阅读 Tarjan 算法 前言 说来惭愧&#xff0c;这个模板仅是绿的算法至今我才学会。 我还记得去年 CSP2023 坐大巴路上拿着书背 Tarjan 的模板。虽然那年没有考连通分量类似的题目。 现在做题遇到了 Tarjan&#xff0c;那么&#xff0c;重学&#xff0c;开…

“趣味夕阳,乐享生活”小组活动(第二节)

立冬以来&#xff0c;天气日渐寒冷&#xff0c;气温变化较大&#xff0c;各种传染病多发&#xff0c;为进一步增强老年人冬季预防传染病保健意识及科学合理健康的生活方式。近日&#xff0c;1月22日&#xff0c;南阳市人人社工灌涨站开展了“趣味夕阳&#xff0c;乐享生活”小组…

【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器

文章目录 一、unordered系列容器的底层结构 - 哈希1. 哈希概念2. 哈希冲突 二、解决哈希冲突方法一&#xff1a;合理设计哈希函数&#x1f6a9;哈希函数设计原则&#x1f6a9;常见哈希函数 方法二&#xff1a;开闭散列&#x1f6a9;闭散列线性探测法&#xff08;实现&#xff0…

gradle打包分离依赖jar

正常打包的jar是包含项目所依赖的jar包资源&#xff0c;而且大多数场景下的依赖资源是不会频繁的变更的&#xff0c;所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身&#xff0c;减小上传的jar包总大小&#xff0c;能实现加速部署的效果 一 原本结构 二 配置buil…

第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)

文章目录 第04章_IDEA的安装与使用&#xff08;下&#xff09;8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键1、已知快捷键操作名&#xff0c;未知快捷键2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团&#xff08;证券代码&#xff1a;0022…

【Chrome】浏览器怎么清除缓存并强制刷新

文章目录 1、正常刷新&#xff1a;正常刷新网页&#xff0c;网页有缓存则采用缓存。 F5 或 刷新键2、强制刷新&#xff1a;忽略缓存刷新&#xff0c;重新下载资源不用缓存。 CtrlF5 或 ShiftF5 或 CtrlShiftR3、在浏览器的设置里面清除所有数据