SQL数据库相关内容

493 阅读6分钟

创建数据库

creat database 数据库名;

1.0 查询

1.1 查询所有字段

select * from 表名

1.2 查询指定的字段

select 字段名1 as 别名,字段2 别名2……
注意点:
关于起别名的问题,as可以写也可以省略

1.3 去重操作

distinct 关键字,去重操作
select distinct name from 表名

查询表里面所有的 name,不包含重复值

1.4 条件筛选

select 指定字段 from 表名 where 条件

1.5 排序

select * from 表名 order by 字段1 desc|asc,字段2 desc|asc
asc  升序 
desc 降序

1.6 分页

select 字段 from 表名 limit 位置,个数(从那一段开始取多少条数据)

1.7 聚合函数

count 统计个数
sum 进行求和
AVG 平均值
max 最大值
min 最小值

1.8 分组

1.8.1 规则

select 分组依据(分组字段名),group_concate(需要展示的字段名1,字段2......) from 表名 group by 字段名

1.8.2 where haning区分

  • where 在原始数据上就进行条件筛选
  • having 分组之后的条件筛选,分组用having
  • 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

2.0 内连接

SELECT * FROM1 INNER JOIN2 ON 表的链接条件 WHERE 初始筛选条件
例子:查找品牌以及品牌对应的商品
SELECT * FROM tp_brand INNER JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 内连接,只返回两个表中联结字段相等的行

SELECT * FROM tp_brand LEFT JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 以左表位主表,返回包括左表中的所有记录和右表中联结字段相等的记录

SELECT * FROM tp_brand RIGHT JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 以右表为主表,返回包括右表中的所有记录和左表中联结字段相等的记录

3.0 数据库字符串操作

substr  切割字符串,从1开始查找
concat  拼接字符串
length  字符串长度
insert  替换 参数是旧字符串(第一个数字指从左往右数替换开始的位置,第二个数字指被替换的字符串长度)
trim()  两边去空格
ltrim() 从左边去空格  left
rtrim() 从右边去空格  right
replace 替换

例子:
SELECT LENGTH(first_name) FROM employees ORDER BY first_name SUBSTR(fiirst_name,0,1);

SELECT SUBSTR('abc123',1,1);

SELECT CONCAT('aas','123');

SELECT LENGTH('qweetr2');

SELECT INSERT('asd',1,1,'age');
SELECT INSERT('asd',1,2,'age');
SELECT INSERT('asd',1,20,'age');从1开始替换20SELECT INSERT('asd',1,0,'age');从1开始替换0SELECT TRIM()
SELECT LTRIM()从左边去空格
SELECT RTRIM()从右边去空格

SELECT REPLACE('asd123','1','qwe')

4.0 case-when语句

case 字段 
when 表达式1 then 输出值1
when 表达式2 then 输出值2 
......
else 输出值
end

例子:
SQL写法
SELECT last_name,job_id AS job, 
CASE job_id
WHEN 'AD-PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK' THEN 'E'
END AS Grade

FROM employees

5.0 数据库数学方面知识点

round 四舍五入
SELECT ROUND(1.454,2)       1.45

truncate 截断(不会四舍五入)
SELECT TRUNCATE(1.45423,3)  1.454

mod 除余
SELECT MOD(4,2)             0  // 返回 4 除以 2 的余数
SELECT MOD(3,2)             1 

6.0 子查询

6.1 定义

子查询:在一个select语句中,嵌入另外一个select语句,被嵌入的select语句成为子查询

主查询:主要查询的语句,第一条select语句

6.2 案例

两表联查

案例:查询每个品牌的信息,以及品牌对应的商品个数
SELECT brand_id,GROUP_CONCAT(tp_brand.`name`),COUNT(*) FROM tp_brand INNER JOIN tp_goods ON tp_brand.`id`=tp_goods.`brand_id` GROUP BY brand_id

子查询
1.查询出品牌信息
SELECT * FROM tp_brand
2.按照品牌id查询每个品牌对应得商品个数
SELECT * FROM tp_goods WHERE tp_goods.`brand_id`brand=()
综合
SELECT tp_brand.id,tp_brand.name,(SELECT COUNT(*) FROM tp_goods WHERE tp_goods.`brand_id`=tp_brand.`id`) FROM tp_brand

主查询与子查询

子查询可以充当主查询的条件

子查询是嵌入到主查询中

子查询也是一条完整的SQL语句,但是不需要加;

6.3 子查询分类

  • 标量子查询
    一行一列
  • 列子查询
    一列多行
  • 行子查询
    一行多列(一般不用,了解)

7.0 视图

7.1 视图封装

我们在做开发时经常会自定义一些view,并且如果该view比较复杂或者经常被调用到,我们就可以将该view单独放到一个类中,方便调用或者修改。

7.2 使用视图

select* from v1

7.3 语法规则

视图语法规则
CREATE VIEW 视图名
AS
合法有效的SQL语句

7.4 使用场景

保存复杂的sql语句

7.5 修改视图

alter view 视图名 as合法有效的sql语句,对已有的视图进行修改

create or replace view 视图名 as 合法有效的sql语句

create view 和 create or replace view的区别

create or replace view的意思就是若数据库中已经存在这个名字的视图的话,就替代它,若没有则创建视图;

create则不进行判断,若数据库中已经存在的话,则报错,说对象已存在;

7.6 删除视图

drop view 视图1,视图2,视图3

7.7 更新视图数据

插入数据
insert into 视图名(字段1,字段2,字段3.....)values(值1,值2,值......)
insert into 视图名 values(值1,值2,值......)#值的个数必须和字段个数保持一致

更新数据
update 视图 set 字段1=1,字段2=2 where 条件1

删除数据
delate from 视图 where 条件筛选1,条件筛选2......
注意:修改视图涉及到原始表,一般情况下,视图只赋予读权限

8.0 存储过程

8.1 案例

插入整行数据
INSERT INTO boys VALUES(9,'张三'0)

SELECT * FROM boys

INSERT INTO boys VALUES(10,'李四',),(11,'王五',2),(12,'张三'3,)	
DELIMITER $ ;声明;修改结束符	
	
CREATE PROCEDURE P1()	
BEGIN	
	INSERT INTO boys VALUES(13,'里',1),(14,'王',2)
	合法有效的SQL语句,存在;结尾
END$	
	
DELIMITER $ 	
CREATE PROCEDURE P1()	
BEGIN	
	INSERT INTO boys VALUES(13,'里',1),(14,'王',2);
	
END$

8.2 定义

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。

8.3 调用

call 存储过程名()

8.4 使用场景

一般增删改

9.0 数据库在测试中的使用

9.1 真正的数据库与项目关系

MVT模式

image.png

前端:用户使用,例如APP等

后端:服务器、框架、数据库等

8bea542bc67e54484814112fa879fe0.jpg

注意点:

1.框架是运行在服务器上的

2.框架可以在数据库中进行查询与返回数据

3.服务器将框架查询到的数据返回给浏览器

4.浏览器进行发送请求,将服务器返回的数据进行渲染展示

5.数据库中存储着项目中的重要数据

6.对于数据库的增删改会影响页面展示

9.2 数据库典型应用场景

1.验证数据的准确性和完整性

2.借助数据库进行缺陷定位

3.数据库的数据备份与更新

4.构造测试场景

10.0 备份与恢复

10.1 备份

在退出客户端的基础上

mysql dump -u root -p 需要备份的数据库名字>名字.sql

10.2 恢复

步骤: 1.先链接MySQL,创建一个数据库 create database 名字 charset=utf8

2.退出链接

mysql -u root -p 新数据库名字<名字.sql

注意点:需要恢复的时候,注意sql文件路径