前言:
SQL语言在我们当今社会被广泛应用,无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或者与其相关的产品来存储,而操控数据库的语言正是SQL!
对于互联网公司来说,掌握SQL几乎是不可或缺的技能。如果不懂SQL,可能会无法完成很多工作。可以把SQL视为一种工具,利用它我们能够完成工作并创造价值。
数据库介绍
数据库:是存储数据的仓库,有组织的进行存储存储,全称为(Database),简称为DB。
数据库管理系统:是管理数据库的大型软件,全称为(Database Management System),简称为DBMS。
SQL:是操作关系型数据库的编程语言,定义了操作所有关系数据库的统一标准,全称为(Structured Query Language),简称为SQL,是一种结构化查询语言。
关系图如下:
MySQL的数据类型:
关系型数据库:关系型数据库是建立在关系模型的基础上的数据库,关系型数据库是由多张能互相链接的“二维表”组成的数据库。
优点:1.都使用表结构,格式一致,易于维护。
2.使用通用的SQL语言操作,使用方便,可用于复杂查询。
3.数据都存储于磁盘中安全。
例1: 表一
订单编号 | 订单项目 | 负责人 |
---|---|---|
001 | 项目A | 负责人A |
002 | 项目B | 负责人B |
例2:表二
负责人 | 客户名称 | 联系电话 |
---|---|---|
负者人A | 客户A | 133XXXXXXX |
负责人B | 客户B | 155XXXXXXX |
MySQL数据模型:
SQL的简介:
1.结构化查询语言,一门操作关系型数据库的编程语言。
2.定义所有关系型数据库的统一标准。
3.对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称之为(方言)。
SQL的分类:
SQL分为四类分别为:DDL(Data Definiton Language)数据定义语言,DML(Data Manipulation Language)数据操作语言,DQL(Data Query Langu)数据查询语言,DCL(Date Control Language)数据控制语言。
DDL(数据定义语言):用于操作数据库和表结构。
DML(数据操作语言):用于对表中的数据进行增加、删除、修改。
DQL(数据查询语言):用于对表中的数据进行查询。
DCL(数据控制语言):用于对数据库的访问权限进行控制。
DDL操作数据库:
1. 查询
SHOW DATABASES 查询当前所有的数据库对象
2.创建
-- 创建数据库
CREATE DATABASE + 数据库名称;
-- 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS + 数据库名称;
3.删除
-- 删除数据库
DROP DATABASE + 数据库名称;
-- 删除数据库(判断,如果存在则删除)
DROP DATABASE + IF EXISTS数据库名称;
4.使用数据库
-- 查看当前使用的数据库
SELECT DATABASE();
-- 使用数据库
USE 数据库名称;
数据库查询示例: SHOW DATABASES 查询
创建数据库示例: CREATE DATABASE db1;
删除表示例: DROP DATABASE db1;
查看当前使用的数据库示例: SELECT DATABASE();
使用数据库代码示例:USE + 数据库名称;
DDL 操作表介绍:
1.创建表
-- 创建表
CREATE TABLE 表名(
字段名1,数据类型1,
字段名2,数据类型2,
字段名n,数据类型n
);
//注意最后一行不要加逗号
2.修改表
-- 修改表名
ALTER TABLE + 表名 RENAME TO + 新的表名;
--添加一列
ALTER TABLE + 表名 ADD + 列名 + 数据类型;
-- 修改数据类型
ALTER TABLE + 表名 + MODIFY 列名 新的数据类型;
--修改数据类型和列名
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
-- 删除表
ALTER TABLE 表名 DROP 列名;
创建表代码示例:
表一:
S_id | S_name | S_age |
---|---|---|
null | null | null |
修改表代码示例:
添加一列代码示例:
修改数据类型代码示例:
删除类代码示例:
DML添加数据介绍:
1.给指定的列添加数据:
--给指定的列添加数据
INSERT INTO 表名(列1,列2,......)VALUES(值1,值2,....);
2.给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,....);
3.批量添加数据
-- 表名后面有列名可以准确添加
INSERT INTO 表名(列1,列2,....) VALUES(值1,值2,...),(值1,值2,...);
--也可以批量添加,省略列名
INSERT INTO 表名 VALUES(值1,值2,....),(值1,值2,...);
给指定的列添加数据示例:
给全部列添加数据代码示例:
批量添加数据代码示例:
DML修改数据介绍:
1.修改表中数据
UPFATE 表名 SET 列名1=值1,列名2=值2,..... [WHERE 条件];
注意:修改语句中,如果不加条件所有的值都会被修改。
2.删除表中数据
DELETE FROM 表名 [ WHERE 条件];
注意:没有条件将全部删除。
修改表中数据代码示例:
删除表中数据代码示例:
DQL基础查询介绍:
1.查询多个字段
-- 查询多个字段
SELECT 字段列表 FROM 表名;
-- 查询全部字段 *代表所有
SELECT * FROM 表名;
2.查询时去除重复记录
SELECT DISTINCT 字段列表 FTROM 表名;
3.其别名
AS 名字;
注意: as可以省略。
查询多个字段代码示例:
查询全部字段代码示例:
假设表中有俩条记录重复 如图:
查询时去除重复记录代码示例:
起别名代码示例: 可以让信息更佳清晰的展示
DQL条件查询介绍:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
代码 | 含义 |
---|---|
BETWEEN....AND..... | 在某个范围内都包含 |
IN(......) | 多选一 |
LIKE | 模糊查询 ”-“单个任意字符 ”%“多个任意字符 |
IS NULL | 是NULL |
IS NOT NULL | 不是NILL |
AND 或 && | 并且 |
OR 或 || | 或者 |
NOT 或 ! | 非,不是 |
DQL排序查询介绍:
1.排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段1 [排序方式1],排序字段2 [排序方式2];
排序方式: ASC:升序方式(默认) DESC:降序排序
注:如果有多个条件,当前边的条件值一样时,才会根据第二条件进行排序
假设表一学号排序是乱序如图:
分组查询代码如图:
通过学号字段升序排序:
通过学号字段降序排序:
where和having区别:
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where不能对聚合函数进行判断,having可以。
执行顺序 : where > 聚合函数 >having
DQL分组查询:将一列数据作为一个整体,进行纵向运算
聚合函数的分类:
函数 | 含义 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
聚合函数的语法: SELECT 聚合函数名(列名)FROM表;
注:NULL值不参与所有聚合函数
聚合函数代码示例:
DQL分组查询介绍:
SELECT 字段列表 FROM 表名 [WHERE 分组前的条件限定] GROUP BY 分组字段名 [HAVING 分组后的条件过滤];
注:分组之后查询的字段为聚合函数和分组字段,查询其他字段无意义
假设需要统计db2表里面的男生,女生的总人数,表如图:
查询男女生分别的总人数代码如下:
SQL分页查询介绍:
SELECT 字段名 FROM 表名 LIMIT 起始索引,查询条目数;
注:1.起始从零开始。 2.计算公式: 起始索引 = (当前页码-1)* 每页显示的条数
Tip: 分页查询limit 是MySQL 的方言
Orcide 分页查询用的是rownumber
SQL server 分页查询使用TOP
分页查询: //查询条件 查询第一页,每页显示三条数据
DQL小结:
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY分组字段
HAVING 分组之后的条件
ORDER BY 排序字段
LIMIT 分页限定
约束
约束的概念
1.约束是作用于表中列上的规则,用于限制加入表的数据。
2.约束的存在保证了数据库中的正确性,有效性和完整性。
约束 | 含义 | 函数 |
---|---|---|
非空约束 | 保证列中所有数据不能有null值 | NOT NULL |
唯一约束 | 保证列中所有数据名不相同 | UNIQUE |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY KEY |
检查约束 | 保证例中的值满足某一条件 | CHECK |
默认约束 | 保存数据时,未指定值则采用默认值 | DEFAULT |
外键约束 | 外键用俩个表的数据之间建立链接保证数据的一致性和完整性 | FOREIGN KEY |
Tip:MySQL不支持检查约束。
1.添加约束
-- 创建表时添加约束
CREATE TABLE 表名(
列名1,数据类型2 NOT NULL(约束类型),
列名n,数据类型n NOT NULL(约束类型)
);
-- 建完表之后添加约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL(约束类型);
-- 删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;