新手怎么快速学会并上手SQL语言?收藏版

news2024/11/27 12:53:47

SQL可以说是程序员、数据库管理员DBA、数据分析师等需要做数据处理和分析岗位最常用的程序语言了。

尤其是一些岗位,工作中并非以数据库为核心,只是偶尔用些数据不需要深度学习,不得不自己去做一些取数的事情,只要学会通过SQL取数就能扫清职场的绊脚石了。

个人认为,提出这个问题的朋友 ,其实所欠缺的并不是学习SQL的知识或资料,而缺的是学习方法和信心。这里,无意推荐任何SQL参考书,任何学习材料下载,主要是分享一点学习SQL的方向和心得。

在这里插入图片描述

一,搞清楚SQL是什么?

SQL被称为结构化查询语言,英文Structured Query Language的缩写,无需多说。

在进一步解读之前,先搞清楚SQL的读音,要不然容易贻笑大方。SQL可以分开读这三个字母S - Q - L ,也可以连起来读: /ˈsiːkwəl/ ,同sequel单词的读音。

SQL也是一种编程语言,只不过是一种与数据库打交道的数据库语言,它拥有一套独特的操作命令集。只不过,SQL是一种面向集合的语言,每个命令的操作对象都是一个或多个表,结果也是一个表。

为了可以在不同数据库上执行命令集,SQL有一个放之四海而皆准的国际标准。1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后被国际标准化组织(ISO)采纳为国际标准。1992年,ISO又更新一版标准SQL-92,又称SQL2。1999年,ANSI也更新了一版新标准SQL-99,又称SQL3。后期,SQL标准仍然更新,但是基本是遵照这个框架修修补补。

SQL具体是干什么的呢?简单举例说明一下。

工作中,非技术人员经常要求技术帮忙取个数,技术会根据需求做数据查询,然后才能把查询结果导出来;有时候,又需要在表里加一个字段(例如电话号码等)用来调整数据表的结构,也可以叫数据库程序设计。

不过,大量SQL操作都是用于数据的增删改查。用一个大家比较熟悉的场景打个比方,SQL操作就像在百度做一次搜索行为,先输入关键字再点击“百度一下”开始搜索。百度后台数据库就会根据需求匹配一个模糊搜索结果展现给用户。当大家发现结果太多,无法精准找到结果时,就需要再增加搜索条件。

当然,SQL语言不仅可以直接面对数据库操作,还可以嵌入到其他语言中执行。例如,SQL可以作为一种嵌入式语言,嵌入到高级语言(例如C、COBOL、FORTRAN、PL/1)程序中,供开发者使用。这种需求一般都是程序员使用的较多,非技术人员了解一下就可以了。

二,SQL数据库体系结构

上一段内容主要想告诉初学者,SQL是一种可以通过标准命令集来操作数据库的语言。

既然,我们需要通过一套命令集对数据库进行操作,进一步我们需要了解操作对象——数据库的体系结构。

1、数据库(database):存放数据的容器,一个数据库由一个或一组数据表组成。
2、数据表(table):存放数据的二维表格,一个数据表由一组数据记录组成。
(1)列(column):数据表中的一个字段,一个数据表由一个或多个列组成。

(2)行(row):数据表中的一个记录。

这里,SQL数据表可以分为三种类型:基本表、视图和导出表。不同人叫法不同,但是含义相同,基本表是实际存储在数据库中的表,视图是由若干基本表或视图构成的表的定义,而导出表是执行了查询时产生的表。

初学者还应该清楚一张数据表里所包含的这些关键信息:主键、外键、约束、索引和DLL等,搞清楚它们才算是把数据表的五脏六腑看得清清楚楚。

说了这么多数据表的关键信息,进一步,数据表中填入的数据类型也要搞搞清楚。什么是数据类型?它指的是当我们在数据库里创建一个表时,用于存储什么样的数据,它是一个标签,能在任意一列、变量或者表达式中区别出不同的数据类型。在实际开发过程中,选择合适的数据类型,可以提高数据库性能。

常用的数据类型主要包括字符串型、时间日期型、数值型等三大类,其中每一大类中还有细分,请初学者务必记牢。当然在不一样的数据库文件中,同一种数据类型很可能有不一样的叫法。

假如,一张员工加班信息表中各字段的数字类型,姓名为“张三”,加班日期是“2月21日”,加班时长是“100”分钟,其中姓名为字符串型,日期是时间日期型,时长是数值型。

三,SQL有哪些命令集

了解操作数据库那些可操作的对象之后,前面算是把SQL设计的理论知识基本交代清楚了。下面是SQL具体涉及的命令集。

首先看一下,SQL语言的分类:

1、数据定义语言(DDL)
数据定义语言(Data Definition Language,DDL)是 SQL 语言集中负责数据结构定义与数据库对象定义的语言。

DDL主要功能是定义数据库对象,核心指令是 Create、Alter、Drop。

2、数据操纵语言(DML)
数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。

DML 主要功能是访问数据,因此其语法都是以读写数据库为主,核心指令是 Insert、Update、Delete、Select。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。

3、事务控制语言(TCL)
事务控制语言 (Transaction Control Language, TCL) 用于管理数据库中的事务。

TCL主要用于管理由 DML 语句所做的更改,还允许将语句分组为逻辑事务,核心指令是 Commit、Rollback。

4、数据控制语言(DCL)
数据控制语言 (Data Control Language, DCL) 是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。

DCL以控制用户的访问权限为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有:Connect、Select、Insert、Update、Delete、Execute、Usage、References。

DCL 的核心指令是 Grant、Revoke。

举例说明SQL语句的句法:
选择:select * from table1 where
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where
更新:update table1 set field1=value1 where

对于初学者来说,熟悉这些常用的SQL命令集,没有捷径可走,只能通过大量实操加深理解和记忆。

四、SQL的高阶学习

熟悉以上这些,初学者算是把SQL的基础知识大部分都掌握了,勤奋练习应该可以完成日常简单的取数需求了。

但是,更高阶的SQL语句仍然需要不断优化。同样一个需求,高手写的SQL语句只扫描了2万行数据,但是初学者写的需要扫描20万行,甚至数据量大到直接把系统卡死了。这一定不是最优的SQL语句。

所谓的SQL优化,就是指将一条SQL写的更加简洁,让SQL的执行速度更快,易读性与维护性更好。可见,SQL优化是属于那种没有最好,只有更好的持续追求。

一个高效的SQL语句抵得上千军万马,这话虽然有点夸张,但是也充分说明了SQL优化的重要价值。随着企业业务量逐渐增多,需求复杂度增大,SQL的执行效率对程序的运行效率的影响逐渐增大。

企业内部会做评估,相对于改造代码,优化SQL语句哪个成本最低。显然,大部分情况下SQL优化是常态化的要求。举个简单的例子,假如某个接口出现了性能问题,需要做优化,你会优先考虑改造源代码,还是先试试优化SQL语句。

初学者还是需要记牢一些常见的SQL优化策略。

例如,避免使用Select *:实际业务场景中不需要所有的字段,尽量精确选择需要的字段;用union all 代替union:因为union会排重,排重过程需要遍历,排序,比较,更消耗CPPU资源;控制索引数量:索引不是越多越好,索引需要额外的存储空间,B+树保存索引,额外的性能消耗。

网上有很多牛人分析的SQL优化的经验,大家可以定期去学习启用。

五、SQL学习需要哪些辅助工具

工欲善其事,必先利其器。

在初学者打算投入到SQL学习之前,先要选择更利于学习的辅助工具,其中两个事情最为重要:一个选择一款数据库,第二是选择一款适合的SQL工具。

1,选择一个最容易获取的数据库
数据库,其实说全程是数据库管理系统DBMS。目前比较常见并且企业用到多的主流关系数据库有:MySQL、PostgreSQL、Oracle、SQL Server等。

其中,以开源关系型数据库MySQL应用最为广泛,几乎适用所有规模的公司业务场景,而且也比较容易获取。

2,选择一个免费易用的SQL工具
在很多高手喜欢使用数据库自带的SQL命令行,理由是习惯了命令行,省去下载破解版或免费版的安装配置过程。但是,对于初学者来说,为了更方便直观地学习SQL,还是选一款免费又简单的图形化SQL工具。

在这里插入图片描述

这里为初学者推荐一款免费又好用的Web版SQL工具——SQL Studio。

(1)不需要安装配置JDK环境,支持一键启用;

在这里插入图片描述

(2)学习更直观更容易上手,操作更灵活更方便;

(3)支持多种数据库的查询、开发、管理等功能;

(4)支持团队在线协作开发和统一权限管理;

(5)支持任意浏览器运行,而且支持局域网和外网远程访问;

(6)数千万行数据的秒级导出以及数万张表的创建,而系统不会出现卡死或闪退的情况;

(7)支持主流数据源包括PostgreSQL、MySQL、SQLite、SQL Server、Oracle、达梦、人大金仓等;
在这里插入图片描述

(8)支持中英文两种语言,可以运行在Windows、MacOS、Linux等三种操作系统上。

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

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

相关文章

PS_高低频和中性灰——双曲线

高低频 高低频磨皮:把皮肤分成两个图层,一层是纹理层也就是皮肤的毛孔。 一层是皮肤光滑层没有皮肤细节。 高频”图层为细节层,我们用图章工具修高频 “低频”图层为颜色层,我们用混合画笔修低频 原理:修颜色亮度光影…

用户投稿——详解我了解的 TDengine 以及它所在的时序数据库“战场”

作者:大数据模型本篇文章出自 2022 年“用 TDengine,写 TDengine”征文投稿活动。因为工作的关系,最近几年我接触到过各种国产数据库,唯独对 TDengine 念念不忘。在众多数据库中,TiDB 一枝独秀,OceanBase 出…

渗透中超全的Google hack语法

inurl:Login 将返回url中含有Login的网页intitle:后台登录管理员 将返回含有管理员后台的网页intext:后台登录 将返回含有后台的网页inurl:/admin/login.php 将返回含有admin后台的网页inurl:/phpmyadmin/index.php 将返回含有phpmyadmin后台的网页site:http://baidu.com inur:…

OpenStack手动分布式部署Keystone【Queens版】

目录 Keystone简介 1、登录数据库配置(在controller执行) 1.1登录数据库 1.2数据库里创建keystone 1.3授权对keystone数据库的正确访问 1.4退出数据库 2、数据库导入Keystone表(在controller执行) 2.1安装httpd mod_wsgi 2.2备…

nn.Conv2d与nn.Conv3d介绍

nn.Conv2d 1)输入的维度为: 2)输出的维度为: 其中,Cout是由参数out_channels((int) – 卷积产生的通道数)决定。 Hout和Wout计算如下: 3)在池化层的计算: …

Windows服务器使用cwRsync实现同步

软件分为客户端和服务器端 实现目的:将服务端C:\tongbu目录中的文件定时同步到客户端C:\target目录中去。 cwRsyncServer(服务端)配置步骤 1.双击运行wRsyncServer_4.1.0_Installer.exe。 2.这里创建的账户是操作系统的,创建的…

canvas初体验

canvas介绍 Canvas 最初由Apple于2004 年引入,用于Mac OS X WebKit组件,为仪表板小部件和Safari浏览器等应用程序提供支持。后来,它被Gecko内核的浏览器(尤其是Mozilla Firefox),Opera和Chrome实现&#x…

webpack实现静态资源缓存

一、配置缓存 我们使用 webpack 来打包我们的模块化后的应用程序,webpack 会生成一个可部署的/dist目录,然后把打包后的内容放置在此目录中。只要/dist目录中的内容部署到 server 上,client(通常是浏览器)就能够访问此…

OKR之剑·总结篇01:如何开好一场OKR复盘会

作者:vivo 互联网平台产品研发团队 本文是《OKR 之剑》系列之总结第 1 篇—— OKR复盘是OKR生命周期中的重要环节,起着承上启下的重要作用。本篇将和你一起探讨什么是OKR复盘、为什么要进行OKR复盘,接着向你展示团队在OKR复盘方面的实践和改…

【MyBatis】代理开发核心配置文件介绍(二)

🚗MyBatis学习第二站站~ 🚩起始站:MyBatis概述&环境搭建(一) 🚩本文已收录至专栏:数据库学习之旅 👍希望您能有所收获 一.Mapper代理开发 (1) 引入 在上一篇中我们有提到一点,MyBatis可以…

Linux原来是这么管理内存的(最透彻的一篇)

Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 Linux 内存管理是如何实现的。 基本概念 每个 Linux 进程都会有地址空间,这些地址空间由三…

堆的概念和结构以及堆排序

前言 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事&#xff0c…

Sofa-jraft的Rpc调用服务端分析

在sofa-jraft中,关于RPC的服务端是RpcServer在RpcServer中的init方法中:初始化了连接事件监听器,这个里面就是一个map,然后可以添加事件监听的处理器,初始化userProcessors, codec 是一个编码和解码器的工厂&#xff0…

VPS使用ProxySU搭建节点服务器

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删! VPS使用ProxySU搭建节点服务器 环境 contos8win10 64位ProxySU 4.1.7 服…

02-mysql高级-

文章目录mysql高级1,约束1.1 概念1.2 分类1.3 非空约束1.4 唯一约束1.5 主键约束1.6 默认约束1.7 约束练习1.8 外键约束1.8.1 概述1.8.2 语法1.8.3 练习2,数据库设计2.1 数据库设计简介2.2 表关系(一对多)mysql高级 今日目标 掌握约束的使用 掌握表关系…

自动化测试——css元素定位

文章目录一、css定位场景二、css相对定位的优点三、css的调试方法1、表达式中含有字符串:表达式中的引号一定和外面字符串的引号相反四、css基础语法1、标签定位2、class定位特别注意:当class类型的属性值包含多个分割值,$(.s_tab s_tab_1z9n…

快捷式~node.js环境搭建

1、安装包官网下载:Node.js (nodejs.org) 2、安装完成后修改环境变量 在上面已经完成了 node.js 的安装,即使不进行此步骤的环境变量配置也不影响node.js的使用 但是,若不进行环境变量配置,那么在使用命令安装 node.js全局模块 …

Linux服务:Nginx服务配置及相关模块

目录 一、Nginx配置文件 1、主配置文件解析 2、子配置文件启用 二、子配置文件使用 1、创建虚拟主机实验 2、基于端口虚拟主机实验 三、Nginx模块 1、access模块 2、自定义错误页面 3、状态页开启 一、Nginx配置文件 1、主配置文件解析 ①yum安装主配置文件位置&…

docker上发布 sunnyNgrok 实现内外网穿透,容器内执行命令

最近在使用内外网穿透的工具时发现国内版的Ngrok还挺好用的,但是在dockerHub上搜镜像时发现不知道使用哪一个,索性便自己创建一个docker容器。 1、创建自己想要创建docker镜像的文件夹,我创建的名为“sunny-Ngrok” 2、在文件内创建Dockerfi…

【C语言】预处理器

目录 1. 预处理器的工作原理 2. 预处理指令 3. 宏定义 3.1 简单的宏(对象式宏) 3.2 带参数的宏(函数式宏) 3.3 #define替换规则 3.4 #和## 3.5 带副作用的宏参数 3.6 宏和函数对比 3.7 命名约定 3.8 #undef 3.9 预定义…