数据库sql的增删查改
查询
四张表 地址表:store, 县区表:areas,省表:provinces,市表:cities
concat 拼接字符,因为我要查下店铺的省市区,所以我要查下四张表,表之间进行关联, 店铺下的地址是字符串之间使用了空字符串隔开, mysql函数中没有分割函数的方法, 然后有一个FIND_IN_SET
FIND_IN_SET(str,strlist)
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
查询字段(strlist)中包含(str)的结果,返回结果为null或记录
假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
FIND_IN_SET(2,'1,2,4,7,9,2') 我们想的是,省市区,先观察表先这很重要,相当于先要把省市区表进行三者关联 然后在把这三者中有一个能店铺进行关联,就是4个表都进行关联了 然后我们就要去区那么拿到市进行关联,c.`citycde`=a.`cityCide` , ok之后 把市跟省链接p.`provinceid`= c.`provinceCode`,这样三者就有联系了 最后我们要把三者跟商店进行关联,一般我们住某个地方,会第一想到那个区, 所有我们就要拿区去跟店铺的字符串列表进行关联,这样就相当于四个都进行关联了
结果
/*1.查询学生表01的成绩语文在60之70的有谁*/
两张表 学生表为student 和成绩表achievement
结果
a:)内链接
查询两张表公用的数据
方法①:MySQL的语法
关键字:inner join
SELECT * FROM `student01` st
INNER JOIN `class01` cl ON st.`student01`= cl.`studentId`
b:)左链接
方法一:MySQL的语法
关键字:left join
SELECT * FROM student01
LEFT JOIN class01 ON student01.student01 = class01.studentId
方法②:Oracle的语法
右(+)连接:(相当于Left Join)
SELECT * FROM `student01` st, `class01` cl
WHERE st.`student01` = cl.`studentId`(+);
c:)右链接
方法一:MySQL的语法
关键字:rift join
SELECT * FROM student01
RIGHT JOIN class01 ON student01.student01 = class01.studentId
新增数据
insert into 表名(列1,列2...列N) values(值1,值2...值N);
修改表数据
update 表名 set 列1 = 值1,列2 = 值2...列N = 值N where过滤条件;
删除数据库表的数据
delete from 表名 where过滤条件
删除表
drop table 表名;-->删除表的数据与结构
delete from 表名;-->仅删除表的数据,可以回滚rollback; truncate table 表名;-->仅删除表的数据,不可以回滚
查询语句(有很多的语法的,例如左,右链接,全链接,内链接等)
select 列1,列2,列3...列N 或 * from 表名/(表达式)
[where 过滤条件]
[group by 分组内容]
[having 组内条件]
[order by 排序方式]
数据库sql的增删查改