本文主要是介绍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数据库教案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!