SQL入门

一、SQL 语言概述

数据库就是指数据存储的库,作用就是组织数据并存储数据,数据库如按照:库 -> 表 -> 数据三个层级进行数据组织,而 SQL 语言,就是一种对数据库、数据进行操作、管理、查询的工具,通过SQL 语言,可以完成对数据的增删改查等操作。

数据库软件就是提供库 -> 表 -> 数据,这种数据组织形式的工具软件,也称之为数据库管理系统,常见的数据库软件有: Oracle 、 MySQL 、 SQLServer 、 PostgreSQL 、 SQLite ,本文使用MySQL 软件进行学习,同时用第三方图形化工具DBeaver操作 MySQL。

SQL 全称是“ Structured Query Language ”,即“结构化查询语言”,用于访问和处理数据库的标准的计算机语言。SQL 语言 1974 年由 Boyce 和 Chamberlin 提出,并首先在 IBM 公司研制的关系数据库系统 SystemR 上实现,经过多年发展, SQL 已经成为数据库领域统一的数据操作标准语言,几乎市面上所有的数据库系统都支持使用 SQL 语言来操作。

MySQL安装:手把手教你安装MySQL(最新版本安装)_哔哩哔哩_bilibili

DBeaver安装:【黑马程序员python教程,8天python从入门到精通,学python看这套就够了】 【精准空降到 03:06】 https://www.bilibili.com/video/BV1qW4y1a7fU/?p=130&share_source=copy_web&vd_source=b7e4ae388f33cefa375c8fb8789aa3bc&t=186

二、SQL基础语法

2.1 SQL 的语法特征

 SQL 的语法特征:

  • 大小写不敏感
  • 字符串的值必须要用单引号包围起来
  • 可以单行或多行书写,最后以分号( ; )号结束
  • SQL 支持注释:
    1. 单行注释: -- 注释内容( -- 后面一定要有一个空格)
    2. 单行注释: # 注释内容( # 后面可以不加空格,推荐加上)
    3. 多行注释: /* 注释内容 */

我们打开DBeaver,来验证一下:

首先打开编辑器,如下图所示。

输入“SHOW DATABASES;”(查看数据库),如下图所示,无论是大写,小写,还是大小写混杂,得到的输出结果相同,证明SQL 确实大小写不敏感。

运用3种注释方式,运行正常:

2.2 SQL 语言的分类

由于数据库管理系统(数据库软件)功能众多,不仅仅是存储数据,还包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。所以,操作数据库的 SQL 语言,也基于功能,可以划分为 4 类

  • 数据定义: DDL ( Data Definition Language )
    • 库的创建删除、表的创建删除等
  • 数据操作: DML ( Data Manipulation Language )
    • 新增数据、删除数据、修改数据等
  • 数据控制: DCL ( Data Control Language )
    • 新增用户、删除用户、密码修改、权限管理等
  • 数据查询: DQL ( Data Query Language )
    •  基于需求查询和计算数据

2.2.1 DDL(数据定义)

2.2.1.1 DDL库管理

基础语法:

SHOW DATABASES;   # 查看数据库

USE 数据库名称;   # 使用数据库

CREATE DATABASE 数据库名称 [CHARSET UTF8];   # 创建数据库,方框[ ]的意思是里面的内容是可选的

DROP DATABASE  数据库名称;    # 删除数据库

SELECT DATABASE();    #  查看当前使用的数据库

我们在DBeaver中应用一下DDL库管理基础语法:

1.创建数据库test

create database test charset utf8;-- 创建数据库test

运行后:

2.创建数据库后,我们接着查看数据库,验证数据库test是否已存在。

create database test charset utf8;-- 创建数据库test
show databases;-- 查看数据库

运行后:

3.使用数据库test,再查看当前使用的数据库是否是test

create database test charset utf8;-- 创建数据库test
show databases;-- 查看数据库
use test;-- 使用数据库test
select database ();-- 查看当前使用的数据库

运行后:

4.删除数据库test后,我们接着查看数据库,验证数据库test是否已不存在。

create database test charset utf8;-- 创建数据库test
show databases;-- 查看数据库
use test;-- 使用数据库test
select database ();-- 查看当前使用的数据库
drop database test;-- 删除数据库test
show databases;-- 查看数据库

运行后:

2.1.1.2 DDL表管理

基础语法:

SHOW TABLES;   # 查看表(需要先选择数据库)

CREATE TABLE 表名称 (

    列名称  列类型,

    列名称  列类型,

    ……

);        # 创建表

DROP TABLE 表名称;    # 删除表

DROP TABLE IF EXISTS 表名称;    # 删除表

其中在创建表时提到了列类型,列类型有:

  • int  --整数
  • float  --浮点数
  • varchar(长度) --文本,长度为数字,作最大长度限制
  • data --日期类型
  • timestamp --时间戳类型

我们在DBeaver中应用一下DDL表管理基础语法:

1.在前面建立的数据库test中建立表student,然后查看。

use test;# 一定先选择数据库
create table student(id int,name varchar(10),age int
);
show tables;

运行后:

2.在左边数据库导航栏中打开表student查看。

3.删除表student(在2.2.1DDL中我们只学习基础语法,在后面学习添加数据)

注意:在第2步中,打开了表student,要关闭表student后才能删除。

2.2.2 DML(数据操作)

关键字:

  1. 插入 INSERT
  2. 删除 DELETE
  3. 更新 UPDATE

基础语法:

# 数据插入

INSERT INTO 表[(列1,列2,列3,列4,……,列N)] VALUES(值1,值2,值3,值

4,……,值N)[,(值1,值2,值3,值4,……,值N),……,(值1,值2,值3,值4,……,值N)];  #方框[ ]的意思是里面的内容是可选的

# 数据删除

DELETE FROM 表名称 [WHERE 条件判断];

#数据更新

UPDATE 表名称 SET 列=值 [WHERE 条件判断];

条件判断:列 操作符 值

操作符:= 、<、 >、 <=、 >=、 !=

DML语法应用:

1.在数据库test表student中插入数据。

use test;
create table student(ID int,name varchar(10),age int
);
# 插入全部列数据
insert into student (ID,name,age) values(01,'加菲猫',3),(02,'欧迪',2),(03,'乔恩',23);
# 仅插入ID列数据
insert into student (ID) values(04),(05);

运行后在左边数据库导航栏中打开表student查看,可以看到,2次插入数据成功,仅插入的ID数据“04”和“05”所对应的name和age为空。

如果我们要插入的数据,每组都包括表中所有属性,可以写得更简便。

# 插入全部列数据
insert into student (ID,name,age) values(01,'加菲猫',3),(02,'欧迪',2),(03,'乔恩',23);

可以写成:

# 插入全部列数据
insert into student values(01,'加菲猫',3),(02,'欧迪',2),(03,'乔恩',23);

这也是列名加上了方括号的原因。

2.在表student中删除数据。

use test;
create table student(ID int,name varchar(10),age int
);
# 插入全部列数据
insert into student (ID,name,age) values(01,'加菲猫',3),(02,'欧迪',2),(03,'乔恩',23);
# 仅插入ID列数据
insert into student (ID) values(04),(05);
#删除name为乔恩的数据
delete from student where name='乔恩';
#删除age<3的数据
delete from student where age<3;

运行后:

注意:

# 数据删除

DELETE FROM 表名称 [WHERE 条件判断]

在数据删除的语法中,“WHERE 条件判断”在方框内,是可选的,如果我们不选,就会删除全部数据。

3.更新表student中的数据。

use test;
create table student(ID int,name varchar(10),age int
);
# 插入全部列数据
insert into student (ID,name,age) values(01,'加菲猫',3),(02,'欧迪',2),(03,'乔恩',23)
#将ID=03的name修改为Mary
update student set name='Mary' where ID=03;

运行后:

2.2.3 DQL(数据查询)

下面我们将从基础查询、分组聚合、排序分页3个方面认识DQL。

我们先建立一个表info:

use test;
create table info(ID int,name varchar(10),sex varchar(10),age int
);
insert into info(ID,name,sex,age) values(01,'张三','男',26),(02,'李四','女',16),(03,'王五','男',56),(04,'小明','男',6),(05,'coco','女',36);

生成的图表:

下面的操作基于此表。

2.2.3.1基础查询

通过 SELECT 关键字开头的 SQL 语句,进行数据的基础查询,语法如下:

SELECT 字段列表 |* FROM 表;  #从(FROM)表中选择(SELECT )某些列进行展示

SELECT 字段列表 |* FROM 表 WHERE 条件判断;   #从(FROM)表中选择(SELECT )某些符合条件的列进行展示 ,也称为过滤

基于表info进行查询:

代码:

#查询name和age两个列
select name,age from info;
#查询全部列
select ID,name,sex,age from info;
#查询全部列的简便写法
select * from info;

过滤查询:

代码:

#查询ID和name两个列,年龄<30岁
select ID,name from info where age<30;
#查询全部列,name为coco
select ID,name,sex,age from info where name='coco';
#简便写法
select * from info where name='coco';
2.2.3.2分组聚合

分组聚合应用场景非常多,如:统计班级中,男生和女生的人数。按需要分组并统计每个组的人数,这就称之为:分组聚合。

基础语法:

SELECT 字段 | 聚合函数 FROM 表 [WHERE 条件判断] GROUP BY 列;

聚合函数:

  • SUM(列) 求和
  • AVG(列) 求平均值
  • MIN(列) 求最小值
  • MAX(列) 求最大值
  • COUNT(列 | *) 求数量

基于表info进行分组查询:

注意:SELECT 中,除了聚合函数外, GROUP BY后面出现了哪个列,哪个列在能出现SELECT 中。

代码:

#按照性别分组,统计各组人数
select sex ,count(*) from info group by sex;
#按照性别分组,统计平均年龄
select sex,avg(age) from info group by sex;
#按照性别分组,统计最大最小年龄
select sex,max(age),min(age) from info group by sex;
2.2.3.3排序分页

使用 ORDER BY 关键字可以对查询的结果指定某个列进行排序。

语法:

SELECT 字段 | 聚合函数 FROM 表

WHERE 条件判断 

GROUP BY 列

ORDER BY 列 [ASC|DESC];

基于表info进行查询,并对查询结果进行排序:

代码:

#按照年龄升序排列结果
select * from info order by age asc;
#按照ID降序排列结果
select * from info order by ID desc;

使用 LIMIT 关键字可以对查询结果进行数量限制或分页显示。

语法:

SELECT 字段 | 聚合函数 FROM 表

WHERE 条件判断 

GROUP BY 列

ORDER BY 列 [ASC|DESC]

LIMIT n [,m];

基于表info进行查询,并对查询结果进行限制:

代码:

#查询结果只保留3条
select * from info limit 3;
#找出年龄最大的2个人
select * from info order by age desc limit 2;
#从第3条开始,取后面2条
select * from info limit 3,2;

注意:

  • 关键字WHERE 、 GROUP BY 、 ORDER BY 、 LIMIT 均可按需求省略。
  • SELECT 和 FROM 是必写的。
  • 执行顺序:FROM -> WHERE -> GROUP BY 和聚合函数 ->SELECT -> ORDER BY -> LIMIT

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

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

相关文章

音频/视频提取器:Python和moviepy实现

在这篇博客中,我们将深入探讨一个使用Python和wxPython构建的音频/视频提取器应用程序。这个应用程序允许用户从视频文件中提取音频,或者从音频文件中截取特定时间段。让我们逐步分析这个程序的功能和实现。 C:\pythoncode\new\MP3towav.py 全部代码 import wx import os imp…

Vue day06(路由进阶)

一、路由进阶 1. 路由模块封装 所有的路由配置都堆在main.js里不合适&#xff0c;将路由模块提取出来&#xff0c;利于维护 放到 src / router 文件夹下 的 index.js 2. 声明式导航 / 声明式导航传参&#xff08;查询参数传参&动态路由传参&#xff09; 声明式导航…

6.2 URDF集成Rviz基本流程

前面介绍过&#xff0c;URDF 不能单独使用&#xff0c;需要结合 Rviz 或 Gazebo&#xff0c;URDF 只是一个文件&#xff0c;需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型&#xff0c;当前&#xff0c;首先演示URDF与Rviz的集成使用&#xff0c;因为URDF与Rviz的集成较之于…

Java进阶之路:构造方法

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f947;博主昵称&#xff1a;小菜元 &#x1f35f;博客主页…

Javascript算法——二分查找

1.数组 1.1二分查找 1.搜索索引 开闭matters&#xff01;&#xff01;&#xff01;[left,right]与[left,right) /*** param {number[]} nums* param {number} target* return {number}*/ var search function(nums, target) {let left0;let rightnums.length-1;//[left,rig…

波浪理论(Elliott Wave Theory)

拉尔夫纳尔逊艾略特 拉尔夫纳尔逊艾略特&#xff08;1871年07月28日-1948年01月15日&#xff09;&#xff0c;1871年7月28日出生在美国堪萨斯州的玛丽斯维利镇&#xff0c;是一名杰出的会计师&#xff0c;作家及金融市场分析大师&#xff0c;以其著名的波浪理论而留名于世。 波…

ubuntu 安装 MySql5.7(基于ARM架构 源码安装)

1 系统需求 目标安装MySql5.7版本。 系统环境&#xff1a; oracle云主机,arm架构 确认主机架构如下图&#xff1a; 查看是否有5.7版本的源 apt-cache search mysql | grep mysql-server 执行后发现只有8.0版本的&#xff0c;5.7版本只能通过源码安装了。 2 下载MySql源码…

MATLAB边缘检测

一、目的&#xff1a; 熟悉边缘检测原理&#xff0c;并运用matlab软件实现图像的canny边缘检测&#xff0c;体会canny边缘检测的优缺点。 二、内容&#xff1a; 编写matlab程序&#xff0c;实现对lena图像的边缘检测&#xff0c;输出程序运行结果。 三、原理或步骤&#x…

多线程(七):单例模式指令重排序

目录 1. 单例模式 1.1 饿汉模式 1.2 懒汉模式 2. 懒汉模式下的问题 2.1 线程安全问题 2.2 如何解决 --- 加锁 2.3 加锁引入的新问题 --- 性能问题 2.4 指令重排序问题 2.4.1 指令重排序 2.4.2 指令重排序引发的问题 1. 单例模式 单例模式, 是设计模式中最典型的一种模…

VMware:Windows主机与CentOS虚拟机文件互传文件共享

注意&#xff1a;本文使用Win10与VMware17pro互传 1. 本地创建文件夹 如下图创建一个文件夹&#xff0c;名字任意 2. 设置本地文件夹权限 右键文件夹 - - 属性 - - 共享 - - 高级共享 - - 权限 - - 如下图全部勾选 - - 应用 - - 确认 3. VMware中设置共享文件夹路径 第一步…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式&#xff1a; 在当今信息爆炸的时代&#xff0c;如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

【动态规划】【路径问题】下降路经最小和、最小路径和、地下城游戏

4. 下降路径最小和 931. 下降路径最小和 算法原理 确定状态表示 dp[i][j] 表示&#xff1a;到达 [i, j] 位置&#xff0c;最小的下降路径 状态转移方程 dp[i][j] 从 [i-1, j-1] 到达 [i, j] > dp[i-1][j-1] m[i][j]从 [i-1, j] 到达 [i, j] > dp[i-1][j] m[i][j]从 …

已解决:ModuleNotFoundError: No module named ‘pip‘

[已解决] ModuleNotFoundError: No module named ‘pip‘ 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 手动安装或升级 pip2. 使用 get-pip.py 脚本3. 检查环境变量配置4. 重新安装 Python 并确保添加到 PATH5. 在虚拟环境中安装 pip6. 使用 conda 安装 pip&…

智简魔方业务管理系统v10 好用的IDC业务管理软件

智简魔方业务管理系统v10&#xff0c;您一直在寻找的IDC业务管理软件&#xff0c;基于PHPMYSQL开发的一套小型易于部署的业务管理核心&#xff0c;具有极强的扩展能力&#xff0c;非常方便的安装方式&#xff0c;用户可在5分钟内部署属于自己的业务管理系统&#xff0c;ZJMF-CB…

路由表来源(基于华为模拟器eNSP)

概叙 在交换网络中&#xff0c;若要实现不同网段之间的通信&#xff0c;需要依靠三层设备&#xff08;路由器、三层交换机等&#xff09;&#xff0c;而路由器只知道其直连网段的路由条目&#xff0c;对于非直连的网段&#xff0c;在默认情况下&#xff0c;路由器是不可达的&a…

Goland 搭建Gin脚手架

一、使用编辑器goland 搭建gin 打开编辑器 新建项目后 点击 create 二、获得Gin框架的代码 命令行安装 go get -u github.com/gin-gonic/gin 如果安装不上&#xff0c;配置一下环境 下载完成 官网git上下载 这样就下载完成了。、 不过这种方法需要设置一下GOPATH 然后再执…

【An】Animate 2024 for【Mac】 An动画设计制作软件 安装教程——保姆级教程

Mac分享吧 文章目录 【An】Animate 2024 Mac版 An动画设计制作软件 安装完成&#xff0c;打开效果Mac电脑【An】Animate 2024 动画设计制作软件——v24.0.4⚠️注意事项&#xff1a;1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装AntiCC组件&#xff0c;步骤见文章或下图3️…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…

嘉立创EDA个人学习笔记2(绘制51单片机核心板)

前言 本篇文章属于嘉立创EDA的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 【教程】零基础入门PCB设计-国一学长带你学立创EDA专业版 全程保姆…