SQL入门详细教程

一、什么是SQL?

SQL(Structured Query Language,结构化查询语言)是一种用于访问和操作数据库的标准语言。它用于查询、插入、更新和删除数据库中的数据,并且能够创建和修改数据库结构(例如表、视图、索引等)。

二、SQL的基本组成部分

SQL由若干子语言组成,每种子语言负责不同的数据库操作:

  1. DDL(数据定义语言):用于定义数据库结构,包括创建、修改和删除数据库对象。

    • CREATE:创建数据库和表。
    • ALTER:修改表结构。
    • DROP:删除数据库或表。
  2. DML(数据操作语言):用于操作数据库中的数据。

    • SELECT:查询数据。
    • INSERT:插入新数据。
    • UPDATE:更新现有数据。
    • DELETE:删除数据。
  3. DCL(数据控制语言):用于控制数据库访问权限。

    • GRANT:授予权限。
    • REVOKE:撤销权限。
  4. TCL(事务控制语言):用于管理数据库事务。

    • COMMIT:提交事务。
    • ROLLBACK:回滚事务。
三、SQL基础操作示例
  1. 创建数据库和表

sql

-- 创建数据库 CREATE DATABASE example_db; -- 使用数据库 USE example_db; -- 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

  1. 插入数据

sql

INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com'); INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');

  1. 查询数据

sql

-- 查询所有数据 SELECT * FROM users; -- 查询特定列 SELECT username, email FROM users; -- 带条件查询 SELECT * FROM users WHERE username = 'alice';

  1. 更新数据

sql

UPDATE users SET email = 'alice_new@example.com' WHERE username = 'alice';

  1. 删除数据

sql

DELETE FROM users WHERE username = 'bob';

  1. 修改表结构

sql

-- 添加新列 ALTER TABLE users ADD COLUMN age INT; -- 修改列类型 ALTER TABLE users MODIFY COLUMN email VARCHAR(100); -- 删除列 ALTER TABLE users DROP COLUMN age;

  1. 删除表和数据库
 

sql

-- 删除表 DROP TABLE users; -- 删除数据库 DROP DATABASE example_db;

四、SQL高级操作
  1. 使用JOIN连接表
 

sql

-- 创建两张表 CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, amount DECIMAL(10, 2), order_date DATE ); INSERT INTO orders (user_id, amount, order_date) VALUES (1, 99.99, '2023-01-01'); INSERT INTO orders (user_id, amount, order_date) VALUES (1, 49.99, '2023-02-01'); -- 内连接查询 SELECT users.username, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id;

  1. 使用子查询

sql

-- 查询花费超过50的用户 SELECT username FROM users WHERE id IN ( SELECT user_id FROM orders WHERE amount > 50 );

  1. 使用聚合函数

sql

-- 计算总订单金额 SELECT SUM(amount) AS total_amount FROM orders; -- 计算每个用户的订单总金额 SELECT users.username, SUM(orders.amount) AS total_amount FROM users INNER JOIN orders ON users.id = orders.user_id GROUP BY users.username;

五、总结

SQL是一种功能强大的数据库操作语言,掌握它可以有效地管理和操作数据。通过本文的介绍,读者可以了解SQL的基本概念和操作,为进一步学习和应用打下坚实的基础。接下来可以学习更多高级的SQL技术,如存储过程、触发器、视图和索引优化等,以更好地利用SQL进行数据处理和分析。

六、推荐学习资源
  1. 书籍
    • 《SQL必知必会》——Ben Forta
    • 《SQL权威指南》——Rick van der Lans
  2. 在线教程
    • W3Schools SQL Tutorial: w3schools.com/sql
    • LeetCode SQL练习: leetcode.com
  3. 在线课程
    • Coursera的SQL for Data Science: coursera.org
    • Udemy的The Complete SQL Bootcamp: udemy.com

通过不断练习和应用,相信你能迅速掌握SQL并在实际工作中得心应手。

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

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

相关文章

Python登录漏洞复现

Python登录漏洞复现 3.1 环境准备 1)升级pip pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple2)安装ddddocr图形识别库 pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple3)安装requests网络请求…

伦敦金1手指的是什么?

就算没有进行过伦敦金投资,甚至是没有做过任何金融产品投资的朋友,相信也听过别人做交易决定,他们都是1手两手那样头买入。有些朋友就好奇了,这伦敦金1手指的是什么意思?下面我们就来讨论一下。 首先,如果我…

CDH6.3.2集成Flink1.12.2

一、Linux下载httpd服务并开启 yum install y httpd systemctl start httpd systemctl enable httpd 二、获取已制作好的安装包 flink-1.12.2-bin-scala_2.11.tar ​ FLINK_ON_YARN-1.12.2.jar ​ flink-shaded-hadoop-2-uber-3.0.0-cdh6.3.2-10.0.jar 三、集成CM 1.上传编…

ERV-Net:一种用于脑肿瘤分割的高效3D残差神经网络| 文献速递-深度学习肿瘤自动分割

Title 题目 ERV-Net: An efficient 3D residual neural network for brain tumor segmentation ERV-Net:一种用于脑肿瘤分割的高效3D残差神经网络 01 文献速递介绍 脑肿瘤在全球范围内是致命的,与其他类型的肿瘤相比。胶质瘤是最具侵略性的脑肿瘤类…

java opcua实现数据点位事件订阅

前言 之前写了一篇文章《Java实现OPC UA断连重连和数据监听》 里面有代码实现对点位订阅的实现,但是有些x需求下这么写感觉不太好,今天又更新一种订阅的实现方式,根据不同的场景需求选择更合适的方案。 教程 依赖 首先在maven项目种引入opc依赖 <dependency><g…

数据挖掘与机器学习——聚类算法

目录 无监督学习 聚类算法 概念&#xff1a; 功能&#xff1a; 应用场景&#xff1a; 评判标准&#xff1a; 划分聚类&#xff1a; K-means聚类 逻辑实现&#xff1a; 聚类方式 问题&#xff1a; 解决&#xff1a; 可能存在的问题&#xff1a; 1.初始值对K-means聚…

Ubuntu 22.04, 如何让VSCode中的cmakelist高亮显示

安装cmake插件即可。 CMakeLists.txt is not syntax highlighted Issue #534 microsoft/vscode-cmake-tools GitHub

CANOE制造dll文件,以及应用dll文件

1、使用canoe自带的capl dll 2、然后使用Visual Studio 2022 打开项目 3、项目打开后修改下项目属性 4、修改capldll.cpp文件 4.1 添加的内容 void CAPLEXPORT far CAPLPASCAL appSum(long i, long j, long* s){*s i j;} {"sum", (CAPL_FARCALL)appSum, "…

python前端streamlit模型部署

简单介绍使用前端streamlit框架快速部署本地模型&#xff1a; 1、模型训练&#xff1a; import pandas as pd # 流程整合 from sklearn.pipeline import make_pipeline, Pipeline # 数据处理 from sklearn.impute import SimpleImputer from sklearn.preprocessing import Min…

01 - Maven入门安装

目录 1、软件下载地址 2、安装的版本 3、安装的条件 4、软件的结构 5、Maven环境配置 5.1、配置MAVEN_HOME 5.2、配置Path 5.3、命令测试&#xff08;cmd窗口&#xff09; 6、Maven的功能配置 6.1、配置本地仓库地址 6.2、配置国内阿里镜像 6.3、配置jdk8版本项目构…

鸿蒙ArkTS声明式开发:跨平台支持列表【背景设置】 通用属性

背景设置 设置组件的背景样式。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…

设计模式22——备忘录模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 备忘录模式&#xff08;Mement…

EG2106 原装正品 贴片SOP-8 大功率MOS管栅极驱动芯片耐压600V

EG2106 在电机控制中的应用非常广泛&#xff0c;下面是一些典型的应用案例&#xff1a; 1. 无刷直流电机&#xff08;BLDC&#xff09;控制&#xff1a;EG2106 可以用于驱动无刷直流电机的功率MOSFET或IGBT。在无刷电机控制器中&#xff0c;通常会用到H桥电路来控制电机的正…

基于Java的KTV点歌系统

开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术&#xff0c;JAVA&#xff0c;B/S架构 工具&#xff1a;浏览器&#xff08;360浏览器、谷歌浏览器、QQ浏览器等&#xff09;&#xff0c;数据库管理工具&#xff08;MySQL&#xff09; 系统展示 …

HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式

作者:私语茶馆 前言 其他涉及到的参考章节: HTML动态响应1—Ajax动态处理服务端响应-CSDN博客 Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客 HTML拆分与共享方式——多HTML组合技术-CSDN博客 1.场景: WEb项目经常需要前后端交互数据,并动态修改HTML页…

Linux:subshell(子shell)和childprocess(子进程)

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 一、预备知识 在进行这个话题之前&#xff0c;首先要了解Linux系统中一个进程是如何创建的&#xff0c;当一个命令被执行时&#xff0c;首先会在当前进程创建一个子进程…

Vue3使用mitt进行组件通信

mitt&#xff1a;事件总线&#xff0c;是第三方插件。 Vue2.x 使用 EventBus 事件总线进行兄弟组件通信&#xff0c;而在Vue3中 EventBus 事件总线模式已经被移除&#xff0c;官方建议使用外部的、实现了事件触发器接口的库&#xff0c;例如 mitt 或 tiny-emitter。 比起 Vue…

rtos最小任务切换的实现 keil软件仿真 stm32 PendSV

最小任务切换的实现 本例子实现了一个 rtos 最小的任务切换功能&#xff0c;使用 keil 仿真功能&#xff0c;在模拟的 stm32f103 的器件上实现了使用 PendSV 中断切换线程的效果。 git 源码仓库&#xff1a;https://github.com/yutianos/rtos-little 本文链接&#xff1a;csdn…

数学函数,字符串

目录 Math类 三角函数 指数函数 取整方法 其他方法 String类 常见方法 字符串比较方法 子串和数字与字符串的转换 Math类 Math类在java.lang中&#xff0c;不用显式引入。 三角函数 private static void triangleFunc() {double degree Math.toDegrees(Math.PI / 3…

神经网络与深度学习——第4章 前馈神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第4章 前馈神经网络 前馈神经网络 神经元 Sigmoid型函数 Hard-Logistic函数和Hard-Tanh函数 ReLU函数 带泄露的ReLU 带参数的ReLU ELU函数 Softplus函数 Swish函数 GELU函数 Maxout单元 网络结构 前馈网络…