为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
学习人数
综合评分9.67
950人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 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将在找到符合连执着条件的记录后停止搜索更多的行。


    查看全部
    0 采集 收起 来源:多表连接

    2019-03-13

  • 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;


    查看全部
    0 采集 收起 来源:内连接INNER JOIN

    2019-03-13

  • 连接

    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 ;


    查看全部
    0 采集 收起 来源:多表更新

    2019-03-13

  • 本节知识点总结

    https://img1.sycdn.imooc.com//5c8761480001122418800912.jpg

    查看全部
    0 采集 收起 来源:小结

    2019-03-12

  • //带有输入输出的

    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');

    查看全部
    0 采集 收起 来源:MySQL 加密函数

    2019-03-12

  • //计算两个日期之间相差了多少天

    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 

    查看全部

举报

0/150
提交
取消
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!