-
插入记录:
INSERT [INTO] table_name [(col_name,...) {VALUES | VALUE} ({expr | DEFAULT},...),(...),...如果想对自动递增的字段赋值,可以输入NULL或者DEFAULT.
对整型字段赋值,可以使用数学表达式。
对于设置了默认约束的字段赋值,可以直接输入DEFAULT.
INSERT 插入记录
语法1:INSERT [INTO] 表名 [(列名1,列名2,...)] VALUES(列值1,列值2,...),(...),...;
对于自动编号的字段,插入“NULL”或“DEFAULT”系统将自动依次递增编号;
对于有默认约束的字段,可以插入“DEFAULT”表示使用默认值;
列值可传入数值、表达式或函数,如密码可以用md5()函数进行加密(如md5('123')); md5是PHP中的哈希函数
可同时插入多条记录,多条记录括号间用逗号“,”隔开
查看全部 -
mysSQL是瑞典AB 公司开发的,目前属于Oracle公司
是一个开源的关系型数据库管理系统
分为社区版和企业版
查看全部 -
第二章总结
查看全部 -
本节回顾上章内容。
查看全部 -
#创建goods_cat_table表,并将goods表中的cat_id查询出来也放在goods_cat_table表中。 create table goods_cat_table(cat_name varchar(20)) select cat_id from goods group by cat_id;
更新goods表 将goods表中的cat_id的数字标识全部更改为文字标识(注意字段的属性 数字/字符串)
update goods join goods_cat_table a on goods.cat_id=a.cat_id set goods.cat_id=a.cat_name;
查看全部 -
左外连接 left outter
查看全部 -
内连接 inner join
查看全部 -
5-6 多表更新
2019-06-18
多表更新(参照另外一张表更新本表的记录)
语法: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:右外连接。
案例:使用INNER JOIN连接两张表,并作为表的参照关系进行多表更新,更新商品表id=22的商品分类属性,修改为6,因为商品分类的名称在商品分类表中对应的id为6
结果:数据信息被更新了
多表更新
UPDATE table_references
SET col_name1 = {expr1|DEFAULT}
[, col_name2 ={expr2|DEFAULT}]...
[WHERE where_condition]
语法结构
{[INNER|CROSS] JOIN | {LEFT|RIGHT} [OUTER]JOIN}
table_reference
ON conditional_expr
UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name;
SET goods_cate = cate_id;
SELECT * FROM tdb_goods\G;
查看全部 -
5-5 使用INSERT...SELECT插入记录
2019-08-15
创建一张表
CREATE TABLE tdb_goods_cates(
cate_id SMALLiNT UNSIGNED PRIMARY KEY AUTO_INCREMENT,cate_name VARCHAR(40) NOT NULL);
查看分类
SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
将查询结果写入数据表 INSERT SELECT
语法:INSERT tbl_name (列名) SELECT 【不用写value】
INSERT tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
使用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将查询的结果直接写入数据表
将分组以后的结果插入到我们新创建的数据表当中
但是此时商品表还没有分类表的外键,需要参照分类表更新商品表,以前学习的是单表更新,但是现在商品表需要参照分类表进行更新,所以这就是多表更新。查看全部 -
5-4 由[NOT] IN/EXISTS引发的子查询
2019-06-16
二、由[NOT]IN引发的子查询
1、使用[NOT]IN的子查询
语法结构:operand comparison_operator [NOT] IN (subquery)=ANY运算符与IN等效,!=ALL或<>ALL运算符与NOT IN等效。
三、使用[NOT]EXISTS的子查询(不经常使用)
定义:如果子查询返回了结果,EXISTS将返回TRUE;否则为FALSE。
查看全部 -
5-3使用比较运算符的子查询:
修饰符
SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= ANY(SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本') ORDER BY goods_price DESC;
SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > ALL(SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本') ORDER BY goods_price DESC; # 查找价格比所有的超级本类型的商品价格还要大的商品
#-- 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列
SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price = ANY(SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本') ORDER BY goods_price DESC;
#-- 查询价格等于任意"超级本"价格的商品,并且按价格降序排列
查看全部 -
SELECT
记录查找
例如:SELECT * FROM tb1;
就是显示表tb1中的所有记录。
查看全部 -
插入表,即可精准插,也可总插。
查看全部 -
SHOW COLUMNS FROM tbl_name
用来查看数据表的结构
查看全部 -
SHOW TABLES
用来查看数据表。
查看全部
举报