飞比寻常 (JOE) 生,简单,活,简单,生活,不简单!
JOE个人网站
JOE个人网站,不仅仅是一个网站,更像是一个展现自我的平台,致力于让朋友们都可以
有所感触,有所收获。
# 只罗列不重复的(字段) select distinct name from users; # between,之间,包含首尾 select * from users where id between 2 and 6; 包括2和6; # inner join = join 内连接 只当有匹配才返回 left join 无论有无匹配 返回左边表所有 right join 无论有无匹配 返回右边表所有 full join 全表返回 # union (默认会去掉重复数据) 操作合并两个或多个select 语句 select name from table1 union select name from table2; order by 只难写在最后,而且是对结果进行统一排序,所以两表查询字段数要一样(结果会按字段序号直接写到table1查询字段后面); 如果想要union 与 order by 共存,可以这样操作: "select name from (select name from users where name >=5 order by name asc) as name1 union select name from (select name from users where name < 5 order by name desc) as name2"; # 复制表或者字段到另一个已经存在的表 insert into table2(field1,field2) select value1,vaue2 from table1; # in(0) 在某些环境下会被忽略,要用in(-1) 更新表a字段name值等于表b的name值,条件是a表中b_id等于表b的id值 update table_a,table_b set table_a.name=table_b.name where table_a.b_id=table_b.id; # 导入数据库 $sql="LOAD DATA INFILE '".$file."' INTO TABLE `test` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'(`time` , `md5`)"; # 嵌套查询 查询前提:tables表的id是父表,reservs表是子表,它里面有一个外键是tableId,对应table表中的id; 查询需求:通过时间范围查出reservs表中在这个范围内的时间对应的tableId;再通过table表查询不在刚查出的tableId内的所有其他id的信息,并返回; SQL语句设计: $sql = "SELECT tables.name FROM tables WHERE tables.id NOT IN (SELECT tableId FROM reservs WHERE arriveDateTime BETWEEN '".$lefttime."' and '".$righttime."')"; # 多表查询:今天使用的,表A数据要,表B是表A子表,当外键存在,就要,不存在就返回空,C表同B表; SELECT A.id,A.name,B.good,C.title FROM A LEFT JOIN B ON A.bId = B.id LEFT JOIN C ON A.cId = C.id WHERE A.id=:id; # 外键: 建表时:字段类型与父表一致: categoryId INT UNSIGNED, (同样的INT UNSIGNED) KEY categoryId(categoryId), CONSTRAINT category_id FOREIGN KEY (categoryId) REFERENCES CATEGORIES (id) 建表后:alter table StatType add constraint FK_1 foreign key (StatTypeID) references 父表名 (StatTypeID) alter table CATEGORIES add foreign key(Printer_id) references PRINTERS(id) KEY `PrinterId`(`PrinterId`), CONSTRAINT `Printer_id` FOREIGN KEY (`PrinterId`) REFERENCES `PRINTERS` (`id`) 创建外键的表和原表字段类型要完全一样,包括长度,否则会报errno150错误; 如原user表ID为id int unsigned not null, 外键表为userId int unsigned, UNSIGNED KEY PrinterId(PrinterId), CONSTRAINT PrinterId FOREIGN KEY (PrinterId) REFERENCES PRINTERS (id)