SQL基础教程(第2版)笔记整理咸鱼也是有梦想的

数据定义语言(DataDefineLanguage)

数据操作语言(DataManipulationLanguage)

数据控制语言(DataControlLanguage)

表的创建

CREATETABLE表名

(列名数据类型完整性约束);

表的删除与更新

DROPTABLE表名;--删除表

ALTERTABLE表名ADD列名数据类型;--增加列名

ALTERTABLE表名DROP列名;--删除列名

ALTERTABLE表名MODIFY旧列名数据类型;--修改列名

ALTERTABLE表名CHANGE新列名数据类型;--修改列名

ALTERTABLE表名ALTER列名DROPDEFAULT;--删除默认

ALTERTABLE表名RENAMETO新表名;--修改表名

ALTERTABLE表名MODIFY列名数据类型COMMENT'';--添加备注

ALTERTABLEtbl_nameADDPRIMARYKEY(column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTERTABLEtbl_nameADDUNIQUEindex_name(column_list):这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

ALTERTABLEtbl_nameADDINDEXindex_name(column_list):添加普通索引,索引值可出现多次。

ALTERTABLEtbl_nameADDFULLTEXTindex_name(column_list):该语句指定了索引为FULLTEXT,用于全文索引。

数据的插入

INSERT语句

INSERTINTO<表名>(列1,列2,列3,……)VALUES(值1,值2,值3,……);

数据的删除

保留数据表,仅删除全部数据行的DELETE语句

DELETEFROM<表名>;

TRUNCATE<表名>;

删除部分数据行的搜索型DELETE

DELETEFROM<表名>WHERE<条件>;

数据的更新

改变表中数据的UPDATE语句

UPDATE<表名>SET<列名>=<表达式>WHERE<条件>;

数据的查询

查询标准语句格式:

SELECT<列名>FROM<表名>;

查询所有列:*代表所有

SELECT*FROM<表名>;

为列设定别名:AS(设定汉语别名时需要必须用双引号(")括起来)

SELECTproduct_idASid,product_nameASnameFROMproduct;

从结果中去掉重复行:DISTINCT(关键字只能用在第一个列名之前)

SELECTDISTINCTproduct_typeASp_type,product_nameFROMproduct;

聚合函数中使用DISTINCT

SELECTCOUNT(DISTINCTproduct_type)FROMProduct;

常数的查询:(NULL也被视为一类数据)

表达式:SELECT<常数值>AS<显示字段名>FROMproduct;

SELECT'商品'ASstring,38ASnumber,'2009-02-24'ASdate,

product_id,product_name

FROMproduct;

根据WHERE语句来选择记录:

SELECT<列名>FROM<表名>WHERE<条件>

注释的书写方法:

1行注释

书写在“--”之后,只能写在同一行。

多行注释

书写在“/*”和“*/”之间,可以跨多行。

算数运算符

+-*/(加减乘除)

注意:所有包含NULL的计算,结果肯定是NULL

SQL语句中也可以使用运算表达式:

SELECTproduct_name,sale_price,sale_price*2AS"sale_price_x2"FROMProduct;

比较运算符(使用比较运算符时一定要注意不等号和等号的位置。)

=相等<>不等于

>=大于等于<=小于等于

>大于<小于

字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。

逻辑运算符

NOT、AND、OR

多个查询条件进行组合时,需要使用AND运算符或者OR运算符。

AND运算符的优先级高于OR运算符。想要优先执行OR运算符时可以使用括号。

GROUPBY:(对表进行分组)

使用聚合函数和GROUPBY子句时需要注意以下4点。

①只能写在SELECT子句之中

②GROUPBY子句中不能使用SELECT子句中列的别名

③GROUPBY子句的聚合结果是无序的

④WHERE子句中不能使用聚合函数(SELECT子句和HAVING子句以及ORDERBY子句可以)

当聚合键中包含NULL时,也会将NULL作为一组特定的数据

GROUPBY和WHERE并用时SELECT语句的执行顺序

FROM→WHERE→GROUPBY→SELECT

GROUPBY表达式

SELECT<列名1>,<列名2>,<列名3>,……

FROM<表名>

WHERE<条件>

GROUPBY<列名1>,<列名2>,<列名3>,……;

HAVING子句(HAVING子句必须写在GROUPBY子句之后)

WHERE子句=指定行所对应的条件

HAVING子句=指定组所对应的条件

GROUPBY<列名1>,<列名2>,<列名3>,……

HAVING<分组结果对应的条件>

例子:

SELECTproduct_type,AVG(sale_price)

FROMProduct

GROUPBYproduct_type

HAVINGAVG(sale_price)>=2500;

ORDERBY子句(默认升序,DESC降序,ASC升序)(可以使用SELECT子句中定义别名)

ORDERBY<排序基准列1>,<排序基准列2>,……

子句的书写顺序

1.SELECT子句→2.FROM子句→3.WHERE子句→4.GROUPBY子句→

5.HAVING子句→6.ORDERBY子句

LIMIT1,3

函数

函数大致可以分为以下几种:

●聚合函数(用来进行数据聚合的函数)

COUNT:计算表中的记录数(行数)

SELECTCOUNT(列名)FROMProduct;(下列函数表达式相同)

SUM:计算表中数值列中数据的合计值

AVG:计算表中数值列中数据的平均值

MAX:求出表中任意列中数据的最大值

MIN:求出表中任意列中数据的最小值

●算术函数(用来进行数值计算的函数)

ABS绝对值函数:ABS(数值)

SELECTm,ABS(m)ASabs_colFROMSampleMath;

MOD求余函数:MOD(被除数,除数)

ROUND四舍五入函数:ROUND(对象数值,保留小数的位数)

●字符串函数(用来进行字符串操作的函数)

||拼接字符串函数:字符串1||字符串2

(MYSQL中使用:CONCAT(str1,str2))

LENGTH字符串长度函数:LENGTH(str)

MySQL中的LENGTH这样以字节为单位的函数进行计算时

●日期函数(用来进行日期操作的函数)

CURRENT_DATE当前日期函数:CURRENT_DATE

SELECTCURRENT_DATE;

●转换函数(用来转换数据类型和值的函数)

LOWER小写转换函数:LOWER(字符串)

REPLACE字符串的替换函数:REPLACE(对象字符串,替换前的字符串,替换后的字符串)

SUBSTRING字符串的截取函数:SUBSTRING(对象字符串FROM截取的起始位置FOR截取的字符数)

UPPER大写转换函数:UPPER(字符串)

CAST类型转换函数:CAST(转换前的值AS想要转换的数据类型)

COALESCE将NULL转换为其他值函数:COALESCE(数据1,数据2,数据3……)

谓词

谓词包括以下:

●LIKE(模糊匹配)

SELECT*FROMproductLIKE‘%s’;(后面匹配)s%’(前面匹配)‘%s%’(中间匹配)

‘_s_’(三位且中间是s的)‘_s’(两位且结尾是s的)‘s_’(两位且开头是s的)

●BETWEEN(范围查询)

SELECT*FROMproductWHEREsale_priceBETWEEN100AND1000;

●ISNULL、ISNOTNULL(判断是否为NULL)

SELECTproduct_name,purchase_priceFROMProductWHEREpurchase_priceISNULL;

●IN、NOTIN(OR的简便用法)

SELECTproduct_name,purchase_priceFROMProductWHEREpurchase_priceIN(320,500,5000);

●EXISTS

CASE表达式

--不写默认为NULL,尽量写上

--END不能省略

SELECTproduct_name,

CASEWHENproduct_type='衣服'

THEN'A:'||product_type

WHENproduct_type='办公用品'

THEN'B:'||product_type

WHENproduct_type='厨房用具'

THEN'C:'||product_type

ELSENULL

ENDASabc_product_type

FROMProduct;

SELECTSUM(CASEWHENproduct_type='衣服'

THENsale_priceELSE0END)ASsum_price_clothes,

SUM(CASEWHENproduct_type='厨房用具'

THENsale_priceELSE0END)ASsum_price_kitchen,

SUM(CASEWHENproduct_type='办公用品'

THENsale_priceELSE0END)ASsum_price_office

集合运算

表的加法——UNION(并集)

SELECTproduct_id,product_name,sale_priceFROMProduct

UNION

SELECTproduct_id,product_name,sale_priceFROMProduct2

ORDERBYsale_price;

注意事项①——作为运算对象的记录的列数必须相同

注意事项②——作为运算对象的记录中列的类型必须一致

注意事项③——可以使用任何SELECT语句,但ORDERBY子句只能在最后使用一次

选取表中公共部分——INTERSECT(交集)

INTERSECT

包含重复行的集合运算——ALL选项

SELECTproduct_id,product_nameFROMProduct

UNIONALL

SELECTproduct_id,product_nameFROMProduct2;

记录的减法——EXCEPT

EXCEPT

SELECTproduct_id,product_nameFROMProduct2

ORDERBYproduct_id;

联结

联结(JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算。

UNION是以行(纵向)为单位进行操作,而联结则是以列(横向)为单位

进行的。

将两张表进行内联结

SELECTSP.shop_id,SP.shop_name,SP.product_id,P.product_name,

P.sale_price

FROMShopProductASSP

JOINProductASPONSP.product_id=P.product_id;

内联结要点①——FROM子句

第一点要注意的是,之前的FROM子句中只有一张表,而这次我们同时使用了ShopProduct和Product两张表。

FROMShopProductASSPINNERJOINProductASP

使用关键字INNERJOIN就可以将两张表联结在一起了。SP和P

分别是这两张表的别名,但别名并不是必需的。在SELECT子句中直接使用ShopProduct和product_id这样的表的原名也没有关系,但由于表名太长会影响SQL语句的可读性,因此还是希望大家能够习惯使用别名。

内联结要点②——ON子句

第二点要注意的是ON后面的联结条件。

进行内联结时必须使用ON子句,并且要书写在FROM和WHERE之间。

内联结要点③——SELECT子句

第三点要注意的是,在SELECT子句中指定的列。

使用联结时SELECT子句中的列需要按照“<表的别名>.<列名>”的格式进行书写。

外联结——OUTERJOIN

SELECTSP.shop_id,SP.shop_name,SP.product_id,P.product_name,P.sale_price

FROMShopProductASSPRIGHTOUTERJOINProductASP

ONSP.product_id=P.product_id;

外联结中使用LEFT、RIGHT来指定主表。使用二者所得到的结果完全相同。

交叉联结——CROSSJOIN

SELECTSP.shop_id,SP.shop_name,SP.product_id,P.product_name

FROMShopProductASSPCROSSJOINProductASP;

事务

事务就是需要在同一个处理单元中执行的一系列更新处理的集合

事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

要点:

1.在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。

2.事务处理可以用来维护数据库的完整性,保证SQL语句要么全部执行,要么全部不执行。

3.事务用来管理insert,update,delete语句

事务控制语句:

BEGIN或STARTTRANSACTION;显式地开启一个事务;

COMMIT;也可以使用COMMITWORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK;有可以使用ROLLBACKWORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINTidentifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;

RELEASESAVEPOINTidentifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACKTOidentifier;把事务回滚到标记点;

SETTRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READUNCOMMITTED、READCOMMITTED、REPEATABLEREAD和SERIALIZABLE。

MYSQL事务处理主要有两种方法:

1、用BEGIN,ROLLBACK,COMMIT来实现

BEGIN开始一个事务

ROLLBACK事务回滚

COMMIT事务确认

2、直接用SET来改变MySQL的自动提交模式:

SETAUTOCOMMIT=0禁止自动提交

SETAUTOCOMMIT=1开启自动提交

MYSQL事务

BEGIN;

UPDATEscSETGrade=81WHEREGrade=80;

DELETEFROMstudentWHERESname='陈冬';

INSERTINTOstudentVALUE(9521105,'陈冬','男',19,'数学系');

UPDATEstudentSETSage=20WHERESname='陈冬';

COMMIT;

复杂查询

视图(将经常使用的SELECT语句做成视图。)

创建视图的CREATEVIEW语句

CREATEVIEW视图名称(<视图列名1>,<视图列名2>,……)

AS

删除视图

DROPVIEW视图名称

CREATEVIEWProductSum(product_type,cnt_product)

SELECTproduct_type,COUNT(*)

GROUPBYproduct_type;

子查询

子查询作为内层查询会首先执行。

SELECTproduct_type,cnt_product

FROM(SELECTproduct_type,COUNT(*)AScnt_product

FROMProductGROUPBYproduct_type)--先执行FROM子句中的SELECT子句

ASProductSum;

标量子查询就是返回单一值的子查询,绝对不能返回多行结果。

能够使用常数或者列名的地方,无论是SELECT子句、GROUPBY子句、HAVING子句,还是ORDERBY子句,只要使用单一值的几乎所有的地方都可以使用。

SELECTproduct_id,product_name,sale_price,

(SELECTAVG(sale_price)FROMProduct)--标量子查询作为列名

ASavg_price

关联子查询在细分的组内进行比较时,需要使用关联子查询。

THE END
1.substancepainter基础合集100%学会SP,学不会直接可以劝退了1236 播放 下载 选集(13) 自动播放 [1] 0.安装与配置 1236播放 02:56 [2] 0.TDR问题解决 966播放 05:08 [3] 1.前置知识-手绘与次世代贴图的区... 1146播放 03:42 [4] 2.前置知识-次世代贴图的两个工作... 748播放 05:12 [5] 3.前置知识-烘焙贴图的介绍与用途... ...https://open.163.com/newview/movie/free?pid=BHHGTSUV0&mid=undefined
2.sp项目操作教程(基础篇)Word模板下载编号qbnekzvb本作品内容为SP项目操作教程(基础篇)-, 格式为 docx, 大小1 MB, 页数为12, 请使用软件Word(2010)打开, 作品中主体文字及图片可替换修改,文字修改可直接点击文本框进行编辑,图片更改可选中图片后单击鼠标右键选择更换图片,也可根据自身需求增加和删除作品中的内容, 源文件无水印, 欢迎使用熊猫办公。 https://www.tukuppt.com/muban/qbnekzvb.html
3.如何使用SP绘制人物面部贴图?SP人物面部贴图入门教程丨sp纹理贴图绘画基础入门教程丨SubstancePainter贴图基础教程丨SubstancePainter皮肤贴图制作教程丨直播课视频教程 5366人共同学习 This is a modal window. 视频因格式不支持或者服务器或网络的问题无法加载。 加入收藏 手机学习 充值学币http://www.huixueba.net/jiaocheng/1717
4.SP教程(5.2GB)百度网盘资源下载1.本站会员获取资源无需消耗金币。 2.获取资源后可以在「个人中心」48 小时内无理由退金币。 3.为防止资源链接失效,请及时转存文件。 资源目录结构 以下文件快照生成于4 年前。(只展示部分的文件和文件夹) :可能存在部分资源被网盘官方屏蔽。 SP教程5.2GB ...https://www.iizhi.cn/resource/detail/e095311d963b65126beb2755e8711881
5.ONScripter完全教程,基础篇。废话不说了,上教程。本教程就是的目的就是整合ONScripter全部的指令(完全没用的就算了)。 首先我要给ONScripter(下面简称为ONS)一个属性定义:单线程。 单线程就是不能有几个图形或内部操作同时进行的,所以在移植游戏的时候要注意。 关于ONScripter的显示效果:幻灯片。 https://doujin.bgm.tv/blog/46989
6.云计算基础(持续更新)(下)Docker基础实战教程四:数据卷操作 第1关:创建一个数据卷 #!/bin/bash#创建一个名为vo1的数据卷,并将该数据卷挂载到container1容器的/dir1目录。#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。docker pull ubuntu#*** Begin ***#docker run -v vo1:/dir1...https://developer.aliyun.com/article/1219389
7.Http2基础教程pdf文字版Linux 操作系统基础教程 清华大学信息学院计算机系 目录 前言...2 第一讲 Linux基础...https://www.iteye.com/resource/yihui1314-10969549
1.SP新手入门基础教程SubstancePainter2019EssentialTraining本套CG教程,已翻译成中文,请享用。 本套Substance Painter教程录制于2019年12月5日,substance painter是3D纹理绘画软件,让用户的3D绘画制作变得更加方便,也更符合现今游戏中的贴图制作,提供的粒子笔刷是直接使用真实物理模拟的一种拟真的方法,这样可以在模型中添加逼真的磨损与破裂效果,同时可提的还有Material Painting材...https://www.verycg.com/3150.html
2.SP基础教程sp基本操作SP基础教程 本教程介绍了AdobeSubstance3DPainter的基本使用技巧,包括使用Alt键进行模型旋转,中间键移动视角,右键实现缩放,以及Shift加右键调整光源位置等核心功能。第一集中重点讲解了软件的操作界面和初学者需要注意的要点。 摘要由CSDN通过智能技术生成 一:SP=Adobe Substance 3DPainter...https://blog.csdn.net/wenhuadream/article/details/130043321
3.SP基础讲解(二)视频教程重庆市设计院从事室内设计效果图表现 从事3Dmax工作8年之久,从事教育工作2年多精通3Dmax、PS、CAD、MD布料建模,熟练SP ZB AE PR等软件。擅长于3Dmax室内家装工装效果图表现、照片建模、各种风格家具、欧式雕花建模、异形建模 工业产品建模MD高级布料建模等。 老师课程(36) 3Dmax休闲单椅展UV 中级 高级 免费 【三...https://zixue.3d66.com/course/2373_403547.html
4.sp资料SP项目操作教程(基础篇).rar码农集市专业分享IT编程学习...sp 资料SP项目操作教程(基础篇).rar告别**过去 上传234.11 KB 文件格式 rar sp 资料\SP项目操作教程(基础篇).rar sp 资料\SP项目操作教程(基础篇).rarsp 资料\SP项目操作教程(基础篇).rar点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 https://www.coder100.com/index/index/content/id/790378
5.SubstancePainter入门基础教程十:透明效果制作上次我们讲解了Substance Painter入门基础教程九:发光效果制作,这节我们一起来看看透明效果在SP中的实现。 就以这个小油灯为例子吧。这个油灯的材质目前还不算完整,只有一个大致的材质效果,但只要操作熟练的话,材质制作部分还是挺快的。 那么先一起来看看灯罩的透明部分吧! https://jiaocheng.hxsd.com/course/content/10179/
6.Maya课时:SP基础功能讲解视频教程翼狐网致力于推动CG艺术发展,为用户提供海量的CG视频教程,本节内容主要介绍木纹材质制作《木椅》PBR流程入门教学【案例讲解】之课时7:SP基础功能讲解.https://www.yiihuu.com/v_149843.html
7.python基础教程攻略python基础教程简介python基础教程攻略 python基础教程简介,        Python详细介绍及使用(基础篇)第一章Python基础  Python的由来:1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monthttps://blog.51cto.com/u_14224/9224234
8.iOS汇编入门教程之ARM64汇编基础教程汇编语言这篇文章主要介绍了iOS汇编入门教程之ARM64汇编基础教程,本文通过例子给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 前言 对于应用层开发人员而言,仅仅掌握Objective-C和系统框架即可...https://www.jb51.net/article/179968.htm
9.SP快速上手Substance Painter次时代材质贴图零基础制作教程 立即学习 吕老师 模型材质高级讲师 +关注 课程目录(1/36) 课程笔记 第一章:软件基础知识 第1课:SP快速上手免费学 第2课:SP热键免费学 第3课:笔刷 第4课:映射、几何体填充、橡皮檫、涂抹、克隆、吸管工具 ...https://www.yutu.cn/soft/play/2474_0_1.html
10.SubstancePainter/Designer教程合集152部SP/SD教程中文字幕Substance Painter基础教程 Substance Designer布料皱纹褶皱制作教程 Substance Designer星际科幻人物角色建模材质教程 Substance Painter全面基础入门视频教程 Substance Painter与Designer破旧出土头盔纹理制作视频教程 Substance Designer纹理贴图制作要点10则视频教程 Substance Designer科幻游戏场景模块化制作视频教程 ...https://www.douban.com/note/802852526/
11.树莓派4裸机基础教程:从helloworld开始腾讯云开发者社区树莓派4裸机基础教程:环境搭建 树莓派4裸机基础教程:芯片启动到代码执行 本文主要从最简单的裸机代码开始分析,让板子的串口可以输出hello world信息。这篇文章会介绍工程的构建,程序的运行等等一些列的流程,以及树莓派4最后如何输出hello world。在嵌入式开发的过程中,往往都是万事开头难,只有看到了程序正在运行的那一...https://cloud.tencent.com/developer/article/1700390