SQL数据库教案

2024-08-30 22:44
文章标签 sql 数据库 database 教案

本文主要是介绍SQL数据库教案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录:

一:前言

1.SQL定义

2.语法规范

3.表的概念

二:语法执行顺序*

三:基础语法

1.数据库操作

2.表操作

2.1 create创建表 

2.2 drop删除表

3.增

3.1 add添加新字段 

3.2 insert插入数据 

4.删

4.1 alter删除字段

4.2 delete删除数据

5.改

5.1 alter修改字段

5.2 update更新数据

6.查select

6.1 简单查询

6.2 条件查询where

6.3 排序查询order by

6.4 分组查询group by having

6.5 多表查询

6.6 子查询

6.7 关联查询 

6.7.1 内关联

6.7.2 外关联

6.8 联合查询union


一:前言

1.SQL定义

SQL是什么a.SQL 指结构化查询语言,全称是 Structured Query Languageb.用于数据库操作 和 数据管理:存取数据以及查询、更新和管理关系数据库系统c.SQL是一种用于管理和操作关系数据库的标准语言包括数据查询、数据插入、数据更新、数据删除、数据库结构创建和修改等功能特点a.SQL本身不实现具体的数据库系统,而是作为一种语言被嵌入到各种数据库系统中b.采用客户端-服务器架构时,SQL语句在服务器端执行功能与用途a.主要用于数据查询(SELECT)、数据定义(DDL如CREATE、ALTER、DROP)、数据操纵(DML如INSERT、UPDATE、DELETE)和数据控制(DCL如GRANT、REVOKE)b.SQL的功能是标准化的,不同数据库系统间的SQL语法虽然略有差异,但基本保持一致

2.语法规范

1.SQL 对大小写不敏感:SELECT 与 select 是相同的2.每条SQL语句的末端使用分号“;”也可以不加,但是建议加上分号3.多个列 和 多个值 之间使用逗号“,”隔开4.注释-- 这是一个单行注释#这是一个单行注释5.占位符:"?"6.字符型相关的必须加引号:单引号 双引号都可以

3.表的概念

记录(横向的)行:记录/元组/具体的某个事物    字段(纵向的)列标题:字段/事物属性 值:交叉的小格子/每一个方格数据    
域:值的限定范围主键外键 主键(主关键字):可以定位到某一条具体的数据、非空、不能重复方便和其他的表进行关联:因为不会重复、可以定位到一条具体的数据外键(外部关键字):在另外一张表中与”主键“相互产生关联

二:语法执行顺序*

SQL执行顺序:select...from...where...group by...order by...limit...——>1.获取表,没有表啥也做不了from——>on——>join——>2.获取结果——>where——>group by——>having——>select——>3.结果处理——>distinct——>order by——>limit4.其他distinct:去重as取别名:在from之前搭配使用like模糊查询:在where之后搭配使用聚合函数:在from之前搭配使用;括号里面填写对象;where不能使用聚合函数   count(*)函数:用于返回查询结果的总数据条数 avg()函数:平均值sum()函数:求和max()函数:最大值min()函数:最小值group_concat()函数:指定的字段进行合并/字符串连接and和or结合运算符:在where之后搭配使用between:在某个范围内all所有的any任意的参考结构:select      查询目标from        表名称join        加入on          连接条件where       筛选记录的条件group  by   分组-分组字段,把选定的记录分成特定的组having      分组条件-筛选分组的条件,说明每个组需要满足的条件select      查询distinct    去重order  by   排序字段名limit  m,n  限制查询结果集输出的行数,m从那开始,n获取几条数据语法select [distinct|top n]  *    |    字段1 as 别名1,字段2 as 别名2.字段n as 别名n  from 表名1,表名2... [where 条件] [group by 字段] [having 条件][order by 字段... [asc默升|desc降]][limit n[,m]]

三:基础语法

数据库中数据的组织结构:数据库(database)、数据表(table)、数据行(row)、字段(field)

1.数据库操作

创建数据库:create databases 数据库名称 [charset utf8];查看所有数据库:show databases;
查看当前使用的数据库:select database();
显示部分数据库:show databases like '匹配模式'
显示数据库创建语句:show create database 数据库名字;使用数据库:use 数据库名称;删除数据库:drop datebase 数据库名称;查看有那些表:show tables;退出命令行环境:exit;

2.表操作

2.1 create创建表 

创建表createCREATE TABLE 表名(列1 数据类型1 [约末1],列2 数据类型2[约束2]…列n 数据类型n [约束n]);--------------------------------------------------------------------------------数据类型:INTEGER 长整型(integer)、NUMBER双精度型(number)、VARCHAR短文本型(varchar)、DATE日期/时间型(date)约束:主键约束(PrimaryKey)、唯一约束(Unique)、空值约束(Not Null)创建学生表:CREATE TABLE 学生(学号 INTEGER Primary Key,姓名 VARCHAR(4) Not Nul,性别 VARCHAR(1),出生日期 DATE,家庭住址 VARCHAR(30),学分 NUMBER);

2.2 drop删除表

删除表dropDROP TABLE 表名;--------------------------------------------------------------------------------DROP TABLE 学生;

3.增

3.1 add添加新字段 

添加新字段alter addALTER TABLE 表名 ADD 新列名 数据类型 [约束];--------------------------------------------------------------------------------ALTER TABLE 学生 ADD 手机号 VARCHAR(11) Unique;

3.2 insert插入数据 

插入数据insert valuesINSERT INTO 表名(字段1,字段2..字段n) VALUES(值1,值2...值n);--------------------------------------------------------------------------------INSERT INTO 学生 VALUES(2,"李四"“女",#2019-9-1#,"上海市",99.5);INSERT INTO 学生(学号,姓名,性别,出生日期,家庭住址,学分) VALUES(1,"张三""男,#2020-1-1#,“北京市",98);注意:文本用双引号包裹、日期用#包裹

4.删

4.1 alter删除字段

删除字段alter dropALTER TABLE 表名 DROP 新列名;--------------------------------------------------------------------------------ALTER TABLE 学生 DROP 家庭住址;

4.2 delete删除数据

删除数据delete whereDELETE FROM 表名 [WHERE 条件];DELETE FROM 表名 limit 限制的行数量;--------------------------------------------------------------------------------DELETE FROM 学生 WHERE 姓名="张三";

5.改

5.1 alter修改字段

修改字段alter alterALTER TABLE 表名 ALTER 新列名 数据类型;--------------------------------------------------------------------------------ALTER TABLE 学生 ALTER 姓名 VARCHAR(10):

5.2 update更新数据

更新数据update set whereUPDATE 表名 SET 字段1=值1, 字段2 = 值2.... [WHERE 条件];--------------------------------------------------------------------------------UPDATE 学生 SET 学分=学分+1 WHERE 姓名="张三";

6.查select

语法select [distinct|top n]  *    |    字段1 as 别名1,字段2 as 别名2.字段n as 别名n  from 表名1,表名2... [where 条件] [group by 字段] [having 条件][order by 字段... [asc默升|desc降]][limit n[,m]]说明distinct去重    top n前几       as取别名group by分组    having条件-拥有 order  by排序   asc正序         desc倒序avg平均数       count统计求和    max最大        min最小    all所有的    any任意的一个union联合       and和or         count(*)计数   like模糊查询

6.1 简单查询

    select * from 表名称;select 列名称 from 表名称;--------------------------------------------------------------------------------SELECT*FROM 员工:SELECT 姓名,性别,手机号,工资 AS 薪资 FROM 员工;                       as取别名SELECT DISTINCT 性别 FROM 员工;                                     distinct截然不同的

6.2 条件查询where

    SELECT 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 部门="咨询部";SELECT 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 工资>5000 AND 工资<20000;SELECT 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 工资 Between 5000 AND 20000;SELECT 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 部门 IN("咨询部""销售部");SELECT 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 姓名 LIKE"王*";

6.3 排序查询order by

    SELECT TOP 3 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 部门="咨询部" ORDER BY 工资 DESC;SELECT 姓名,工资 FROM 员工 ORDER BY 工资 DESC:

6.4 分组查询group by having

    SELECT 部门,COUNT(员工编号) AS 人数 FROM 员工 GROUP BY 部门:SELECT 部门,AVG(工资) AS 平均工资 FROM 员工 GROUP BY 部门 HAVING AVG(工资)>15000;

6.5 多表查询

    select 列名称 from 表1 as 别名1,表2 as 别名2,...表n[where 连接条件进行关联比对筛选]--------------------------------------------------------------------------------SELECT 客户.姓名,咨询信息.咨询事务,咨询信息.咨询方式 FROM 客户,咨询信息 WHERE 客户.客户编号=咨询信息.客户编号;SELECT 客户.姓名,员工.姓名,咨询信息.咨询事务,咨询信息.咨询方式 FROM 客户,咨询信息,员工 WHERE 客户.客户编号 = 咨询信息.客户编号 AND 咨询信息.员工编号=员工.员工编号;

6.6 子查询

    SELECT 姓名,工资 FROM 员工 WHERE 工资>(SELECT AVG(工资) FROM 员工);SELECT 姓名,工资 FROM 员工 WHERE 部门=“产品部" AND (工资 > ALL(SELECT 工资 FROM 员工 Where 部门=“销售部"));SELECT 姓名,工资 FROM 员工 WHERE 部门 ="产品部"AND (工资 > ANY(SELECT 工资 FROM 员工 Where 部门=“销售部”));

6.7 关联查询 

6.7.1 内关联

内关联(交集 双向奔赴 可能都没有不能相互关联) 

    select 列名称 from 表1 as 别名1 [inner]  join 表2 as 别名2on 别名1.连接字段 = 别名2.连接字段;--------------------------------------------------------------------------------
6.7.2 外关联

外关联(单向奔赴 以什么为主)

    select 列名称 from 表1 as 别名1 (left|right) [outer] join 表2 as 别名2on 别名1.连接字段 = 别名2.连接字段;--------------------------------------------------------------------------------

解释 

左连接(LEFT JOIN/LEFT OUTER JOIN)左连接用于从“左表”中获取所有行,并尝试与“右表”中的行进行匹配如果右表中存在与左表连接条件相匹配的行,则这些行会一起出现在结果中如果右表中没有匹配的行,则结果中右表的部分将包含NULL这通常用于确保结果中包含左表中的所有记录,即使它们在右表中没有对应的匹配项右连接(RIGHT JOIN/RIGHT OUTER JOIN)右连接与左连接相反,它从“右表”中获取所有行,并尝试与“左表”中的行进行匹配如果左表中存在与右表连接条件相匹配的行,则这些行会一起出现在结果中如果左表中没有匹配的行,则结果中左表的部分将包含NULL然而,由于可以通过交换表的顺序和使用左连接来达到相同的效果,右连接在实际应用中相对较少见外连接(OUTER JOIN)外连接是一个更广泛的概念,它包括了左外连接和右外连接然而,在SQL查询中,你通常会明确指定是LEFT OUTER JOIN还是RIGHT OUTER JOIN,因为单独的OUTER JOIN可能在不同的数据库系统中具有不同的解释或不被直接支持外连接的主要目的是确保结果中包含至少一个表中的所有行,即使它们在另一个表中没有对应的匹配项。这些未匹配的行在结果中将以NULL填充另一个表的部分

6.8 联合查询union

union 联合查询:合并两个表中的数据,生成新表

    select 姓名,性别,手机号 from 员工 union select 姓名,性别,手机号 from 客户;--------------------------------------------------------------------------------

这篇关于SQL数据库教案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122148

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字