Mysql入门

引入数据库文件,注解(如果没有表,请个人新建)

1
2
use 数据库名称
go

表单格式基本查询

1
2
3
4
5
基本样式:Select[选择列] *(所有表单元素) from(来自) 表名
--例1:
Select * from Student
--例2:
Select StuNo(学生表中的编号) from Student

SQL WHERE 子句

在Sql中Where的作用:满足指定条件的记录。如:>,=,<,<>或!=,>=,<=,BETWEEN,LIKE,IN,EXISTS,ALL,ANY 都在Where后面添加

1
2
3
4
5
基本样式:Select[选择列] *(所有表单元素) from(来自) 表名 where 条件

例子:
-- 查询Student表中ClassName为“计算机应用基础”的课程
select * from Student where ClassName='计算机应用基础'

BETWEEN

BETWEEN 描述:满足指定范围内 例子:Between 10 and 25 (在大于等于10小于等于25之间)

1
2
3
4
5
例子:
-- 查询课程表(Course),报名人数(WillNumber)大于等于10或小于等于25的记录
select WillNum from Course where WillNumber Between 10 and 25
-- 与between..and...相似用法
select WillNum from Course where WillNumber >=10 or WillName<=25

IN

IN 描述:操作数属于子查询中的值之一 例子:In (1,4,7) 或 in( select [字段] from[表]where[条件])

1
2
3
例子:
-- 查询课程表中(Course),课程编号(CouNo) (不) 为“004”、“007”、“013”的记录。
select CouNo from Course wherenotin ('004','007','013')

LIKE 模糊查询

LIKE 通配符:%,_(下划线),[],[^]

1
2
3
4
--  % 描述:表示匹配0个或多个长度的字符
1Like'张%' -- 指的是:查找第一个字符是张的字段
2Like'%张%' -- 指的是:查找第二个字符为张的字段
3Like'%张' -- 指的是:查找最后一个字符为张的字段
1
2
3
--  _(下划线) 描述:表示匹配任意单个字符
1Like'_bcd' -- 下划线表达一个字符,_bcd,所出来的效果将会是在下划线部分匹配一个字后接bcd的形式,例如:abcd,1bcd,我bcd,¥bcd
2Like 'ab_d' -- ab?d 如上
1
2
3
4
5
--  [] 描述:表示匹配指定范围内的任意单个字符
1Like 'ab[ i-k ]d'

Like 'ab[ijk]d'
-- 表示的是:在ab?d中,查询"?"里为 [ijk]的字符:abid,abjd,abkd
1
2
3
--  [^] 描述:表示匹配不在指定范围内的任意单个字符 
1Like 'ab[ ^i-k ]d'
-- 表示的是:ab?d中,查询"?"里不为[ijk]的字符:abid,abjd,abkd
1
2
3
-- 总结例题:
-- 查询学生选课表(Stucou),随机数(RandomNum)的第4位为A和C,最后一位不是ABCDEK、1~9的记录。
select RandomNum from Stucou where Like '___[AC]%[^A-EK1-9]'

EXISTS

子查询有结果集(相关与非相关)

相关查询

1
2
3
4
5
6
7
8
9
10
11
-- 语法格式
Exists ( select * from [表] where [条件] )
例子:
Select * from-- 外查询

Where Exists -- 条件

(
Select 1 from StuCou Where StuNo=Student.Stu.No and State='报名' ) -- 子查询

//过程:将Student表中的StuNo字段,逐条逐条放到子查询中,看是否满足,满足则返回True,否则返回False

不相关查询

1
2
3
4
5
6
7
8
Select Student -- 外查询
Where StuNo=00000031
Where NOT EXISTS
(
Select 1 From StuCou Where StuNo =00000031’)-- 子查询

-- 过程:直接运算子查询,如果子查询有记录(不管什么内容)则返回True,否则返回False。
-- 意义:避免重复插入
1
2
3
4
5
6
7
8
9
-- 总结例题:查询学生表(Student),班级为“01数据库”的学生信息。(即Student表中的ClassNo字段,满足子查询:Class表中ClassName为“01数据库”的记录)

Select * from Student -- 首先查询Student表
where Exists -- 执行条件
(
select ClassNo from Class -- 查询ClassNo在Class表中
where
ClassNo=Student.ClassNo and ClassName=01数据库” -- 子查询)
)

All

格式:比较运算符 ALL (子查询) ALL的意思是是都多

1
2
3
4
-- 例子: 查询课程表(Course)中,报名人数(WillNum)比“工程技术”类的报名人数(WillNum)都多(大于最大值)的课程记录。
Select * From Course -- 查询Course表
Where WillNum > ALL -- 条件
( Select WillNum From Course Where Kind='工程技术' //子查询 )

ANY

格式:比较运算符 ANY ( 子查询 )

1
2
3
Select * From Course -- 查询Course表
Where WillNum > ANY -- 条件
( Select WillNum From Course Where Kind='工程技术' //子查询 )