SQL通用语法及分类

news2024/11/18 1:45:56

目录

MySQL的启动和连接&数据模型

SQL通用语法及分类

Data Definition Language

DDL - 数据库操作

DDL - 表操作

表操作 - 创建&&查询

表操作 - 数据类型

表操作-修改&&删除

 DDL总结

Data Manipulation Language

DML - 插入数据insert

DML - 更新数据update

DML - 删除数据delete

Data Query Language

DQL --- 基础查询

DQL --- 条件查询

DQL - 聚合函数

DQL - 分组查询

DQL - 排序查询

DQL - 分页查询

DDL - 语句执行顺序

DQL总结

Data Control Language

DCL - 用户管理

DCL - 权限控制


MySQL的启动和连接&数据模型

MySQL的启动和停止

  1. services.msc

  2. 命令行启停
    启动:net start mysql80
    停止:net stop mysql80
    (命令行窗口以管理员权限打开,否则无访问系统服务权限)


MySQL数据库客户端连接

  1. MySQL提供的客户端命令行工具
    (先确保mysql正在运行中),否则会出现输入密码命令行窗口闪退的情况
    mysql正常运行中,在windows开始菜单下找到:

    单击打开命令行窗口后输入MySQL密码,即可进入访问(密码输入错误会闪退命令行窗口):
  2.  系统自带的命令行执行指令
    (使用此方法必须提前配置系统的path环境变量)
    mysql -u root -p[回车] -password

MySQL数据模型

1.在清楚MySQL数据模型前,需要先了解一个概念:关系型数据库(RDBMS).

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库

特点

  • 使用表存储结构,格式统一,便于维护
  • 使用SQL语言操作,标准统一,便于操作
     

 2.数据模型

 SQL通用语法及分类

1.SQL通用语法

  • SOL语句可以单行或多行书写书写,以分号结尾
  • SQL语句可以使用空格和缩进来增强程序的可读性
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  • 注释:
    单行注释:--注释内容  或者   #注释内容(MySQL特有)
    多行注释:/*注释内容*/

2.SQL分类

分类全称说明
DDLDate Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段,索引)
DMLDate Manipulation Language数据库操作语言,用来对数据库表中的数据进行增删改
DQLDate Query Language数据库查询语言,用来查询数据库中表的记录
DCLDate Control Language数据库控制语言,用来创建数据库用户,控制数据库访问权限

Data Definition Language

DDL - 数据库操作

  • 查询数据库

  • 创建数据库

  • 删除数据库
  • 使用数据库
  • 使用上述指令进行整体操作

DDL - 表操作

表操作 - 创建&&查询

  • 创建表

    (创建表的最后一条语句不加逗号,整条语句以分号结束)
  • 查询当前数据库的所有表
  • 查询表结构
  • 查询特定表的建表语句
  • 使用上述指令进行整体操作

表操作 - 数据类型

MySQL中主要有数值类型、日期类型和字符串类型。

  • 数值-整数类型
    类型名称说明存储需求有符号(SIGNED)无符号(UNSIGNED)
    TINYINT很小的整数1byte-128 - 1270 - 255
    SMALLINT小的整数2byte-32768 - 327670 - 65535
    MEDIUMINT中等大小的整数3byte-8388608 - 83886070 - 16777215
    INT(INTEGER)普通大小整数4byte-2147483648 - 21474836470 - 4294967295
    BIGINT大整数8byte-9223372036854775808 - 92233720368547758070 - 18446744073709551615
  •  数值-小数类型
    类型名称说明存储需求
    FLOAT单精度浮点数4字节
    DOUBLE双精度浮点数8字节
    DECIMAL(M,D)小数值(精确定点数)M + 2字节

     DECIMAL中的M:精度、D:标度
     精度M:整个数的长度
     标度D:小数的位数

  • 日期与时间类型
     

    类型名称日期格式日期范围存储需求
    YEARYYYY1901-21551byte
    TIMEHH:MM:SS-838:59:59-835:59:593byte
    DATEYYYY-MM-DD1000-01-01~9999-12-313byte
    DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00~9999-12-31 23:59:598byte
    TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC4byte
  • 字符串类型
    文本字符串数据类型
    类型名称说明存储需求
    CHAR(M)定长文本字符串M字节,1 - 255
    VARCHAR(M)变长文本字符串length +1字节
    TINYTEXT非常小的文本字符串length +1字节
    TEXT小的文本字符串length +2字节
    MEDIUMTEXT中等大小的文本字符串length +3字节
    LONGTEXT大的文本字符串length +4个字节
    EUNM枚举类型,只能有一个枚举字符串值1或2byte,取决于枚举字符串的树木
    SET

    一个设置,字符串对象可以有一个或多个set成员

    1,2,3,4或8,取决于集合成员的数量
    二进制字符串类型
    类型名称说明存储需求
    BIT(M)位字段类型(M+7)/8 byte
    BINARY(m)定长二进制字符串Mbyte
    VARBINARY(M)变长二进制字符串M+1byte
    TINYBLOB(M)非常小的BLOB

    L+1 byte

    BOLB(M)小的BLOBL+2byte
    MEDIUMBLOB(M)中等大小的BLOBL+3byte
    LONGBLOB(M)非常大的BLOBL+4byte

表操作-修改&&删除

  • 添加字段
  • 修改字段数据类型
  • 修改字段名和字段类型
  • 删除表中的字段
  • 修改表名
  • 删除表
  • 格式化表(删除表中的数据并重新创建)
  •  使用上述指令进行整体操作

 DDL总结

  • DDL数据库操作
    • show databases;
      显示当前的所有数据库
    • create database [if not exists] 数据库名;
      创建数据库
    • use 数据库名;
      使用/进入当前数据库
    • select database();
      查询当前所在数据库
    • drop database [if exists] 数据库名;
      删除当前数据库
  • DDL表操作
    • show tables;
      显示当前数据库中的所有表
    • create table 表名(字段 字段类型 [comment '注释'], 字段 字段类型 [comment '注释'] ...) [coomment '注释'] ;
      在当前数据库中新建一张表
    • desc 表名;
      查询当前表的结构
    • show create table 表名;
      显示创建该表时的语句
    • alter table add/modify/change/drop/rename to
      添加字段,修改字段类型,修改字段,删除字段,重命名表
    • drop table 表名;
      删除当前表

(可视化工具 - dataTrip)👇

Data Manipulation Language

DML - 插入数据insert

  • insert into 表名(字段,字段...) values(值1,值2...);
    -- 表中的字段和值一一对应
  • insert into 表名(字段1,字段2...) values(值1,值2...),(值1,值2...);
    -- 一次添加多组数据,字段值和值要一一对应
  • insert into 表名 values(值1,值2...);
    -- 值要和表中的字段一一对应
    
    insert into 表名 values(值1,值2...),(值1,值2...);
    -- 一次添加多组数据,数据要和表中的字段一一对应

插入数据的注意事项

  • 插入的数据应当与表中的字段一一对应

  • 插入数据如果类型是字符串或者日期,应当用引号修饰

  • 添加的数据应当在定义的数据类型的范围内

DML - 更新数据update

  • update 表名 set 字段1=值1,字段2=值2...[where 条件];
    -- update是针对字段来进行操作的

DML - 删除数据delete

  • delete from 表名 [where 条件];
    -- delete针对的操作对象是表中的一整条数据 

 使用上述SQL命令整体进行表的数据操作:
使用insert向表中添加数据:

使用update更新表中的数据:

使用delete删除表中的数据:

Data Query Language

DQL --- 基础查询

  • 查询多个字段
    select 字段1[as 别名],字段2[as 别名],字段3[as 别名]...from 表名;
    //as可以省略
    
    select * from 表名;
    //返回表中的所有字段中的信息
  • 查询多个字段去重
    select distinct 字段列表 from 表名;    -- 去重查询

DQL --- 条件查询

  • select 字段列表 from 表明 where [条件列表];

使用上述查询进行整体操作:

 DQL - 聚合函数

函数作用
avg()返回某列的平均值
sum()返回某列值的和
count()返回某列的行数
max()返回某列的最大值
min()返回某列的最小值
select 聚合函数(字段列表) from 表名;

使用聚合函数进行查询时,null不参与聚合函数的运算,如果统计表的行数,使用count(*)即可。

使用上述查询进行整体操作:

 DQL - 分组查询

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

where和having的区别:

  • where是对分组前的数据进行过滤,不满足分组条件的数据不参与分组,而having是对分组之后的数据进行过滤
  • where不能对聚合函数进行判断,having可以

使用上述查询:

DQL - 排序查询

select 字段列表 from 表名 order by 字段名 排序方式,字段名,排序方式;
//当按照第一个字段排序时顺序相同时,就按照第二个字段及其规则进行排序返回
//asc    升序排列(默认值,可以省略)
//desc   降序排列

 DQL - 分页查询

select 字段列表 from 表名 limit 起始索引,每页查询的数据条数;
-- 起始索引为: (页数 - 1) * 每页数据的条数
-- 第一页的起始索引可以省略

DDL - 语句执行顺序

  1. from -- 找到对应的表
  2. where -- 根据条件进行筛选
  3. group -- 筛选后分组
  4. select -- 选出处理后的数据
  5. order by -- 进行数据的排序
  6. limit -- 数据分页

DQL总结

-- 基础查询
select 字段列表 from 表名;

-- 条件查询
select 字段列表 form 表名 where 条件;

-- 分组查询
select 字段列表 from 表名 [where条件] group by 分组字段名 [having过滤条件];

-- 排序查询
select 字段列表 from 表名 [where条件] order by 字段名 排序方式,字段名 排序方式;

--分页查询
select 字段列表 from 表名 [where条件] limit 起始索引,每页查询的信息条数;

Data Control Language

DCL - 用户管理

-- 使用管理员账号进入mysql数据库下

-- 查询用户
use mysql;
select * from user;

-- 创建用户
create user '用户名'@'主机名' identified by '密码';

-- 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '密码';

-- 删除用户
drop user '用户名'@'主机名';

DCL - 权限控制

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

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

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

 

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

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

相关文章

高佣金流量卡上线

01 流量卡业务 常规的运营商套餐相对都比较贵,少则六七十一个月,多则几百块一个月,这样的套餐让运营商赚盆满钵满。 随着5G需求越来越多,其他第三方运营商也开始市场化营销,流量卡的CPA基本在60-200之间一张卡&…

汽车喷漆车间风淋室八大参数TENAISU

汽车喷漆车间风淋室风淋室配置八大参数 汽车喷漆车间风淋室及汽车涂装车间风淋室配置八大参数,光电感应自动功能系统、自动身份识别功能系统、自动臭氧杀菌功能系统、自动紫外线杀菌功能系统、自动除静电离子发生功能系统、可调延时开门功能系统、过滤器失效预警功能系统、自动…

焦脱镁叶绿酸-a修饰无机纳米材料/活性基团/上转换纳米发光颗粒/点击化学/抗体的应用

小编今天分享的科研知识是焦脱镁叶绿酸-a修饰无机纳米材料/活性基团/上转换纳米发光颗粒/点击化学/抗体的应用,一起来看! 焦脱镁叶绿酸-a衍生物的应用: 叶绿素降解产物是合成光动力治疗药物的理想合成前体.为了获得新型叶绿素类光敏剂,以焦脱…

Vscode踩坑日记--行尾序列LF和CRLF

Vscode踩坑日记–行尾序列LF和CRLF 今天一上午什么也没干,一直配置Vscode,之前因为代码提交问题,需要解决配置一下eslint,问题就来了。 插件,配置信息什么都写好了还是一堆错误??让我很懵逼 …

基于Java Springboot-MySQL实现学生信息成绩管理系统

学生成绩管理系统 项目设计的意义。 该系统的具体任务就是设计一个学生成绩的数据库管理系统,由计算机代替人工执行一系列诸如增加新学生成绩信息、删除学生成绩信息、学生资料、查询、修改等的处理操作,以方便管理人员的管理信息工作。本设计以学生成绩…

32种EMC标准电路 (共用)

01 AC24V接口EMC设计标准电路 02 AC110V-220VEMC设计标准电路 03 AC380V接口EMC设计标准电路 04 AV接口EMC设计标准电路 05 CAN接口EMC设计标准电路 06 DC12V接口EMC设计标准电路 07 DC24V接口EMC设计标准电路 08 DC48接口EMC设计标准电路 09 DC110V接口…

[附源码]Python计算机毕业设计SSM基于大数据的高校国有固定资产管理及绩效自动评价系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

vivado tcl开发流程

本文以简单的led灯为例,阐述基于tcl的Vivado开发流程。 文件内容编写如下: led.v timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2022/12/12 14:57:22 // Design Name: // Module Name: alu // Project Name: // Target De…

这10种神级性能优化手段,你用过几个?

引言:取与舍 软件设计开发某种意义上是“取”与“舍”的艺术。 关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性…

React源码分析8-状态更新的优先级机制

这是我的剖析 React 源码的第二篇文章,如果你没有阅读过之前的文章,请务必先阅读一下 第一篇文章 中提到的一些注意事项,能帮助你更好地阅读源码。 文章相关资料 React 16.8.6 源码中文注释,这个链接是文章的核心,文…

Maven打包同时引入本地jar包

Maven打包同时引入本地jar包 若依分离版作为案例 &#xff0c;实际测试 方法一(pom文件指定jar包目录进行引入) 1.将需要手动引入的jar包放入ruoyi-admin的resources下&#xff0c;例如&#xff1a; 2.手动jar依赖则在ruoyi-common模块下的pom.xml中引入 <dependency>…

Sqlite数据库操作(一)—— 命令行操作

目录 1、sqlite 数据库安装 2、数据库常用命令 (1) 创建数据库 (2) 系统命令 (3) sql语句 1、sqlite 数据库安装 在终端输入 sudo apt-get install sqlite3 安装sqlite3&#xff0c;安装完毕以后&#xff0c;在终端输入 sqlite3 &#xff0c;若出现以下内容&#xff0c;…

MySQL数据库学习(5)

一、概念 视图是数据库中常用对象之一&#xff0c;它的内容是数据库部分数据或以聚合等方式重构的数据。 只存放视图的定义&#xff0c;不存放数据。不存储数据&#xff0c;所以视图是一个虚表。 因为数据存在基本表中&#xff0c;基本表的数据发生变化&#xff0c;视图查询的结…

MySQL集群解决方案(1):MySQL数据库的集群方案

1、系统架构存在的问题 在我们的系统架构中&#xff0c;DBserver方面我们只是使用了单节点服务&#xff0c;如果面对大并发&#xff0c;海量数据的存储&#xff0c;显然单节点的系统架构将存在很严重的问题&#xff0c;所以接下来&#xff0c;我们将实现MySQL的集群&#xff0c…

双12有哪些宝藏数码好物值得入手、这份超值数码清单收藏好

作为一年一度的电商大促狂欢日&#xff0c;不知道各位小伙伴儿有没有入手哪些心仪的数码产品呢&#xff1f;如果确实不知道要入啥好&#xff0c;不妨一起来看看我为各位精心准备的这份最值得入手的数码产品清单吧&#xff0c;这份清单的产品最主要突出的是颜值、产品实力还有性…

anaconda使用arcpy库

anaconda使用Arcpy环境1. 查看Arcgis版本2. 创建虚拟环境3. 将anaconda环境放入jupyter中1. 查看Arcgis版本 找到Arcgis安装python路径【电脑需要下载Arcgis】点击python.exe&#xff0c;查看python版本 2. 创建虚拟环境 管理员身份打开Anaconda PowerShell Prompt 查看ana…

安卓玩机搞机技巧综合资源-----“另类更新“偷渡”操作步骤 无需解锁bl 无需内侧用户【十三】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

如何排查CPU 100%的应用

一台机器&#xff0c;CPU100%&#xff0c;如何找到相关服务&#xff0c;如何定位问题代码&#xff0c;今天简单分享下思路。 简要步骤如下&#xff1a; 找到最耗CPU的进程&#xff1b;找到最耗CPU的线程&#xff1b;查看堆栈&#xff0c;定位线程在干嘛&#xff0c;定位对应代码…

linux安装docker教程+mysql安装

一、linux安装docker教程 第一步、关闭SELINUX服务 修改文件后的重启linux&#xff0c;重启命令为&#xff1a;reboot 注意此处虚拟机里修改重启无法启动linux系统成功&#xff0c;处理方法&#xff1a; 1、重启Linux按e进入系统启动项修改参数 2、在linux16的行位添加 seli…

k8s编程operator——(4) kubebuilder controller-runtime

文章目录1、KubeBuilder使用1.1 下载1.2 使用2、controller-runtime参考资料&#xff1a;https://book.kubebuilder.io/k8s编程operator系列&#xff1a; k8s编程operator——(1) client-go基础部分 k8s编程operator——(2) client-go中的informer k8s编程operator——(3) 自定…