对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。

著名的大型商用数据库 Oracle、DB2、Sybase、SQL Server,开源的数据库 PostgreSQL、MySQL,甚至一些小型的数据库 Access 等都支持 SQL。近些年蓬勃发展的 NoSQL 系统最初是宣称不再需要 SQL 的,后来也不得不修正为 Not Only SQL,来拥抱 SQL。

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。与其他程序设计语言(如 C语言、Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。

SQL 具有如下优点。

  • 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
  • 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java
    等语言中使用。
  • 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
  • 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

SQL 包含以下 4 部分:

1)数据定义语言(Data Definition Language,DDL)

用来创建或删除数据库以及表等对象,主要包含以下几种命令:

  • DROP:删除数据库和表等对象
  • CREATE:创建数据库和表等对象
  • ALTER:修改数据库和表等对象的结构

2)数据操作语言(Data Manipulation Language,DML)

用来变更表中的记录,主要包含以下几种命令:

  • SELECT:查询表中的数据
  • INSERT:向表中插入新数据
  • UPDATE:更新表中的数据
  • DELETE:删除表中的数据

3)数据查询语言(Data Query Language,DQL)

用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。

4)数据控制语言(Data Control Language,DCL)

用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:

  • GRANT:赋予用户操作权限
  • REVOKE:取消用户的操作权限
  • COMMIT:确认对数据库中的数据进行的变更
  • ROLLBACK:取消对数据库中的数据进行的变更

下面是一条 SQL 语句的例子,该语句声明创建一个名叫 students 的表:

CREATE TABLE students (student_id INT UNSIGNED,name VARCHAR(30) ,sex CHAR(1),birth DATE,PRIMARY KEY(student_id)
);

该表包含 4 个字段,分别为 student_id、name、sex、birth,其中 student_id 定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条 SQL 声明语句,将在 students 表中插入一条数据记录:

INSERT INTO students (student_id, name, sex, birth) VALUES (41048101, '歪比巴卜', '1', '2013-02-14');

执行完该 SQL 语句之后,students 表中就会增加一行新记录,该记录中字段 student_id 的值为“41048101”,name 字段的值为“歪比巴卜”。sex 字段值为“1”,birth 字段值为“2013-02-14”。

再使用 SELECT 查询语句获取刚才插入的数据,如下:

SELECT name FROM students WHERE student_id=41048101;

上面简单列举了常用的数据库操作语句,在这里留下一个印象即可,后面我们会详细介绍这些知识。

注意:

SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性。本教程也按照这种方式组织 SQL 语句。大多数数据库都支持通用的 SQL 语句,同时不同的数据库具有各自特有的 SQL 语言特性。

拓展

标准 SQL 是指符合国际标准的 SQL,而非某个数据库厂商的 SQL 语法(如:Microsoft SQL Server 的 T-SQL,Oracle 的 PL/SQL,MySQL)。

标准 SQL 可以在任何数据库中使用,而数据库厂商的 SQL 只适合它们对应的数据库,如 T-SQL 只适合 Microsoft SQL Server。

本教程讲解的 SQL 是专门针对 MySQL 的,虽然多数语法也适用于其它 DBMS,但不是所有 SQL 语法都是完全可移植的。

1、SQL是什么?它能做什么?相关推荐

  1. oracle spa sta 使用,Oracle的SQL Tuning Advisor(STA) 到底做了什么?

    5.使用STA优化awr中SQL的脚本 robin@SZDB:~/dba_scripts/custom/sql> more tune_awr_sql.sql SET ECHO OFF TERMO ...

  2. sql datetime比较大小_SQL做题小技巧

    数据分析必学必会当属SQL取数,毕竟要分析首先需要有数嘛. sql的语法教程往上一搜就有很多,本文主要将介绍几个sql小技巧,灵活用上技能做对大部分的笔试题. 由于很多笔试是在牛客网上完成的,所以本文 ...

  3. 在sql当中为了让数据做缓存做with as的操作

    今天看别人的代码,突然发现之前理解的sql的with as的用法有新的理解. 之前理解的with as只是想着做单表的union all 操作时才使用,今天发现在可以使用逗号做分割,做缓存不同的表数据 ...

  4. php sql语句过滤,php如何做sql过滤

    php如何做sql过滤 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地 ...

  5. oracle关联视图查询满_对于复杂的SQL, Oracle是怎么做的?

    很多人经常说,同样的SQL在Oracle中的查询性能要比在MySQL中好很多,大家有没有深究过其中的原因呢?除了MySQL 8.0之前不支持hash-join以外,还有其他原因吗?其实很多时候,出现这 ...

  6. 统计出库数,sql查询数据,sqldf做透视表,循坏处理数据

    #设置工作路径 D:\资料\天富盈\天富盈\erp\erp录入 setwd("D:\\资料\\程序文档")#设置文件名 path="C:\\Users\\Jarvis\\ ...

  7. 使用动态SQL中的if标签做条件判断的几种用法和注意点

    使用中踩到的坑记录一下(大神请略过,我只是个菜菜,忽喷!!!万分感谢!!!) <mapper namespace="dynamic"><resultMap id= ...

  8. mysql sql 除法函数_SQL如何做除法

    展开全部 SQL做除法的步骤: select t.[origin-destination],t.[SH/LANE/MOT] /(select count(1) from ['TMS$']) AS PE ...

  9. SQL CTE能帮助我做什么

    由于程序员所在公司环境不太一样,所以造成程序员在IT技能方面有比较大的差别.例如有些公司,程序员大多只关心业务逻辑处理或者是页面UI,当然我指的是web应用程序相关的程序员.因为有可能所有的底层数据都 ...

  10. sql server 2008 您所做的更改要求删除并重新创建以下表

    启动SQL Server 2008 Management Studio 工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可. 转载于:https ...

最新文章

  1. 《MonoTouch开发实践指南》一3.6 小结
  2. mysql5.718解压版安装_MySQL v5.7.18 版本解压安装
  3. http抓包神器:Charles for Mac 特别版v4.6
  4. Zookeeper权限控制ACL详解
  5. 用SAX2方式解析XML
  6. 美国 AI 博士爆料:掌握这9个要点,赚钱不再艰难
  7. IntelliJ IDEA 2019.1 EAP5 发布,Maven 构建输出统一查看
  8. 值得关注的5款低代码平台推荐
  9. python操作crontab定时任务
  10. ibm刀片服务器系统瘫痪,ibm刀片服务器系统安装资料
  11. 利用python爬取租房信息网_Python3爬虫实战:以爬取小猪短租租房信息为例
  12. 如何自制daplink_DAPLink高速版
  13. magicbook java开发,作为一名IT编辑 荣耀MagicBook这三点打动了我
  14. 关于王羲之的《兰亭集序》
  15. 为魅族助攻,联发科发布Helio P25处理器
  16. http响应最大时长 nginx_请问一下该如何用nginx 设置响应时间?
  17. Activity A 调用Activity B 里的方法探索
  18. 基于51单片机的蓄电池容量检测系统的设计(设计资料)
  19. 周志华、贾扬清入选!2022中国高被引学者榜单揭晓,计算机界214人上榜
  20. B站UP主涨粉周榜排行榜来啦,腾格尔献唱草原版《孤勇者》,周涨粉近30W

热门文章

  1. ML/DL之预测分析类:利用机器学习算法进行预测分析的简介、分析、代码实现之详细攻略
  2. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片
  3. Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题
  4. Gluon.vision的几类数据集
  5. VOS3000设置落地网关优先级
  6. 实验探究 ioremap
  7. python正则表达式——regex模块
  8. (chap5 web服务器) 保存资源的缓存
  9. Bitcoin0.21版 公链开发(5) PHP集成到Apache中(windows平台)
  10. java大乘期(33)----java进阶(springboot基础(1)----springboot基本概念)