查自己子类的个数,也可以通过这个sql语句实现:
mysql> select p.type_id,p.type_name,(select count(*) from tdb_goods_types as s
-> where s.parent_id = p.type_id) as '子类' from tdb_goods_types as p;
mysql> select p.type_id,p.type_name,(select count(*) from tdb_goods_types as s
-> where s.parent_id = p.type_id) as '子类' from tdb_goods_types as p;
2017-06-22
最赞回答 / GCYangXiXi
错误一:刚开始创建的函数体内,你将test表写成了user表,而user表内有password这个字段,不能为空且没有默认值,所以你在调用函数的时候,会报错,说你password字段没有赋值;错误二:删除原有函数,创建新的函数时,没有修改定界符,所以在你写到INSERT test(username) VALUES(username);这一句时,以分号结尾,mysql会以为你的命令已经写完,就开始编译,而这样的语句是错误的,所以会报你syntax的错误
2017-06-21
三、减少了网络流量
如果我们通过客户端每个单独发送sql语句让服务器来执行,那么通过http协议所提交的数据量相对而言比较大。假设我们准备删除user表中id为3的记录 delete from user where id=3;这句话的字符量大约超过了30个字符,如果我们把他存储成存储过程的话,假设有一个存储过程叫delete user,我们只需要调用delete user吧id传过去就可以完成了删除,所以我们会发现,我们只需要来传递存储过程的名字以及要删除的那个id的号码就可以了。所以他提交给服务器的数量就会少很多。减少了网络流量
如果我们通过客户端每个单独发送sql语句让服务器来执行,那么通过http协议所提交的数据量相对而言比较大。假设我们准备删除user表中id为3的记录 delete from user where id=3;这句话的字符量大约超过了30个字符,如果我们把他存储成存储过程的话,假设有一个存储过程叫delete user,我们只需要调用delete user吧id传过去就可以完成了删除,所以我们会发现,我们只需要来传递存储过程的名字以及要删除的那个id的号码就可以了。所以他提交给服务器的数量就会少很多。减少了网络流量
2017-06-20
存储过程的优点,
一、增加sql语句的功能和灵活性
因为在存储过程内可以写控制语句,name就有很强的灵活性,可以完成复杂的判断以及较复杂的运算
二、实现较快的执行速度。
如果执行某一个复杂的操作,包含大量的sql语句,那么这些语句都将被mysql的引擎执行语法分析、编译、以及执行的过程,所以执行效率相对较低。而存储过程是预编译的,当客户端第一次调用这个存储过程的时候,mysql的引擎将对它进行语法分析、编译等操作,然后把这个编译的结果存储到内存当中,所以,第一次的的执行效率适合以前一样。但是以后客户端再次调用这个存储过程的时候便直接从内存当中来执行,所以说效率比较高,速度比较快。
一、增加sql语句的功能和灵活性
因为在存储过程内可以写控制语句,name就有很强的灵活性,可以完成复杂的判断以及较复杂的运算
二、实现较快的执行速度。
如果执行某一个复杂的操作,包含大量的sql语句,那么这些语句都将被mysql的引擎执行语法分析、编译、以及执行的过程,所以执行效率相对较低。而存储过程是预编译的,当客户端第一次调用这个存储过程的时候,mysql的引擎将对它进行语法分析、编译等操作,然后把这个编译的结果存储到内存当中,所以,第一次的的执行效率适合以前一样。但是以后客户端再次调用这个存储过程的时候便直接从内存当中来执行,所以说效率比较高,速度比较快。
2017-06-20
存储过程
存储过程存储在数据库内,可以有应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储过程可以接受参数,可以介绍输入类型的参数,也可以接受输出类型的参数,并且可以存在多个返回值。所以存储过程的效率要比我们单一的sql语句执行的效率要高,比如:
假设我们写了两条sql的语句,mysql会对这两天语句逐一的进行分析、逐一的进行编译,在进行逐一的执行,而我们采用的存储过程以后,只有在第一次才进行语法分析和编译,以后我们客户端再去调用,会直接来调用执行的结果,其中就省略了再次的语法分析和编译过程。
存储过程存储在数据库内,可以有应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储过程可以接受参数,可以介绍输入类型的参数,也可以接受输出类型的参数,并且可以存在多个返回值。所以存储过程的效率要比我们单一的sql语句执行的效率要高,比如:
假设我们写了两条sql的语句,mysql会对这两天语句逐一的进行分析、逐一的进行编译,在进行逐一的执行,而我们采用的存储过程以后,只有在第一次才进行语法分析和编译,以后我们客户端再去调用,会直接来调用执行的结果,其中就省略了再次的语法分析和编译过程。
2017-06-20