首页 > 数据库 >SQL入门详细教程

SQL入门详细教程

时间:2024-05-31 09:33:03浏览次数:22  
标签:username 教程 users -- 数据库 SQL id 入门

一、什么是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', '[email protected]'); INSERT INTO users (username, email) VALUES ('bob', '[email protected]');

  1. 查询数据

sql

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

  1. 更新数据

sql

UPDATE users SET email = '[email protected]' 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并在实际工作中得心应手。

标签:username,教程,users,--,数据库,SQL,id,入门
From: https://blog.csdn.net/Kimi2024/article/details/139322072

相关文章

  • 31.MySQL数据库【一】基础介绍
    【一】数据库初识1)存储数据的演变过程基于内存保存文件操作json模块搭建TCP的客户端和服务端,TCP服务端用作存储服务,TCP客户端用于上传和下载数据存储数据的位置就是数据库2)数据库本质就是一块基于网络通信保存数据的应用程序3)数据库的介绍1.关联性数据库(存......
  • 32.MySQL数据库【二】存储引擎与基本数据类型.
    【一】MySQL之存储引擎1)介绍针对不同的数据有不同的处理机制,存储引擎就是不同的处理机制2)MySQL主要的存储引擎1.innodb是MySQL5.5版本之后的默认存储引擎支持事务、外锁、外键2.myisam是MySQL5.5版本之前的默认存储引擎速度比innodb快,但数据安全性较弱3.memory......
  • 34.MySQL数据库【四】过滤条件
    过滤条件【一】语法select*/字段名from*/表名where*/字段名=字段值;--执行顺序from起手知道是那张表where根据过滤条件在表中过滤数据select再过滤出自己想要的数据【二】准备的数据#创建表createtablefilt_eg( idintnotnulluniqueauto_increment,......
  • 33.MySQL数据库【三】约束条件
    约束条件限制表中的数据,保证数据的准确性和可靠性而存在的限制规则【一】非空约束(notnull)限制指定字段不能为空#建表createtableeg( namevarchar(32)notnull, hobbyvarchar(32));#name字段不能为空【二】唯一性约束(unique)限制字段具有唯一性,不能重复,但能为......
  • Python 入门之阅目的 Pythonic(一)
    #免责声明:本文内容主要是肥清大神的视频以及自己收集学习内容的整理笔记,目是主要是为了让象博主这样的老白能更好的学习编号,如有侵权,请联系博主进行删除。1.注释#注释<Comments>:用来向用户提示或解释某些代码的作用和功能*可以出现在代码中的任何位置*Py......
  • 35.MySQL数据库【五】多表查询和子查询
    多表查询和子查询【一】概念子查询:将一条SQL语句的查询结果加括号当做另外一条SQL语句的查询结果链表查询:先将多张表拼接到一起,形成一张大表,让后基于单表查询获取数据1)创建数据#建表createtabledep( idintPRIMARYKEYAUTO_INCREMENT,namevarchar(20));......
  • MySQL Shell 调用外部脚本
    使用CLI工具时,打错命令很容易纠正。不过,在MySQlShell中工作时,命令可能会更长、更复杂。以下是运行MySQLDocumentStore的一个例子。db.scores.find("year(date)=2023").fields(['lastName','firstName','round(avg(score),2)asavg','count(score)asnum......
  • 【docker】docker 下 MySQL偶然无法访问
    1.概述我有一个环境遇到了docker下MySQL偶然无法访问,具体情况如下可以被看到可以telnet通畅,这个jar是我自己研发的,主要这台机器是别人的没有装telnet但是任务还是报错所在机器telnet通但是无法登录,同事说遇到过比如网络卡或者不稳定,需要重启一下mysql我先去......
  • MySQL 数据库中简单的创表语句以及增删改查语句
    假设我们有一个学生表students,包含以下列:id(学生编号)、name(学生姓名)、age(学生年龄),以下是创建这个表的SQL语句:CREATETABLEstudents(  idINTPRIMARYKEY,  nameVARCHAR(50),  ageINT);在这个创建语句中:•CREATETABLE:用于创建新表。•students:表......
  • MySQL数据库中的分组函数ROLLUP
    ROLLUP是GROUPBY子句的扩展。ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行。通过使用ROLLUP选项,可以使用单个查询生成多个分组集。MySQL中的ROLLUP是用于 产生汇总输出的修饰符,包括表示超级汇总(较高级别)汇总操作的额外行。它使我们能够使用单个查询在......