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)能够大大提高开发效率和查询

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

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

相关文章

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

自然语言处理期末试题汇总

建议自己做&#xff0c;写完再来对答案。答案可能存在极小部分错误&#xff0c;不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …

深度学习——激活函数

一、人工神经元 1.1 构建人工神经元 人工神经元接受多个输入信息&#xff0c;对它们进行加权求和&#xff0c;再经过激活函数处理&#xff0c;最后将这个结果输出。 1.2 组成部分 输入&#xff08;Inputs&#xff09;: 代表输入数据&#xff0c;通常用向量表示&#xff0c;每…

新型大语言模型的预训练与后训练范式,Meta的Llama 3.1语言模型

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…

[js] 函数柯里化

面试题&#xff1a;实现一个add方法&#xff0c;使计算结果能够满足如下预期&#xff1a; add(1)(2)(3) 6; add(1, 2, 3)(4) 10; add(1)(2)(3)(4)(5) 15; // 保存不定长参数 let nums []; function add(...args) { // 往数组中插入不定长参数nums.push(...args)// 判断参数…

git rebase-优雅合并与修改提交

文章目录 简介rebase用于合并使用rebase修改提交cherry-pick 简介 在Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)中我们已经介绍了git的最常用实用的命令。 在上面说的那篇文章中&#xff0c;我们只是简单提了一下rebase。 是因为r…

音视频流媒体直播/点播系统EasyDSS互联网视频云平台介绍

随着互联网技术的飞速发展&#xff0c;音视频流媒体直播已成为现代社会信息传递与娱乐消费的重要组成部分。在这样的背景下&#xff0c;EasyDSS互联网视频云平台应运而生&#xff0c;它以高效、稳定、便捷的特性&#xff0c;为音视频流媒体直播领域带来了全新的解决方案。 1、产…

HarmonyOS4+NEXT星河版入门与项目实战(22)------动画(属性动画与显示动画)

文章目录 1、属性动画图解2、案例实现-小鱼移动游戏1、代码实现2、代码解释3、资源图片4、实现效果3、显示动画4、案例修改-显示动画5、总结1、属性动画图解 这里我们用一张完整的图来汇整属性动画的用法格式和使用的主要属性范围,如下所示: 2、案例实现-小鱼移动游戏 1、代…

基于大数据python 豆果美食推荐数据可视化系统(源码+LW+部署讲解+数据库+ppt)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度&#xff08;部分学校只有一次答辩机会 没弄好就延迟…

坐标系变换

1 Clark变换 三相对称电压表达式为&#xff1a; 将三相电压用相量的形式表达出来&#xff0c;并用欧拉公式&#xff08;eix(cosxisinx)&#xff09;写成三角函数的形式&#xff1a; 同时&#xff0c;三相电压矢量空间合成向量可表示为&#xff1a; 三相电压合成矢量幅值为相电…

008静态路由-特定主机路由

按照如上配置&#xff0c;用192.168.0.1 电脑ping 192.168.1.1 发现能够ping通 用192.168.0.1 电脑ping 192.168.2.1 发现不能ping通 这是因为192.168.0.1 和 192.168.1.1 使用的是同一个路由器R1。 192.168.0.1 和 192.168.2.1 通信需要先经过R1&#xff0c;再经过R2 &#xf…

用c语言完成俄罗斯方块小游戏

用c语言完成俄罗斯方块小游戏 这估计是你在编程学习过程中的第一个小游戏开发&#xff0c;怎么说呢&#xff0c;在这里只针对刚学程序设计的学生&#xff0c;就是说刚接触C语言没多久&#xff0c;有一点功底的学生看看&#xff0c;简陋的代码&#xff0c;简陋的实现&#xff0…

数据迁移调研

需求背景&#xff1a;在项目迭代过程中&#xff0c;需要将一个数据库的数据迁移到另外一个数据库&#xff0c;包括分库分表的mysql数据库的数据异构到ES&#xff0c;来支持大数据量的查询&#xff0c;以及从一个Mysql数据库迁移到另外一个Mysql数据库的操作。多个业务的数据在一…

深度学习:梯度下降法

损失函数 L&#xff1a;衡量单一训练样例的效果。 成本函数 J&#xff1a;用于衡量 w 和 b 的效果。 如何使用梯度下降法来训练或学习训练集上的参数w和b &#xff1f; 成本函数J是参数w和b的函数&#xff0c;它被定义为平均值&#xff1b; 损失函数L可以衡量你的算法效果&a…

python基础(二)

函数 函数定义 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一或相关联功能的代码段。 python函数定义规则&#xff1a; def my_max(a,b): #定义函数用def关键字开头&#xff0c;函数名-》my_max ()定义参数 if a>b: #函数体以&#xff1a…

镜像神经元系统,人工智能的等效设计

镜像神经元机制等效于人工智能对输入数据系统上下文进行编码的系统。 生物神经系统的镜像神经元编码系统&#xff0c;对生物感知到的一系列行为序列的整体模式进行编码。生物神经系统在感知到行为序列中的某个特征触发模式时&#xff0c;触发神经系统输出整体模式的序列集合的…

复杂网络(三)

一、几种常见的中心性指标 1.1 度中心性 度中心性分为节点度中心性和网络度中心性。前者指的是节点在其与之直接相连的邻居节点当中的中心程度&#xff0c;二后者则侧重节点在整个网络的中心程度&#xff0c;表征的是整个网络的集中或集权程度&#xff0c;即整个网络围绕一个…

基础(函数、枚举)错题汇总

枚举默认从0开始&#xff0c;指定后会按顺序赋值 而这个枚举变量X&#xff0c;如果在全局&#xff08;函数外部&#xff09;定义&#xff0c;那默认为0&#xff0c;如果在函数内部&#xff08;局部变量&#xff09;&#xff0c;那就是随机值&#xff0c;必须初始化。 枚举变量…

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook&#xff0c;作为全球领先的社交平台之一&#xff0c;其在技术领域的创新不仅体现在产品功能的实现上&#xff0c;也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分&#xff0c;通过开源&#xff0c;Facebook不仅加速了技术进步&#xff0c;…

uniapp中scrollview配合swiper实现一个简单的tab标签页

<template><view class"tab-container"><!-- Tab 标签滚动容器 --><scroll-view scroll-x"true" class"tab-scroll" scroll-with-animation"true"><view class"tab-list"><viewv-for"…