首先,写SQL语句的第一步是创建数据库
#创建一个demo数据库
CREATE DATABASE demo;
我们写完创建数据库的SQL语句之后需要运行这句语句
[SQL]CREATE DATABASE demo;
[Err] 1007 - Can't create database 'demo'; database exists
你会发现,它报错了,这个错误是:不能创建“demo”数据库,这个数据库已存在!
我们创建的数据库会比较繁多,所以我们可以在创建数据库的时候使用EXISTS这个关键字来解决这个问题,它是用来判断是否存在某个你需要达到的条件;
这时,我们可以使用exists关键字来判断是否存在“demo”数据库
#创建一个demo数据库
CREATE DATABASE if exists demo;
运行之后:
[SQL]CREATE DATABASE if exists demo;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exists demo' at line 1
要是“demo”数据库存在的话,我们就不需要在创建了,
要是“demo”数据库不存在的话,我们就可以创建“demo”数据库。
正确的解决方法就是:使用 not exists关键字
#创建一个demo数据库
CREATE DATABASE if not exists demo;
运行后:
[SQL]CREATE DATABASE if not exists demo;
受影响的行: 1
时间: 0.000s
还有一种可能就是 exists关键字
#删除存在“temp”的数据库
drop table if exists temp;
运行后:
[SQL]drop table if exists temp;
受影响的行: 0
时间: 0.001s
表示:删除成功!
注:
有exists关键字就必定有not exists关键字,因为它们之间是相反的关系 存在(true)或不存在(false)
并且,我们会发现多运行几次这个语句它都不会报错,每次运行结果都是正确的,但它并不会因为你运行了几次就创建几次数据库。
要是存在“demo”这个数据库了,你在继续运行这句语句它都不会进入if里面。
创建表也是和创建数据库一样的,都需要判断是否存在某个表或数据库
这就是为啥要使用exists关键字的好处。
还有第二种使用exists和not exists关键字的用法:
exists也可以作为where语句的子查询
#问题是:检查logic Java课程最近一次考试。如果有成绩达到60分以上者,则显示分数排在前5名学员的学号和分数
select `studentNo` 学号,`studentResult` 成绩 from `result`
where exists(#查询logic Java最后一次考试成绩大于60的记录select * from `result` where `subjectNo`=(select `subjectNo` from `subject` where `subjectName`='Logic Java')and `examDate`=(select Max(`examDate`) from `result` where `subjectNo`=(select `subjectNo` from `subject` where `subjectName`='Logic Java'))and `studentResult`>60)and `subjectNo`=(select `subjectNo` from `subject` where `subjectName`='Logic Java')order by `studentResult` desc Limit 5; #按成绩降序排序,显示前5名
以上是一个很多的例子,大家可以参考参考!!!
反之,not exists也是差不多,这两个关键字有百分之八十的相似度
not exists关键字在这就不一一展示了……