首页 > 数据库 >SQL语法基础知识总结

SQL语法基础知识总结

时间:2024-11-20 19:19:06浏览次数:3  
标签:语句 数据库 DML 基础知识 语法 SQL 数据 SELECT

目录

基本概念

数据库术语

SQL 语法

SQL 语法结构

SQL 语法要点

SQL 分类

数据定义语言(DDL)

数据操纵语言(DML)

事务控制语言(TCL)

数据控制语言(DCL)

增删改查

插入数据

更新数据

删除数据

查询数据


基本概念

数据库术语

  • 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。
  • 数据表(table) - 某种特定类型数据的结构化清单。
  • 模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。
  • 列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。
  • 行(row) - 表中的一个记录。
  • 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。

SQL 语法

SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。

SQL 语法结构

SQL 语法结构包括:

  • 子句 - 是语句和查询的组成成分。(在某些情况下,这些都是可选的。)
  • 表达式 - 可以产生任何标量值,或由列和行的数据库表
  • 谓词 - 给需要评估的 SQL 三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程。
  • 查询 - 基于特定条件检索数据。这是 SQL 的一个重要组成部分。
  • 语句 - 可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
SQL 语法要点
  • SQL 语句不区分大小写,但是数据库表名、列名和值是否区分,依赖于具体的 DBMS 以及配置。例如:SELECTselectSelect 是相同的。
  • 多条 SQL 语句必须以分号(;)分隔
  • 处理 SQL 语句时,所有空格都被忽略

SQL 语句可以写成一行,也可以分写为多行。

-- 一行 SQL 语句

UPDATE user SET username='robot', password='robot' WHERE username = 'root';

-- 多行 SQL 语句
UPDATE user
SET username='robot', password='robot'
WHERE username = 'root';

SQL 支持三种注释:

## 注释1
-- 注释2
/* 注释3 */

SQL 分类

数据定义语言(DDL)

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

DDL 的主要功能是定义数据库对象

DDL 的核心指令是 CREATEALTERDROP

数据操纵语言(DML)

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

DML 的主要功能是 访问数据,因此其语法都是以读写数据库为主。

DML 的核心指令是 INSERTUPDATEDELETESELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。

事务控制语言(TCL)

事务控制语言 (Transaction Control Language, TCL) 用于管理数据库中的事务。这些用于管理由 DML 语句所做的更改。它还允许将语句分组为逻辑事务。

TCL 的核心指令是 COMMITROLLBACK

数据控制语言(DCL)

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

DCL 的核心指令是 GRANTREVOKE

DCL 以控制用户的访问权限为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有:CONNECTSELECTINSERTUPDATEDELETEEXECUTEUSAGEREFERENCES

根据不同的 DBMS 以及不同的安全性实体,其支持的权限控制也有所不同。

我们先来介绍 DML 语句用法。 DML 的主要功能是读写数据库实现增删改查。

增删改查

增删改查,又称为 CRUD,数据库基本操作中的基本操作。

插入数据

INSERT INTO 语句用于向表中插入新记录。

插入完整的行

# 插入一行
INSERT INTO user
VALUES (10, 'root', 'root', '[email protected]');
# 插入多行
INSERT INTO user
VALUES (10, 'root', 'root', '[email protected]'), (12, 'user1', 'user1', '[email protected]'), (18, 'user2', 'user2', '[email protected]');

插入行的一部分

INSERT INTO user(username, password, email)
VALUES ('admin', 'admin', '[email protected]');

插入查询出来的数据

INSERT INTO user(username)
SELECT name
FROM account;

更新数据

UPDATE 语句用于更新表中的记录。

UPDATE user
SET username='robot', password='robot'
WHERE username = 'root';

删除数据

  • DELETE 语句用于删除表中的记录。
  • TRUNCATE TABLE 可以清空表,也就是删除所有行。说明:TRUNCATE 语句不属于 DML 语法而是 DDL 语法。

删除表中的指定数据

DELETE FROM user
WHERE username = 'robot';

清空表中的数据

TRUNCATE TABLE user;

查询数据

SELECT 语句用于从数据库中查询数据。

DISTINCT 用于返回唯一不同的值。它作用于所有列,也就是说所有列的值都相同才算相同。

LIMIT 限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。

  • ASC:升序(默认)
  • DESC:降序

查询单列

SELECT prod_name
FROM products;

查询多列

SELECT prod_id, prod_name, prod_price
FROM products;

查询所有列

SELECT *
FROM products;

查询不同的值

SELECT DISTINCT
vend_id FROM products;

限制查询结果

-- 返回前 5 行
SELECT * FROM mytable LIMIT 5;
SELECT * FROM mytable LIMIT 0, 5;
-- 返回第 3 ~ 5 行
SELECT * FROM mytable LIMIT 2, 3;

标签:语句,数据库,DML,基础知识,语法,SQL,数据,SELECT
From: https://blog.csdn.net/aaaa_1111111/article/details/143865956

相关文章

  • JavaScript初识及基本语法详解
    JavaScript是一种轻量级的编程语言,它可以在网页中嵌入,用来控制网页的动态效果和用户交互。JavaScript是所有现代网页浏览器都支持的脚本语言,它可以让网页变得“活”起来,实现各种复杂的功能。JavaScript的基本语法JavaScript的语法基础与Java语言类似,但它是解释型语言,不需要编......
  • MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
    MySQL中的InnoDB存储引擎支持四种事务隔离级别,这些级别定义了事务在并发环境中的行为和相互之间的可见性。以下是这四种隔离级别的名称以及它们之间的区别:读未提交(ReadUncommitted)特点:这是最低的隔离级别,允许事务读取未提交的数据。问题:可能导致脏读、不可重复读和幻读。区......
  • Java语法糖详解
    什么是语法糖?语法糖(SyntacticSugar)也称糖衣语法,是英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。 有意思的是,在编程领域,除了语法......
  • MyBatis-Plus 学习笔记-条件构造器(不想写sql)
    MyBatis-Plus提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的SQL语句,从而提高开发效率并减少SQL注入的风险。在MyBatis-Plus中,Wrapper类是构建查询和更新条件的核心工具。以下是主......
  • 银河麒麟V10 安装postgresql-word
    安装postgresql-17.01、下载安装包Postgresql版本号库:http://www.postgresql.org/ftp/source/打开终端输入:wgethttps://ftp.postgresql.org/pub/source/v17.0/postgresql-17.0.tar.bz22、解压tarxjvfpostgresql-17.0.tar.bz23、创建用户1.添加用户添加:useradd用......
  • SQLServer数据库里的递归CTE详细说明
     SQLServer数据库里的递归CTE详细说明  用实例来说明:样例: --解释CTE递归的运算逻辑(代码不一定可用,但逻辑准确)WITHBOM_CTEAS(--基础层(B段):选择特定BOM物料编码的所有BOM条目,并设置层级为1SELECTBOMNOAS'TopBOM',COMPID,REQQTY,1AS......
  • 在Sql Server中数据放在机械硬盘中和放在固态硬盘中有哪些区别
    1.数据存储原理方面机械硬盘机械硬盘通过磁头在高速旋转的盘片上进行数据的读写操作。盘片每分钟转速(RPM)常见的有5400转、7200转等,数据存储在盘片的磁性涂层上,磁头需要移动到对应的磁道(Track),再定位到具体的扇区(Sector)才能读写数据,这个过程涉及机械部件的物理运动,比如磁头......
  • MYSQL|索引
    MYSQL|索引索引是关系数据库中对某一列或多个列的值进行预排序的数据结构通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。......
  • 【MySQL】MySQL表的基本操作入门指南
    ......
  • MySql Is Null和is not null索引失效的问题
    简介mysql的sql查询语句中使用isnull、isnotnull、!=对索引并没有任何影响,并不会因为where条件中使用了isnull、isnotnull、!=这些判断条件导致索引失效而全表扫描。mysql官方文档也已经明确说明isnull并不会影响索引的使用。事实上,导致索引失效而全表扫描的通常是因为一......