-
round 四舍五入查询的结果,可指定小数位查看全部
-
数据表瘦身之后,需要呈现给客户看的时候,要将更替的数字变成文字,此时就需要多表连接:
MySQL中Select语句、多表更新、多表删除语句中支持JOIN操作。
table reference {INNER | CROSS] JOIN | {LEFT | RIGHT) [OUTER] JOIN table_reference ON conditional_expr
【注意】1.数据表可以使用tbl_name AS alias_name或tbl_name alias_name赋予别名。
2.table-subquery可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名。3.通常使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。
{内连接:仅显示符合连接条件的记录,比如
外键连接:左外连接:显示左表符合查找条件的全部;右外连接:显示右表符合查找条件的全部。}
三张表进行连接:
如:SELECT goods_name, goods_id,cate_name,brands_name,goods_price FROM tdb_goods AS g INNER JOIN tdb_goods_cate AS c ON g.cate_id=c.cate_id INNER JOIN tdb_goods_brands AS b ON g.brands_id=b.brands_id\G;
呈现出的就是经过连接形成的可以给客户看懂的数据表。
【NOTE】
外连接:
A LEFT JOIN B join_condition(左外连接,右外连接情况下调换AB就可)
数据表B的结果集依赖数据表A。(A中有的记录才可以在B中显示,否则不显示)
数据表A的结果集根据左连接条件依赖所有数据表(B表除外)。
左外连接条件决定如何检索数据表B(在没有指定WHERE条件的情况下)。(A表决定B表)
如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,将生成一个所有列为空的额外的B行。如果使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试以下操作: col-namd IS NULL时,如果col-name被定义为NOT NULL, MySQL将在找到符合连执着条件的记录后停止搜索更多的行。
查看全部 -
INNER JOIN,内连接
在MySQL中,JOITERN,CROSS JOIN和INNER JOIN是等价的。
LEFT [OUTER] JOIN左外连接 显示左表的全部记录和右表中复合连接条件的记录
RIGHT [OUTER] JOIN,右外连接
连接条件
使用ON关键字来设定连接条件,也可以使用WHERE来代替。
通常使用ON关键字来设定连接条件,使用where关键字进行结果集记录的过滤。
eg:SELECT goods_id,goods_name,cate_name FROM tdb_goods INNER JOIN tdb_goods_cates ON tdb_goods.cate_id=tdb_goods_cates.cate_id;
查看全部 -
连接
MySQL在SELECT语句、多表跟新、多表删除语句中支持JOIN操作.
table_reference
{
[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}
table_reference
ON conditional_expr
}
----------------------------------------------------------------------
table_refernce
tbl_name [[AS] alias] | table_subquer [AS] alias
数据表可以使用tbl_name AS alias_name
或者 tbl_name alias_name赋予别名。
table_subquery可以作为子查询使用在FROM 子句中,
这样的子查询必须为其赋予别名。
查看全部 -
如果数据表中文字符很多,而且数据很多时那么查询运行的时间将会很多,所以有时必要将一些文字编程数字,方便查询。那么就需要建立外键,将文字转化成数字(如类型转化成品类1,2,3、、、)
一、因此先创建一个数据表: GREAT TABLE good_cates FROM tdb_goods IF NOT EXISTS good_cate;
二、然后查看总表里要更改的品类有多少个类型:SELECT good_cate FROM tdb_good GROUP BY good_cate;
三、然后将查询到的品类写入到新建表中(查看表结构DESC tdb_goods_cates;):
INSERT tdb_goods_cates(cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
四、最后根据分类表更新总表(多表更新):
UPDATE table references SET col_namel={expr1|DEFAULT) [,col_name2={expr2 | DEFAULT])]...[WHERE where_condition]
两张表的链接可以赋予别名也可以不赋予别名,即使用表的名称进行连接。或者还可以使用表的类型进行连接。
如:UPDATE tdb_goods INNER JOIN(常用) tdb_goods_cateS ON(条件) goods_cate=cate_name SET(更新的值) goods_cate=cate.id.
表的更新步骤为:
一、创建表
二、INSERT SELECT 将记录写入数据表
三、多表的更新
多表更新:
(1) UPDATE table_references SET col_name1={expr1| DEFAULT}[ , col_name2={expr2 | DEFAULT] ... [WHERE where_condition]
(2) CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,...] select_statement
方法(2)要优于方法(1),方法(2)相当于将查询和插入结合在一起
由于
如:语句一:SELECT brand_name FROM tdb_goods group by brand_name;
语句二:
CREAT TABLE tdb_goods_brands
—>(
—>brand_id SMALLINT UNSIGEDV PREMAY KEY AUTO_INCREMENT,
—>brand_name VARCHAR(40) NOT NULL
—>)
—>SELECT brand_name FROM tdb_goods GROUP BY brand_name;
用表的别名进行表的更新更方便:
如:UPDATE tdb_goods AS g INNERJOIN tdb_goods_brands AS b ON g.brand_name=b.brand_name
—>SET g.brand_name=b.brand_id;
五、在更新表之后,由于表的结构可能还是字符型,因此先查看一下表的结构:
SHOW COLUMNS FROM tdb_goods;(或者DESC tdb_goods)
六、然后更改结构,即将字符改成数字:
ALTER TABLEtdb_goods
—>CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,
—>CAHNGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;
此时才是真正的对数据表减肥
查看全部 -
- 通过tdb_goods_cates数据表来更新tdb_goods表
UPDATE tdb_goods(表) INNER JOIN (内连接)tdb_goods_cates(表) ON goods_cate = cate_name (on连接条件)
SET goods_cate = cate_id ;
查看全部 -
本节知识点总结
查看全部 -
//带有输入输出的
create procedure removeUserByIdReturnNums(in u_id int unsigned,out nums int unsigned)
-> begin
-> delete from user where id = u_id;
-> select count(*) from user into nums;
-> end
-> //
Query OK, 0 rows affected (0.01 sec)
mysql> call removeUserByIdReturnNums(1,@nums)//
Query OK, 1 row affected (0.01 sec)
mysql> select @nums//
+-------+
| @nums |
+-------+
| 0 |
+-------+
查看全部 -
create procedure sp1() select version();//存储过程
查看全部 -
修改mysql 默认分隔符;
delimiter //
create function adduser(username varchar(20))
-> returns int unsigned
-> begin
-> insert user(username) values(username);
-> return last_insert_id();
-> end
-> //
查看全部 -
create function f2(num1 smallint unsigned,num2 smallint unsigned) returns float(10,2) unsigned return (num1+num2)/2;
drop function f2;
查看全部 -
set global log_bin_trust_function_creators=TRUE;
create function f1() returns varchar(50) return date_format(now(),'%Y年-%m月-%d号 %H时:%i分:%s秒');
查看全部 -
修改当前用户的password
set password = password('22222');
查看全部 -
//计算两个日期之间相差了多少天
select datediff('2018-3-11','2019-3-12');
//日期格式化
select date_format('2019-5-6','%m/%d-%y');
查看全部 -
select date_add('2019-3-12',interval 1 year); //week
查看全部
举报