百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

数据查询语言SQL基本语法(数据查询sql语言有哪些)

sinye56 2024-09-23 23:51 5 浏览 0 评论

SQL(Structured Query Language)即结构化查询语言,是用来管理和处理关系型数据库的标准计算机语言。其语法非常丰富,允许用户执行各种操作,包括但不限于查询、插入、更新和删除数据,以及创建和修改数据库表结构等任务。以下是一些SQL语法的主要组成部分及其详细说明:


数据查询 - DQL (Data Query Language)


SELECT Statement


-- 基本查询

SELECT column1, column2, ...

FROM table_name;


-- 选择所有列

SELECT *

FROM table_name;


-- 使用DISTINCT消除重复行

SELECT DISTINCT column1

FROM table_name;


-- 条件查询

SELECT *

FROM table_name

WHERE condition1 AND/OR condition2;


-- 条件可以包含比较运算符(=, <>, !=, >, <, >=, <=, BETWEEN, LIKE)

-- 例如:

SELECT *

FROM Students

WHERE Age > 18 AND Gender = 'Male';


-- 模糊查询

SELECT *

FROM Employees

WHERE Name LIKE '%John%'; -- 查找名字包含'John'的所有员工


-- 排序

SELECT *

FROM table_name

ORDER BY column1 ASC|DESC, column2 ASC|DESC;


-- 分组与聚合函数

SELECT column1, COUNT(*), AVG(column2)

FROM table_name

GROUP BY column1;


-- HAVING子句用于过滤GROUP BY后的结果

SELECT column1, COUNT(*)

FROM table_name

GROUP BY column1

HAVING COUNT(*) > 10;


数据操作 - DML (Data Manipulation Language)


INSERT Statement


-- 插入新行

INSERT INTO table_name (column1, column2, ...)

VALUES (value1, value2, ...);


-- 插入多行

INSERT INTO table_name (column1, column2)

VALUES (value1_1, value2_1),

(value1_2, value2_2),

...


UPDATE Statement


-- 更新现有行

UPDATE table_name

SET column1 = new_value1, column2 = new_value2

WHERE condition;


DELETE Statement


-- 删除满足条件的行

DELETE FROM table_name

WHERE condition;


数据定义 - DDL (Data Definition Language)


CREATE Statement


-- 创建表

CREATE TABLE table_name (

column1 datatype constraints,

column2 datatype constraints,

...

);


-- 示例:

CREATE TABLE Students (

ID INT PRIMARY KEY,

Name VARCHAR(100),

Age INT CHECK (Age >= 18),

EnrollmentDate DATE NOT NULL

);


ALTER Statement


-- 修改表结构

ALTER TABLE table_name

ADD COLUMN new_column datatype constraints;


-- 或者修改已有列

ALTER TABLE table_name

MODIFY COLUMN column1 datatype constraints;


DROP Statement


-- 删除表

DROP TABLE table_name;


数据控制 - DCL (Data Control Language)


GRANT Statement


-- 授予用户权限

GRANT privileges ON object TO user;


-- 示例:

GRANT SELECT, INSERT ON table_name TO 'username';


REVOKE Statement


-- 撤销用户的权限

REVOKE privilege ON object FROM user;


其他特性


?JOINs:用于合并多个表的数据


SELECT *

FROM table1

JOIN table2

ON table1.key = table2.foreign_key;


?UNION, INTERSECT, EXCEPT:集合操作符,用于合并或从结果集中排除重复行。

?SUBQUERIES:嵌套查询,将一个查询的结果作为另一个查询的部分。

?TOP/LIMIT:用于限制查询结果的数量(在SQL Server中使用TOP,在MySQL和其他一些数据库中使用LIMIT)。

?窗口函数:用于计算基于一组相关行(窗口)的值,如RANK(), LEAD(), LAG()等。


每种SQL方言(如MySQL、SQL Server、Oracle、PostgreSQL等)可能在某些细节上有所不同,但上述大部分核心语法是通用的。实际应用时,请根据所使用的数据库管理系统查阅相应的文档以获得最准确的语法支持。

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: