一、预备知识
最常见的数据库类型是关系型数据库管理系统,关系型数据库=多张表+各表之间的关系
二、基本语法
1、CREATE TABLE-创建表
CREATE TABLE 表名
(列名称1 数据类型,
列名称2 数据类型,
...);
常见的数据类型
数据类型 | 描述 |
integer(size),int(size),smallint(size),tinyint(size) | 仅容纳整数,在括号内规定的最大位数 |
decimal(size,d),numeric(size,d) | 容纳带有小数的数字,size规定数字的最大位数,d规定小数点右侧的最大位数 |
char(size) | 容纳固定长度字符串(可容纳字母、数字以及特殊字符),在括号中规定字符串长度 |
varchar(size) | 容纳可变长度字符串(可容纳字母、数字以及特殊字符),在括号中规定字符串长度 |
date(yyyymmdd) | 容纳日期 |
2、INSERT INTO-插入数据
INSERT INTO 表名称(列1,列2,列3...) VALUES(值1,值2,值3...);
3、SELECT-查询数据
SELECT 列名称 FROM 表名称;
4、DISTINCT-去除重复值
SELECT DISTINCT 列名称 FROM 表名称;
5、WHERE-条件过滤
SELECT 列名称 FROM 表名称 列 运算符 值;
运算符梳理:
6操作符 | 描述 |
= | 等于 |
<>/!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
AND | 和 |
OR | 且 |
6、ORDER BY-排序
SELECT * FROM 表名称 ORDER BY 列1,列2;
# ASC升序,DESC降序
7、UPDATE-更新数据
UPDATE 表名称 SET 列名称=新值 WHERE 列名称=某值;
8、DELETE-删除数据
用于删除表中的行
DELECT FROM 表名称 WHERE 列名称=值;
9、TRUNCATE TABLE-清除表数据
TRUNCATE TABLE 表名称;
10、DROP TABLE-删除表
DROP TABLE 表名称;
三、高级语法
1、LIKE-查找类似值
LIKE操作符用于在WHERE子句中搜索列中的指定模式
A开头:LIKE 'A%'
B结尾:LIKE '%B'
包含C:LIKE '%C%'
不包含D:NOT LIKE '%D%'
SELECT 列名 FROM 表名 WHERE 列名称 LIKE 值;
2、IN-锁定多个值
允许在where语句中规定多个值
SELECT 列名称 FROM 表名称 WHERE 列名称 IN(值1,值2,值3);
3、BETWEEN-选取区间数据
BETWEEN...AND..可选取介于两值之间的数据
SELECT 列名 FROM 表名 WHERE 列名称 BETWEEN 值1 AND 值2;
#不同数据库对于值1和值2的处理方式不同
4、AS-别名
给表或者列起别名
①表别名
SELECT * FROM 表名称 AS 别名;
②列别名
SELECT 列名称 AS 别名 FROM 表名称;
实际使用时,AS可以省略,但是别名要加上" "
5、JOIN-多表关联
用于根据两个或多个表中列的关系,从这些表中查询数据
SELECT 列名 FROM 表名A
INNER/LEFT/RIGHT/FULL JOIN 表名B
ON 表A主键=表B主键
区分各SQL JOIN:
①JOIN:如果表中至少有一个匹配,则返回行
②INNER JOIN:内部连接,返回两表中匹配的行
③LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
④RIGHT JOIN:即使左表中没有匹配,也从右表中返回所有的行
⑤FULL JOIN:只要其中一个表中存在匹配,就返回行
6、UNION-合并结果集
UNION操作符用于合并两个或多个SELECT语句的结果集
SELECT 列名 FROM 表A
UNION
SELECT 列明 FROM 表B;
UNION操作符默认选取不同的值,如果查询结果需要显示重复的值,使用UNION ALL
7、NOT NULL-非空
NOT NULL约束强制列不接受NULL值。
NOT NULL约束强制字段始终包含值,这意味着如果不向字段添加值就无法插入新纪录或者更新记录。
CREATE TABLE 表
(列 int NOT NULL);
8、VIEW-视图
在SQL中,视图是基于SQL语句的结果集的可视化表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图中添加SQL函数、WHERE以及JOIN语句,我们也可以提交数据,就像这些来自于某个单一的表。视图总是显示最近的数据,每当用户查询视图时,数据库引擎通过使用SQL语句来重建数据。
CREATE VIEW 视图名 AS
SELECT 列名
FROM 表名
WHERE 查询条件;
四、SQL常用函数学习
1、AVG-平均值
返回指定数列的平均值,NULL不包括在其中。
SELECT AVG(列名) FROM 表名;
2、COUNT-汇总行数
返回指定匹配条件的行数
SELECT COUNT(*) FROM 表名;#返回表中的记录数
SELECT COUNT(DISTINCT 列名) FROM 表名;#返回指定列不同值的数目
SELECT COUNT(列名) FROM 表名;#返回指定列值的数目(NULL不计入)
3、MAX-最大值
返回一列中的最大值,NULL不包括在其中。也可用于文本列,统计一列的最高值。
SELECT MAX() FROM 表名;
4、MIN-最小值
返回一列中的最小值,NULL不包括在其中。也可用于文本列,统计一列的最低值。
SELECT MIN() FROM 表名;
5、SUM-求和
返回数值列的总数(总额)
SELECT SUM(列名) FROM 表名;
6、GROUP BY-分组
用于结合合计函数,根据一个或多个列对结果进行分组
SELECT 列A,统计函数(列名B)
FROM 表名
WHERE 查询条件
GROUP BY 列名A;
7、HAVING-句尾连接
由于 WHERE关键字无法与合计函数一起使用,故需要使用HAVING函数
SELECT 列名A,统计函数(列名B)
FROM table_name
WHERE 查询条件
GROUP BY 列名A
HAVING 统计函数(列名B) 查询条件;
eg:
select lastname,count(city) from persons
where city='Beijing'
group by lastname
having count(city) > 1;
8、UCASE/UPPER-大写
把字段的值转化为大写
SELECT upper(列名) FROM 表名;
9、LCASE/LOWER-小写
把字段转化为小写
SELECT lower(列名) FROM 表名;
10、LEN/LENGTH-获取长度
返回文本字段中值的长度
SELECT length(列名) FROM 表名;
11、ROUND-数值取值
用于把数值字段舍入为指定的小数位数(四舍五入)
SELECT round(列名,精度) FROM 表名;
12、NOW/SYSDATE-当前时间
返回当前的日期和时间
SQL Server数据库,使用getdate()函数来获得当前日期时间
SELECT sysdate FROM 表名;