-
数值运算符
查看全部 -
记录行从0开始编号。例如LIMIT 2,2,代表从第三行开始,显示两行数据结果。
查看全部 -
多表更新
语法:UPDATE table_references SET col_name1={expr1 | DEFAULT}
[,col_name2={expr2 | DEFAULT}] ... [WHERE where_condition],需要表的参照关系,这就是将要讲的连接。
表的参照关系:一张表通过INNER JOIN或者LEFT OUTER JOIN去连接另外的一张表并通过ON指定连接条件,也可以给表起别名。
连接表的语法:table_reference {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN} table_reference ON conditional_expr。
连接表处理使用表的名称以外,还需要使用连接类型。
连接类型一共分为3中:在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的。
【1】INNER JOIN:内连接.
【2】LEFT [OUTER] JOIN:左外连接。
【3】RIGHT [OUTER] JOIN:右外连接。
查看全部 -
使用INSERT...SELECT插入记录
语法:INSERT [INTO] tbl_name [(col_name,...)] SELECT ...它是将查询的结果写入到数据表,列名省略也可以,否则列名之间用逗号隔开。
INSERT语句有两种形式:INSERT SET和INSERT VALUES,区别在于INSERT SET 可以使用子查询,因为一般这样写,INSERT SET A字段=多少,这里的=是比较运算符,可以引发子查询。
如果一张表中存在很多记录,并且这张表中存在很多重复的信息,例如:上面课程中商品表中的品牌字段和商品类型,汉字占的字节数一定比数字占的字节数多,如果数据越来越多,那么数据表就会越来越庞大,查找的时候速度就会变得很慢,所以我们可以通过外键来解决这个问题,但是使用外键至少有两张数据表,而现在就有一张数据表,所以就要再创建两张数据表存储商品的分类和品牌。
但是此时分类表里还没有数据信息,我们需要从商品表中查找所有的分类信息插入到分类表中,在查找的时候按分类来进行分组,并且插入时有两种方式,方式1录入7条INSERT语句,但这样太麻烦,方式2使用INSERT...SELECT将查询的结果直接写入数据表
将分组以后的结果插入到我们新创建的数据表当中
但是此时商品表还没有分类表的外键,需要参照分类表更新商品表,以前学习的是单表更新,但是现在商品表需要参照分类表进行更新,所以这就是多表更新。查看全部 -
二、由[NOT]IN引发的子查询
1、使用[NOT]IN的子查询
语法结构:operand comparison_operator [NOT] IN (subquery)=ANY运算符与IN等效,!=ALL或<>ALL运算符与NOT IN等效。
三、使用[NOT]EXISTS的子查询(不经常使用)
定义:如果子查询返回了结果,EXISTS将返回TRUE;否则为FALSE。
查看全部 -
子查询产生的情况可以分为三类:
一、使用比较运算符的子查询,包括=、>、<、>=、<=、<>、!=、<=>。
语法结构:operand comparison_operator subquery
案例:查找商品平均价格,AVG是一个聚合函数,特点是只有一个返回值,求平均值,聚合函数还有MAX、MIN、COUNT、SUM、等等,可以使用ROUND()函数来进行四舍五入,并保留小数的位数。
没使用子查询查看以上22个商品中哪一个商品价格大于5636.36
使用子查询完成如上功能:
查询超极本类型商品的价格
查询哪些商品的价格大于这些超极本产生错误的原因:子查询返回的结果是三个,应该指定为一个结果。
如果子查询返回的是多个结果的时候,可以使用关键字ANY、SOME、或者ALL修饰比较运算符
ANY和SOME是等价的:外查询符合其中一个即可。
ALL:外查询符合全部。
语法:
operand comparison_operator ANY(subquery)
operand comparison_operator SOME(subquery)
operand comparison_operator ALL(subquery)
使用ANY、SOME、ALL、的简单原则:
使用ANY修饰,返回的是大于内查询最小值(4299)的查询结果
使用ALL关键字修饰>=:
查看全部 -
MySQL子查询简介
子查询(Subquery):出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1 =(SELECT col2 FROM t2);
其中SELECT * FROM t1,称为Outer Query(外查询)/Outer Statement(外声明),SELECT col2 FROM t2,称为SubQuery(子查询)。
使用子查询时注意:
【a】子查询嵌套在查询内部,并且子查询必须出现在圆括号内。
【b】子查询可以包含多个关键字或条件,如DISTINCT、GROUT BY、ORDER BY、LIMIT,函数等。
【c】子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。
【d】外查询这里指所有SQL命令的统称,因为SQL称为结构化查询语言
子查询返回值:可以是返回标量、一行、一列、或者子查询,并且可以通过该返回值进行增、删、改、查。
查看全部 -
数据准备:六张表
SET NAMES gbk:客户端以GBK的编码显示。
一、子查询
二、连接
三、多表删除、多表更新
查看全部 -
本节知识点总结:
数据记录的操作:
INSERT:可以通过三种方法进行记录的插入,分别为普通INSERT、INSERT SET、INSERT SELECT语句
UPDATE:实际有两种更新语句,单表更新和多表更新(详见第五章)
DELETE:存在两种语法结构,单表删除、多表删除。
SELECT:
查看全部 -
limit语句限制查询数量(除了可以对记录进行排序,还可以限制记录返回的数量)
语法:[LIMIT {[offset,] row_count | row_count OFFSET offset}],两种语法结构,第一种语法结构比较常见,默认情况下返回所有查询到的结果,如果只添加一个数字,它表示从第一条记录开始返回,返回这个数字的数据数,如果返回第三条和第四条数据,就需要告诉从第几条返回,返回几条。拓展:在以后PHP当中,进行分页的时候,就会利用LIMIT语句来进行分页效果的实现,在分页效果实现当中,偏移值的计算公式是已经计算好的,计算公式就是当前括号中的页码减1*每一页显示的记录数。
限制返回两条记录
想要返回第三条和第四条数据却返回第四条和第五条出现这种情况的原因?
答:SELECT语句返回的查询结果,是从0开始编号,所以要想从第三条记录返回指定数量的记录,需要把3改为2。
返回第三条和第四条数据
注意:查询的id号和结果集没有任何的联系,只要排在结果集中第一个位置,那么它就是0,排在第二个位置就是1。
id号为7,但是它在结果集中是第二条记录。
INSERT语法:INSERT [INTO] tbl_name SET col_name={expr | DEFAULT},...它可以将查找的结果,存储到指定的数据表。说明:与第一种方式的区别在于,此方法可以使用子查询(SubQuery)
案例:users表当中年龄大于30的记录的用户名插入到test表的用户名这一列,注意:因为test表中需要插入的只有一个字段,所以SELECT结果集中也只有一个字段,在插入时要指定test表中指定字段,因为test表中有两个字段,即使是主键自增也不可以。
查看全部 -
order by语句对查询结果排序(除了对分组条件进行指定,还可以对分组的结果进行排序)
语法:[ORDER BY{col_name | expr | position}[ASC | DESC], ...],可以按照某一字段进行排序,也可以按照位置进行排序,和GROUP BY完全相同的,ASC为升序,并且是默认的,DESC为降序,也可以同时以两个或者两个以上字段进行排序。
一个字段进行排序(按照ID降序)
两个字段进行排序(users表中存在很多重复记录,年龄按升序,如果记录相同,则id按照降序排列。
查看全部 -
MyISAM:存储限制可达256TB,支持索引、表级锁定、数据压缩。
InnoDB:存储限制为64TB,支持事务和索引,索颗粒行为行锁。
查看全部 -
通过修改MySQL配置文件实现
-default -storage-engine = engine
通过创建数据表命令实现
-CREATE TABLE table_name(
...
)ENGINE = engine;
查看全部 -
外键
-是保证数据一致性的策略。
索引
-是对数据表中一列或多列的值进行排序的一种结构。
查看全部 -
事务的特性
-原子性
-一致性
-隔离性
查看全部
举报