select为什么不能用*
CREATE TABLE `employees` (
`employeeNumber` int(11) NOT NULL,
`lastName` varchar(50) NOT NULL,
`firstName` varchar(50) NOT NULL,
`extension` varchar(10) NOT NULL,
`email` varchar(100) NOT NULL,
`officeCode` varchar(10) NOT NULL,
`reportsTo` int(11) DEFAULT NULL,
`jobTitle` varchar(50) NOT NULL,
PRIMARY KEY (`employeeNumber`),
KEY `reportsTo` (`reportsTo`),
KEY `officeCode` (`officeCode`),
CONSTRAINT `employees_ibfk_1` FOREIGN KEY (`reportsTo`) REFERENCES `employees` (`employeeNumber`),
CONSTRAINT `employees_ibfk_2` FOREIGN KEY (`officeCode`) REFERENCES `offices` (`officeCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
现在,我们有一个employees表,需要从employees表查全部字段信息,在生产环境,一定不要使用 SELECT * FROM employees;
而要罗列出所有要查询的字段,原因如下:
1.使用*会返回所有的字段,而有些字段你可能不会使用,这样就造成磁盘I/O和网络带宽的浪费。
2.明确罗列返回的字段,使查询结果可控、可维护,如果别的兄弟改了表结构,比如,加了几个字段,*返回的结果可能就不是你想要的结果了。
3.使用*会返回所有字段的信息,万一有些字段包含敏感信息,就可能造成敏感信息泄露给未授权的用户。