1. 检索数据(select * from <table name>)
作用:查询数据
数据按行存储在表中,行由列组成。最简单的查询形式由两部分组成:
(1).SELECT列表,指定所要检索的列。
(2).FROM子句,指定所要访问的表
示例如下:
select Name,SSN from MySqlTable
使用WHERE子句
WHERE子句为选择的行指定条件
语法如下:
WHERE <column1> <operator> <column2 / value> --operator是比较运算符(如,=,<>,>和<等)
select Name,SSN from MySqlTable where Name = 'Rupali'
2. 数据排序(Order by <column> [ASC | DESC])
作用:按照某种顺序对数据进行排序
例如,我有如下UserLogin数据表:
现在我们使用如下语句进行数据排序
select CardId,UserName,LoginPwd,LoginType from UserLogin
where LoginType = 1
Order by CardId Asc
结果如下所示:
3. GROUP BY 子句
作用:用于分组输出行
例如,我们按LoginType来分组输出行,语句如下:
select LoginType, COUNT(LoginType) As 'Total Count'
from UserLogin
Group by LoginType
order by LoginType
4. 模式匹配
作用:用来确定指定字符串与指定模式是否匹配的一种方法
模式可以使用一般字符和通配符的组合来创建。
一般字符:必须与字符串中指定的字符完全匹配。
通配字符:
%(百分号):该通配符表示0或多个字符
_(下划线):表示任何单个字符
[ ](方括号):指定在指定范围(如[a-f])或集合(如[abcdef]或[adf])内的任何一个字符
[^](方括号和脱字符):指定不在指定区域(如[^a-f])或集合(如[^adcdef])内的任何一个字符
试试使用通配符:
select CardId,UserName,LoginPwd,LoginType from UserLogin
where LoginPwd like '1%'
5. 聚合函数(SUM,MAX,MIN,AVG,COUNT)
作用:应用于行集,返回一个值
使用COUNT,返回记录总数。
6. DATETIME函数
作用:获取时间信息
7. 列表操作符(IN/NOT IN)
作用:允许根据条件指定列表选项
8. 范围操作符(BETWEEN/NOT BETWEEN)
作用:允许根据条件指定数据的范围
9. 查找空值(IS NULL/IS NOT NULL)
作用:判断查询的数据值是否为空,通常包含在WHERE条件子句中
10. 连接
作用:连接是一种关系数据库操作,它从两个表(不一定不同)中检索数据,根据连接规范匹配它们的行,最终生成一个表。
(1). 内连接
内连接是最常用的连接,它只返回满足连接规范的行。理论上,在连接规范中可以是使用任意关系运算符(如>或<),但一般总是使用等号运算符(=)。使用等号运算符的连接称为自然连接。
基本语法:
select
<select list>
from
left-table INNER JOIN right-table
ON
<join specification> --连接规范
表的别名
作用:给表或任何SQL查询中需要的每个表指定一个简短别名的技术
注意:别名是临时的,生存期是到执行完查询为止
为了演示内连接,我们再创建一张UserLogin1的表,如下:
我们回顾一下UserLogin表,如下:
下面我们把UserLogin与UserLogin1表根据CardId相同的条件进行连接
如下所示:
(2). 外连接
外连接(至少)返回一个连接表中的所有行,即使一个表中的行不匹配另一个表中的行也是如此。
外连接有三种类型:
左外连接:会提取左表中的所有行,而不管它是否匹配右表中的行
右外连接:会提取右表中的所有行,而不管它是否匹配左表中的行
全外连接:将返回两个表中的所有行
分别演示如下所示:
(3). 其他连接
UNION JION:创建一个包含两个表中所有行的表。对于两个表,它等价于下面的查询:
select * from table1
union all
select * from table2
注意:两个表必须有相同数量的列,对应列的数据类型必须兼容(可以包含相同类型的数据)
CROSS JION:连接两个表中的所有行,不提供连接规范。
该连接会生成一个表,其中包含两个表中的所有列,其行数等于两个表中的行数乘积。