飞比寻常 (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)