这样写好一些,因为如果以后要添加了字段的话(一般是不得已)
那么你用select * 取出的就不是你想要的数据
这样使用的时候也会出现一些问题
安全起见,最好不要写select *
那么你用select * 取出的就不是你想要的数据
这样使用的时候也会出现一些问题
安全起见,最好不要写select *
解决方案 »
- 多线程的非主线程是否会自动销毁
- VS2005打包winform程序后安装在电脑上出错,急,麻烦各位大侠帮帮忙!!!
- 问一个关于config文件修改的问题
- winform中数据类型转换问题
- C#中怎么取时间的年月日时分秒啊?
- TCP 传输协议 关于自动处理收发信息
- 一个关于sql语句写法的问题
- 如何实现 单击浏览按扭弹出文件选择框
- vc#有没有象vc++中mfc和c++builder中的vcl的东西
- <ADO.NET程序设计>一书到底有没有附带的练习盘?
- 各位进来,分析一下java和ms路线(c#,vb.net,asp.net等)的优劣及就业前景?
- DateTimePicker控件中获得的时间值,为什么不能直接写到SQL server 2000 数据库中?????!
SELECT
col1,
col2,
col3,
...
FROM
table1
...^…^
因為用select * from 表,Sql就要到系統表中查找這個表的所有字段,
而用select a,b,c,....指定後Sql就不需要到系統表中查找
好处是如果table新增的字段,正好是你想要的,就不用修改的,
坏处是如果table新增的字段,正好不是你想要的,而且字段内容很大,那就有效率问题。
而且如果后面有group by语句的话,还是不要偷懒吧,加了字段就可能出错了。
解决办法是使用参数化查询和使用存储过程,但是有些人认为麻烦,认为不会有很大的问题,尤其是简单的语句,但是试验表明差别是很大的,运行一次可能差别不大,但是一百次,差别就很明显了,不信自己作个试验试试看。
例如:select name,age from a ;select age,name from a;这只是我的看法,不清楚同效率又没有关系。
学习中。。
select * 根本不知道你需要哪几个字段;看看微软,Oracle 的SQL源码等,我们会学到不少的东东。
你楼上的也把SQL SERVER看的太笨了吧。
SQL SERVER有智能,即使是不同的查询语句,SQL SERVER也会对比彼此的执行规划,看哪个更经济。
你只要看看执行规划就知道了,SELEC * FROM TABLE 和SELECT COL1,COL2....的查询规划是一个样的,即使是打开了set forceplan off其执行规划也是一样的,也就是说这样个语句对SQL SERVER来说是一样的。只是对看代码的人不一样而已。
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-12月-80 800
20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7566 JONES MANAGER 7839 02-4月 -81 2975
20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
30 7698 BLAKE MANAGER 7839 01-5月 -81 2850
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7782 CLARK MANAGER 7839 09-6月 -81 2450
10 7788 SCOTT ANALYST 7566 19-4月 -87 3000
20 7839 KING PRESIDENT 17-11月-81 5000
10
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
30 7876 ADAMS CLERK 7788 23-5月 -87 1100
20 7900 JAMES CLERK 7698 03-12月-81 950
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7902 FORD ANALYST 7566 03-12月-81 3000
20 7934 MILLER CLERK 7782 23-1月 -82 1300
10
已选择14行。已用时间: 00: 00: 00.05
SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-12月-80 800
20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7566 JONES MANAGER 7839 02-4月 -81 2975
20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
30 7698 BLAKE MANAGER 7839 01-5月 -81 2850
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7782 CLARK MANAGER 7839 09-6月 -81 2450
10 7788 SCOTT ANALYST 7566 19-4月 -87 3000
20 7839 KING PRESIDENT 17-11月-81 5000
10
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
30 7876 ADAMS CLERK 7788 23-5月 -87 1100
20 7900 JAMES CLERK 7698 03-12月-81 950
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7902 FORD ANALYST 7566 03-12月-81 3000
20 7934 MILLER CLERK 7782 23-1月 -82 1300
10
已选择14行。已用时间: 00: 00: 00.08