[MySQL-基础]SQL语句

news2024/10/3 4:38:10

目录

 

hello! 这里是欧_aita的频道。
今日语录: 只有放弃才是真正的失败。
祝福语:愿你的代码生活充满注释,逻辑清晰,debug之路畅通无阻。
大家可以在评论区畅所欲言,可以指出我的错误,在交流中共同进步。

欢迎关注我的专栏
数据结构与算法  

C++

 MySQL数据库

SQL

SQL

SQL的特点:

SQL通用语法

SQL分类

DDL

DDL-数据库操作

        DDL-表操作

       查询

       创建

           数据类型

DML

     1.添加数据(INSERT)

      2.修改数据(UPDATE)

      3.删除数据(DELETE)

DQL

DQL-基本操作

查询多个字段

设置别名

去除重复记录

       DQL-语法

条件查询

            (1)条件符号

            (3)聚合函数

            ( 4)常见聚合函数

      2.分组查询     

            (1)语法

            (2)Where和having的区别

            (3)注意事项

      3.排序查询

            (1)语法

            (2)排序方式

       4.分页查询

执行顺序

DCL

 1.DCL-管理用户

      (1)查询用户

        (2)删除用户

        (3)修改用户密码

        (4)创建用户

2.DCL-权限控制

      (1)常用权限

       (2)查询权限

       (3)授予权限

         (4)  撤销权限


SQL

定义:SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言。它提供了一种简单而强大的方式,使用户能够定义、操作和控制数据库中的数据。

SQL

SQL的特点:

  1. 关系型数据库: SQL主要用于关系型数据库管理系统(RDBMS)。关系型数据库是一种以表格形式组织数据的数据库,其中数据通过表格之间的关系进行连接。

  2. 数据操作: SQL允许用户执行各种数据操作,包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)等操作。这些操作使用户能够有效地管理数据库中的数据。

  3. 数据定义: SQL不仅可以用于操作数据,还可以用于定义数据库结构。这包括创建表(CREATE TABLE)、定义索引(CREATE INDEX)和定义约束(如主键、外键等)等。

  4. 数据控制: SQL还提供了对数据访问的控制,通过GRANT和REVOKE等命令可以授予或撤销用户对数据库对象的权限。

  5. 事务控制: SQL支持事务,通过BEGIN TRANSACTION、COMMIT和ROLLBACK等语句,可以确保在数据库操作中的一系列语句要么全部执行成功,要么全部失败。

SQL通用语法

  1. SQL语句单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字推荐使用大写。
  4. 注释:

           (1)单行注释:--注释内容 或 #注释内容(MySQL特有)。

           (2)多行注释:/*注释内容*/

SQL分类

  1. DDL   数据定义语言,用来定义数据库对象(数据库,表,字段)。
  2. DML   数据操作语言,用来对数据库表中的数据进行增删改查。
  3. DQL   数据查询语言,用来查询数据库中表的记录。
  4. DCL   数据控制语言,用来创建数据库用户。

DDL

定义:DDL(Data Definition Language,数据定义语言)是用于定义和管理数据库结构的SQL语言部分,包括创建、修改和删除表、索引等数据库对象。

DDL-数据库操作

  •       查询
  •                                          查询所有数据库:SHOW DATABASES;
  • 查询当前数据库:SELECT DATABASE();
  •       创建
  •          CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
  •       
  •        删除
  •            DROP DATABASE[IF EXISTS]数据库名;
  •        使用
  •            USE 数据库名;

        DDL-表操作

       查询
  1. 查询当前数据库所有表:SHOW TABLES;
  2. 查询表结构:DESC表名。
  3. 查询指定表的建表语句:SHOW CREATE TABLE表名;
       创建

             CREATE TABLE 表名(

                    字段1 字段1类型[COMMENT 字段1注释],

                    字段2 字段2类型[COMMENT 字段2注释],

                    字段3 字段3类型[COMMENT 字段3注释],

                     ……

                    字段n 字段n类型[COMMENT 字段n注释]

[COMMENT 表注释];

创建一个员工表 

           数据类型

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

           修改

  •               ( 添加 )  ALTER TABLE表名ADD 字段名 类型(长度)[COMMENT 注释][约束];
  •             ( 修改 )ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
  •             ( 删除 ) ALTER TABLE 表名 DROP 字段名;
  •               ( 删除并且重新创建个表 ) TRUNCATE TABLE 表名;
  •               ( 重命名 ) ALTER TABLE 表名 RENAME 新表名;

DML

定义:DML(Data Manipulation Language,数据操作语言)是SQL的一部分,用于执行数据库中的数据操作,包括插入、更新、删除和查询等操作。

     1.添加数据(INSERT)

         --给指定字段添加数据

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

         --给全部字段添加数据

       (2)INSERT INTO表名VALUES(值1,值2,…);

         --批量添加数据

       (3)INSERT INTO表名(字段1,字段2,…)VALUES(值1,值2,…),(值1,值2,…);

添加员工信息 

       (4)INSERT INTO表名VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…);

      2.修改数据(UPDATE)

          UPDATA 表名 SET 字段名1=值1,字段名2=值2,…[WHERE 条件];

      3.删除数据(DELETE)

          DELETE FROM 表名[WHERE 条件];

DQL

定义:DQL(Data Query Language,数据查询语言)是SQL的一部分,专注于执行数据库中的查询操作,主要包括SELECT语句用于检索数据。

DQL-基本操作

  1. 查询多个字段
    1. SELECT 字段1,字段2,字段3…FORM 表名;
    2. SELECT * FROM 表名;--返回所有字段
  2. 设置别名
    1. SELECT 字段1[AS 别名1],字段2[AS 别名2]…FROM 表名;
  3. 去除重复记录
    1. SELECT DISTINCT 字段列表 FROM 表名;

这是取别名的操作 

 

 这是去除重复记录的操作

       DQL-语法

  1. 条件查询

              1. SELECT字段列表FROM表名WHERE条件列表;

 实际应用

            (1)条件符号

  

            (3)聚合函数
  •       介绍:将一列数据作为整体,进行纵向计算。

            ( 4)常见聚合函数

注意: 所有null值不计入聚合函数计算

 查询名字为两个字的员工(使用like __下划线占位符)

      2.分组查询     
            (1)语法
  •        SELECT字段列表FROM表名[WHERE条件]GROUP BY分组字段名[HAVING分组后过滤条件];
            (2)Where和having的区别
  • 判断时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

 

            (3)注意事项
  • 执行顺序:where>聚合函数>having。
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

      3.排序查询
            (1)语法
  • SELECT 字段列表 FROM 表名 ORDER BY字段1 排序方式1,字段2 排序方式2;
            (2)排序方式
  • ASC:升序(默认值)
  • DESC:降序

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

       4.分页查询

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

       注意:

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

 查询开始的6个员工信息,1页

执行顺序
  1. From 表名列表
  2. Where 条件列表
  3. Group by 分组字段列表
  4. Select 字段列表
  5. Order by 排序字段列表
  6. Limit 分页参数
  7. Having 分组后条件列表

DCL

定义:DCL(Data Control Language,数据控制语言)是SQL的一部分,用于管理数据库访问权限,包括授予(GRANT)和撤销(REVOKE)用户对数据库对象的权限。

 1.DCL-管理用户

      (1)查询用户
  • USE mysql;
  • SELECT * FROM user;

 可以看见对应的数据表呈现出来了

        (2)删除用户
  • DROP USER ‘用户名’@’主机名’;

        (3)修改用户密码
  • ALTER USER ‘用户名’@’主机名’ IDENTIFIED WITH mysql_native_password BY‘新密码‘;

 

通过终端重新进入看密码是否改为123 

成功登录,说明密码成功修改! 

        (4)创建用户
  • CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
  • USE mysql;
  • SELECT * FROM user;

        注意:

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

2.DCL-权限控制

      (1)常用权限

       (2)查询权限
  •           SHOW GRANTS FOR ‘用户名’@’主机名’;

 

可以看见itcast用户的权限 

       (3)授予权限
  •           GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@’主机名’;

 

         (4)  撤销权限
  •            REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@’主机名’;

注意:

      多个权限之间,使用逗号分隔。

      授权时,数据库名和表名都可以使用*进行统配,代表所有。

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

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

相关文章

RabbitMQ安装说明

注意: 本次安装以 CentOS 7为例 1、 准备软件 erlang 18.3 1.el7.centos.x86_64.rpm socat 1.7.3.2 5.el7.lux.x86_64.rpm rabbitmq server 3.6.5 1.noarch.rpm 2、安装Erlang rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm 3.、安装RabbitMQ 安装 rpm -ivh socat-1.7.3.2-…

上海亚商投顾:北证50指数持续大涨 短剧概念股再爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,深成指跌超1.4%,创业板指跌超1.7%。北证50指数大涨超8%,…

05 取样器(BeanShell和JSR223 Sampler)

一、取样器作用 1、取样器可以理解为Jmeter的桥梁,或者是Jmeter的加工厂; 2、Jmeter使用过程中,经常有些数据不能直接使用,需要加工后才能使用;这样就用到了取样器;但是这里存在问题,Jmeter中的…

寄存器、缓存、内存之间的关系和区别

https://blog.csdn.net/m0_46761060/article/details/124689209 目录 关系1、寄存器2、缓存(Cache) 2.1、寄存器和缓存的区别2.2、一级缓存和二级缓存3、内存 3.1、只读存储器 ROM(Read Only Memory)3.2、随机存储器 RAM&#xf…

关于Flink的旁路缓存与异步操作

1. 旁路缓存 1. 什么是旁路缓存? 将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互 比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互 2. 旁路缓存例子使用 dim层…

druid keepAlive 导致数据库连接数飙升

一.背景 应用在执行完某个复杂业务,主要包含20几个查询SQL的操作后,会导致数据库连接池一直升高 druid版本:1.2.11 druid配置文件: spring.datasource.druid.maxActive100 spring.datasource.druid.initialSize20 spring.datas…

常量字符串(const)

数组名就是地址,str1与str2是两个不同的数组,虽然内容相同,但是地址不同,故为no const char * str是常量字符串,如果已有相同内容str3,则写入相同内容的str4是不会再开辟新的空间了,因为常量已…

3-合并区间

1题目描述 2思路 在合并区间之前,需要对所有的区间按照区间第一个元素进行排序,这样可以保证已经合并的各个区间之后不会再包含其他区间,或者被其他区间包含; 首先自己进行一下排序练习,回顾冒泡排序和选择排序&#…

Redis主从,缓存击穿,雪崩,哨兵等问题

Redis的性能管理: Redis的数据缓存在内存当中 INFO memory used_memory:853808 Redis中数据占用的内存 used_memory_rss:3715072 Redis向操作系统申请的内容 used_memory_peak:853808 Redis使用的内存的峰值 系统巡检:硬件巡检,数据库…

C语言—指针入门

内存存放数据 如果发送指令,读取f变量的内容,则先找f - >10005这个字节,然后再找到123。 指针和指针变量 通常说的指针就是地址的意思,C中有专门的指针变量存放指针。一个指针占4个字节。 定义指针变量 类型名 *指针变量名…

数组的移动

设计程序&#xff0c;给定包含N个整数的数组array&#xff0c;实现操作&#xff1a;前面各个整数顺序向后移动m个位置&#xff0c;最后的m个整数移动到最前面。方法&#xff1a;void move(int array[], int n,int m ) 输入要求 第一行输入两个整数N(1<N<1e6)和m(0<m&…

JavaEE 多线程01

为什么引入多线程? 首先进程已经能很好的完成多任务这个情景下的并发编程了,那为什么又引入多线程呢? 这是因为在一些情景下,我么需要大量的创建和销毁进程来完成一些任务,此时多进程对系统的开销就会很大了. 假设有这样一个场景,服务器同时接收到很多个服务请求,这个时候服务…

MAX/MSP SDK学习06:内存管理

提供两种内存分配方式&#xff1a;①简单指针&#xff0c;②句柄&#xff08;二级指针&#xff09;&#xff1b;官方文档建议使用前者。 // 简单指针 char *ptr; ptr sysmem_newptr(2000); post("I have a pointer %lx and it is %ld bytes in size",ptr, sysmem_p…

算法的奥秘:常见的六种算法(算法导论笔记2)

算法的奥秘&#xff1a;种类、特性及应用详解&#xff08;算法导论笔记1&#xff09; 上期总结算法的种类和大致介绍&#xff0c;这一期主要讲常见的六种算法详解以及演示。 排序算法&#xff1a; 排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复…

通过python脚本上传远程服务器文件到minio

前言 将文件上传到MinIO对象存储后&#xff0c;MinIO会将文件存储为对象(.meta文件)&#xff0c;并为每个对象生成相应的元数据。元数据是描述对象的属性和信息的数据。 通常&#xff0c;元数据包括对象的名称、大小、创建日期等。 在MinIO中&#xff0c;对象的元数据存储在独立…

递归回溯剪枝-子集

LCR 079. 子集 - 力扣&#xff08;LeetCode&#xff09; 方法一 1. 决策树&#xff1a;对于决策树&#xff0c;思考的角度不同&#xff0c;画出的决策树也会不同&#xff0c;这道题可以从两个角度来画决策树。 2. 考虑全局变量的使用&#xff1a; 使用全局变量 List<List&…

Modbus TCP

Modbus &#xff08;&#x1f446; 百度百科&#xff0c;放心跳转&#xff09; 起源 Modbus 由 Modicon 公司于 1979 年开发&#xff0c;是一种工业现场总线协议标准。 Modbus 通信协议具有多个变种&#xff0c;支持串口&#xff0c;以太网多个版本&#xff0c;其中最著名的…

智慧城市内涝积水监测仪功能,提升城市预防功能

内涝积水监测仪不仅改变了人们应对城市内涝的老办法&#xff0c;还让智慧城市往前迈了一大步。这个监测仪是怎么做到的呢&#xff1f;就是靠它精准的数据监测和预警&#xff0c;让城市管理有了更科学高效的解决妙招。它就像有了个聪明又负责任的助手&#xff0c;让城市管理更加…

AI虚拟主播系统+智能交互+AI词库+虚拟形象 附带完整的搭建教程

近几年电商直播带货热潮持高不跌&#xff0c;很多商家企业都会选择线上直播卖产品&#xff0c;与此同时&#xff0c;虚拟主播开始盛行&#xff0c;与真人主播相比&#xff0c;品牌虚拟主播无档期风险、离职风险、人设稳定更可控。 AI虚拟主播的不是为了取代真人主播而开发&…

AI:86-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…