建立数据库表时,百分数要用字符类型。
原因:因为百分号(%)不是可读的数字类型,除非用小数表示,否则只能用字符类型来保存。
工具:mysql 5.6
测试步骤:
1、数据库中test表结构如下,其中col1为字符类型,col2位数字类型
2、在col1中插入50%这个数据。语句如下:
insert into test(col1) values ('50%')插入后结果:
3、在col2中也插入50%这个数据,语句如下:
update test set col2=50%系统会报错:
总结:说明带百分号的数据只能用字符类型来存储。
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。第二:存储过程可接受参数、输出参数、返回单个或多个结果集及返回值。向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列SQL语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
扩展资料:
存储过程的优点:
1、存储过程的能力大大增强了SQL语言的功能和灵活性。
2、可保证数据的安全性和完整性。
3、通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
4、通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
5、在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
6、可以降低网络的通信量。
7、使体现企业规则的运算程序放入数据库服务器中,以便集中控制。
sql2005以后.优先使用如下方式,扩展性强。---------------------------------------------------------------------
select A.* from
(
SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS rownum ,B.*
FROM dbo.testB
) A
where A.rownum>=1 and A.rownum<=(select count(*)*3/10 from dbo.test)
---------------------------------------------------------------------
2000 数据库
SELECT TOP (select count(*)*3/10 from dbo.test) * FROM test order by ID DESC
----------------------------------------------------------
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)