SQL基础入门——SQL基础语法

1. 数据库、表、列的创建与管理

在SQL中,数据库是一个数据的集合,包含了多个表、视图、索引、存储过程等对象。每个表由若干列(字段)组成,表中的数据行代表记录。管理数据库和表的结构是SQL的基础操作。

1.1 创建数据库

SQL中使用 CREATE DATABASE 语句来创建一个新的数据库。数据库创建后,可以在该数据库中执行其他SQL操作。

CREATE DATABASE IF NOT EXISTS database_name;
  • IF NOT EXISTS:如果数据库已经存在,则不执行任何操作。
  • database_name:数据库的名称,需遵循数据库命名规范。
1.2 删除数据库

可以使用 DROP DATABASE 删除数据库,删除数据库将清除所有数据和表。

DROP DATABASE IF EXISTS database_name;
  • IF EXISTS:如果数据库存在,则删除,否则不执行任何操作。
1.3 创建表

创建表是SQL的基本操作之一。CREATE TABLE 语句用于定义表的结构,包括表的列、数据类型及其他约束条件。

  • table_name:表名。
  • column1, column2:列名。
  • datatype:列的数据类型(如 INTVARCHAR(255)DATE 等)。
  • constraint:列的约束(如 PRIMARY KEY, NOT NULL, UNIQUE 等)。

示例:创建一个简单的用户表。

CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • user_id:整数类型,自动递增,并作为主键。
  • username:字符串类型,不能为空且唯一。
  • password:字符串类型,不能为空。
  • email:字符串类型,可为空。
  • created_at:时间戳,默认值为当前时间。
1.4 删除表

使用 DROP TABLE 删除表,删除表将删除表中的所有数据及结构。

DROP TABLE IF EXISTS table_name;
1.5 修改表结构

有时我们需要修改已经创建的表,可以使用 ALTER TABLE 语句。

  • 添加列
ALTER TABLE table_name ADD column_name datatype [constraint];
  • 删除列
ALTER TABLE table_name DROP COLUMN column_name;
  • 修改列
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype [constraint];

示例:向 users 表中添加一个 age 列:

ALTER TABLE users ADD age INT;
2. 基本的SQL语句:SELECT, INSERT, UPDATE, DELETE

SQL的核心操作是数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)和数据删除(DELETE)。

2.1 SELECT:查询数据

SELECT 语句用于从一个或多个表中查询数据,支持多种查询操作,如选择列、过滤数据、排序等。

  • 基础查询
SELECT column1, column2, ... FROM table_name;
  • 查询所有列
SELECT * FROM table_name;
  • 查询条件
SELECT column1, column2 FROM table_name WHERE condition;
  • 示例:查询 users 表中所有用户名和电子邮件地址:
SELECT username, email FROM users;
2.2 INSERT:插入数据

INSERT 语句用于向表中插入数据。可以一次插入一行或多行数据。

  • 插入单行数据
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • 插入多行数据
INSERT INTO table_name (column1, column2, ...) 
VALUES (value1a, value2a, ...),
       (value1b, value2b, ...),
       ...;

示例:向 users 表插入一个新的用户:

INSERT INTO users (username, password, email) 
VALUES ('john_doe', 'password123', 'john.doe@example.com');
2.3 UPDATE:更新数据

UPDATE 语句用于修改表中已存在的记录。通过 WHERE 子句指定要更新的记录。

  • 更新单行或多行数据
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

示例:更新 users 表中 john_doe 用户的电子邮件地址:

UPDATE users SET email = 'john.doe@newdomain.com' WHERE username = 'john_doe';

注意:如果省略 WHERE 子句,所有记录都会被更新。因此,在执行 UPDATE 操作时要特别小心,避免错误地更新所有记录。

2.4 DELETE:删除数据

DELETE 语句用于删除表中的一条或多条记录。和 UPDATE 一样,WHERE 子句用于指定删除条件。

  • 删除单行或多行数据
DELETE FROM table_name WHERE condition;

示例:删除 users 表中 john_doe 用户的数据:

DELETE FROM users WHERE username = 'john_doe';

注意:如果省略 WHERE 子句,所有记录都会被删除。使用时需要格外小心,避免删除整个表的数据。

3. WHERE 子句、排序和分组(ORDER BY, GROUP BY)

SQL的 WHERE 子句用于过滤查询结果,ORDER BY 用于排序结果,GROUP BY 用于对结果进行分组操作。

3.1 WHERE 子句:条件过滤

WHERE 子句用于指定查询的条件,仅返回符合条件的记录。它支持多种条件操作符和逻辑运算符。

  • 常见条件运算符

    • =:等于
    • <>!=:不等于
    • >:大于
    • <:小于
    • >=:大于等于
    • <=:小于等于
    • BETWEEN ... AND ...:在某范围内
    • IN:在某一集合内
    • LIKE:模式匹配(常用于字符串)
    • IS NULL:为空
  • 示例:查询年龄大于25岁的所有用户:

SELECT username, age FROM users WHERE age > 25;
  • 组合多个条件:使用 AND, OR 组合多个条件。
SELECT * FROM users WHERE age > 25 AND email LIKE '%@example.com';
3.2 ORDER BY:排序

ORDER BY 用于对查询结果进行排序,默认按升序排列(ASC),如果需要降序排列,则使用 DESC

  • 按升序排序
SELECT * FROM users ORDER BY age;
  • 按降序排序
SELECT * FROM users ORDER BY age DESC;
  • 多列排序:可以指定多个列进行排序。
SELECT * FROM users ORDER BY age DESC, username ASC;
3.3 GROUP BY:分组

GROUP BY 用于将查询结果按某一列的值进行分组,并且常与聚合函数(如 COUNTSUMAVGMAXMIN 等)一起使用。

  • 基础分组查询
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
  • 示例:统计 users 表中每个年龄段的用户数量:
SELECT age, COUNT(*) FROM users GROUP BY age;
  • 使用 HAVING 进行条件过滤HAVING 用于过滤分组后的结果,它通常与 GROUP BY 一起使用,而 WHERE 子句用于过滤原始数据。
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
总结

SQL基础语法是关系型数据库的核心,涉及数据库的创建、表结构的定义、数据的增删改查等操作。掌握这些基本语法是每位开发者与数据库高效交互的基础。在实际开发中,熟练使用 SELECT 查询语句、INSERT 插入数据、UPDATE 更新数据、DELETE 删除数据以及合理利用 WHERE 子句、排序(ORDER BY)和分组(GROUP BY)能够大大提高开发效率和查询

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv11融合PIDNet中的PagFM模块及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2…

什么是代理,nodenginx前端代理详解

一. 什么是代理&#xff1f; 代理就是通过一个特殊的网络服务去访问另一网络服务的一种间接访问方式。像我们不能直接访问国外的网站&#xff0c;只能使用VPN&#xff0c;就是使用了代理 二. 前端为什么要用代理&#xff1f; 首先明确以下两个概念 &#xff08;1&#xff09…

BERT解析

BERT项目 我在BERT添加注释和部分推理代码 main.py vocab WordVocab.load_vocab(args.vocab_path)#加载vocab那么这个加载的二进制是什么呢&#xff1f; 1. 加载数据集 继承关系&#xff1a;TorchVocab --> Vocab --> WordVocab TorchVocab 该类主要是定义了一个词…

《独立开发:Spring 框架的综合应用》

一、Spring 框架概述 Spring 是一个分层的 Java SE/EE full-stack 轻量级开源框架&#xff0c;以 IoC 和 AOP 为内核&#xff0c;具有方便解耦、方便集成优秀框架、降低 Java EE API 使用难度等优点。 Spring 框架因其强大的功能以及卓越的性能而受到众多开发人员的喜爱。它是…

JMeter如何配置分布式?

一、复制两个代理机 二、代理机一 在第一个D:\install\apache-jmeter1\bin目录下&#xff0c;修改"jmeter.properties"文件 搜索"server_port"改成"server_port1999"&#xff0c; "#server.rmi.ssl.disablefalse"改成"server.r…

多目标优化算法——多目标粒子群优化算法(MOPSO)

Handling Multiple Objectives With Particle Swarm Optimization&#xff08;多目标粒子群优化算法&#xff09; 一、摘要&#xff1a; 本文提出了一种将帕累托优势引入粒子群优化算法的方法&#xff0c;使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…

物联网实验室建设方案

一、物联网实验室建设 (1) 基础理论教学云平台 唯众基础理论教学云平台是一个专为物联网相关专业教学打造的综合性在线教学平台。该平台凭借先进的技术架构和丰富的教学资源&#xff0c;为师生提供了一个高效、便捷、互动的学习环境。以下是该平台的主要特点和功能描述&#…

【汇编语言】call 和 ret 指令(一) —— 探讨汇编中的ret和retf指令以及call指令及其多种转移方式

文章目录 前言1. ret 和 retf1.1 ret 指令1.1.1 功能与理解1.1.2 程序演示 1.2 retf 指令1.2.1 功能与理解1.2.2 程序演示 2. call 指令3. 依据位移进行转移的call指令3.1 格式与功能3.1.1 格式3.1.2 功能 3.2 理解指令 4. 转移的目的地址在指令中的call指令4.1 格式与功能4.1.…

(免费送源码)计算机毕业设计原创定制:Java+B/S+SSM+Web前端开发技术+IDEA+MySQL+Navicat 有风小院

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对有风小院等问题&#xff0c;对有风小院信息…

# DBeaver 连接hive数仓

前提 前提是基于hadoop的hive服务已经启动&#xff0c;其中hive的服务包括metastore元数据服务和hiveserver2服务已经启动。hiveserver2服务在默认端口10000启动&#xff0c;且通过telnet xx.xx.xx.xx 10000 能通。 满足以上要求后&#xff0c;再可以看以下连接文档&#xff…

数据结构:链表进阶

链表进阶 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3.链表面试题4.LinkedList的使用5.1 什么是LinkedList4.2 LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 通过源码知道&#xff0c;ArrayList底层使用数组来存储元素&#xff1…

DVWA 在 Windows 环境下的部署指南

目录预览 一、靶场介绍二、前置准备1. 环境准备2.靶场下载 三、安装步骤1.配置Phpstudy2.配置数据库3.配置DVWA4.登入DVWA靶场 四、参考链接 一、靶场介绍 DVWA 一共包含了十个攻击模块&#xff0c;分别是&#xff1a; Brute Force&#xff08;暴力&#xff08;破解&#xff…

关于如何在k8s中搭建一个nsfw黄图鉴定模型

随着现在应用内图片越来越多&#xff0c;安全审查也是必不可少的一个操作了 下面手把手教你如何将huggingface中的黄图检测模型部署到自己的服务器上去 1.找到对应的模型 nsfw_image_detection 2.在本地先验证如何使用 首先安装transformers python库 pip install transform…

【linux】tar命令讲解笔记

Linux tar 命令 Linux tar&#xff08;英文全拼&#xff1a;tape archive &#xff09;命令用于备份文件。 tar 是 Linux 和 Unix 系统中用于归档文件和目录的强大命令行工具。 tar 名字来自 "tape archive"&#xff08;磁带归档&#xff09;&#xff0c;最初用于将…

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机&#xff0c;说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机&#xff0c;让用户更加专注上层&#xff0c;而不用在乎下层的一个产品。这就是JVM的跨平台&#xff0c;一次编译&#xff0c;到处运行。 而JVM中的核心功能其实就是自动…

Android音频框架总结

1、AudioFlinger&#xff1a;接收多个APP的数据&#xff0c;合并下发&#xff1b;是策略的执行者&#xff0c;例如具体如何与音频设备通信&#xff0c;如何维护现有系统中的音频设备&#xff0c;以及多个音频流的混音如何处理等等都得由它来完 成。 AudioFlinger主要包含3个主…

深度学习:自然语言处理

一、引言 自然语言处理作为人工智能领域的关键分支&#xff0c;致力于使计算机能够理解、分析和生成人类语言。近年来&#xff0c;随着深度学习技术的迅猛发展&#xff0c;自然语言处理取得了前所未有的突破&#xff0c;一系列创新技术和应用不断涌现&#xff0c;极大地推动了…

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

安全散列函数 单向散列函数或者安全散列函数之所以重要&#xff0c;不仅在于消息认证(消息摘要。数据指纹)。还有数字签名&#xff08;加强版的消息认证&#xff09;和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件、消息或者其它数据…

java基础知识(常用类)

目录 一、包装类(Wrapper) (1)包装类与基本数据的转换 (2)包装类与String类型的转换 (3)Integer类和Character类常用的方法 二、String类 (1)String类介绍 1)String 对象用于保存字符串,也就是一组字符序列 2)字符串常量对象是用双引号括起的字符序列。例如:&quo…

音视频基础扫盲之认识PCM(Pulse Code Modulation,脉冲编码调制)

PCM&#xff08;Pulse Code Modulation&#xff0c;脉冲编码调制&#xff09;一种用数字表示采样模拟信号的方法。是用于将波形表示的模拟音频信号转换为数字1和0表示的数字音频信号&#xff0c;而不压缩也不丢失信息的处理技术。PCM编码的最大的优点就是音质好&#xff0c;最大…