表( TABLE)

概念:表(TABLE) ,有行有列,行又叫做记录,指的是表中的数据;列又叫做属性/字段

备份表:在数据库中创建临时备份表

语法:CREATE TABLE 表名 AS SELECT * FROM 表名 [WHERE 查询条件];

例如:CREATE TABLE tmp_emp AS SELECT * FROM emp WHERE deptno=20;

DESC tmp_emp;    --查询临时表属性

SELECT * FROM tmp_emp;  --查询临时表数据信息

结论:临时表不会继承原表的主外键约束,但是表结构和表数据都是一样的

备注:不建议创建比较多的临时表在数据库中,会影响数据库的空间

最后:DROP TABLE tmp_emp;   --(删除临时表)

视图(VIEW)

概念:视图(view),是一种虚拟的表,具有和物理表相同的功能,视图可以进行编辑,但   是对基本表示没有影响的,作用就是可以很好的保护数据的隐私,同时让复杂的查询   变得简单。

比如:出于数据安全考虑,跟对接系统数据交互,出于数据安全考虑只对外暴露部分   数据,就可以创建一个视图,把要对外开放的数据放在视图中,让别人之间访问视图   就好。

语法:CREATE VIEW 视图名 AS

例如:查询王五的选课情况(课程老师,课时,课程名称等等)

正常比较复杂的查询语句:

SELECT cname,chour,tname FROM course WHERE cid IN(

SELECT cid FROM score WHERE sid=(

SELECT sid FROM student WHERE sname='王五'));

把查询的数据放在视图当中,以后需要查询就直接从视图中获取,不让别人看到其它信息:

CREATE VIEW v0722 AS SELECT cname,chour,tname FROM course WHERE cid IN(

SELECT cid FROM score WHERE sid=(

SELECT sid FROM student WHERE sname='王五'));

后期需要王五的选课信息,就直接从视图 v0722中查询获取,效率肯定快,另外别人也看不了其它的信息,例如:

SELECT * FROM v0722;

索引(INDEX)

概念:索引(INDEX)就是来加快搜索速度的,是优化数据库查询效率的常见方法之一。

索引加快了数据库检索的速度,但是降低了 插入、删除、修改等维护类的编辑任务   的执行速度

索引的本质是牺牲了空间换取了速度

索引一般都是添加在具体的列上面,针对了大批量数据查询才有效果,有时候,因为代码需要,会添加联合索引。

order by即distinc或是like等,都不会使用索引。也就是说,索引对于他们是无效的。

语法:CREATE INDEX 索引名 ON 表名(列名);

例如:CREATE INDEX idx_emp_ename ON EMP(ename);  ---(创建索引)

SELECT *FROM EMP WHERE ename='SMITH';  ---(只要数据库认为可以使用某个 已经创建的索引,索引就会自动运用。)

删除索引: DROP  INDEX 名称 ON 表名;

例如:DROP INDEX idx_emp_ename ON EMP;

存储过程(PROCEDURE)

概念:是一的复杂的程序,以便于外部程序或者其他应用程序对数据进行调用的数据库对象。种在数据库中存储

简单的说:存储过程就是在数据库中写代码,目的就是完成特定任务或者功能所组成的 SQL集合,是一个语句集,经过编译存储在数据库中,可以指定用户对其进行调用,提升效率。

优点:可封装,可校验,可回传,可隐藏复杂的商业逻辑,可以被调用,简化程序开发等等

缺点:对数据库的依赖很大,定制化于特定的数据库上;复用率很低 ;不能使用 SELECT 指令执行,它是子程序

语法:前提:进入数据库,保证可以使用正常的存储过程执行SQL命令

1、修改  mysql 的界定符(语句结束符)

DELIMITER // 或者 DELIMITER $$

2、创建存储过程

CREATE PROCEDURE 名字([参数类型] 参数名 数据类型,[参数类型] 参数名 数据类型,...)

BEGIN

过程体;

END;

//   # 不加也没关系,会自动恢复

3、调用存储过程;

CALL 过程名称();

DROP PROCEDURE 名字;   -- 命令删除名字后不加(),也可以选中左侧导航右键删除

1、存储过程的参数:

mysql 中参数的定义,一共支持三种类型:   IN     OUT       INOUT

IN:输入参数,表示调用者向过程传入值(可以是具体的值,也可以是变量)

OUT:输出参数:表示调用者向过程传出值(可以返回多个值,但是传出的值   只能是变量)

INOUT: 输入输出参数,表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

建议: 输入值就用  IN 参数

输出值就只用 OUT 参数

INOUT 参数尽量少用

注意:存储过程支持没有参数,即使没有参数,但是过程后面的()必须要有,不可以省略

参数的名字不能等于列名,否则在执行的过程当中,会被当做整个列来处理。

2、过程体:

由合法的 SQL 语句构成,即 SQL 命令集,可执行,过程体包含了过程调用执行的   所有的 SQL 语句 ;

例如: DQL 、DML、if-THEN-ELSE 等等,以及申明变量。

过程体的格式: 以 BEGIN 开始,以 END 结束(可以嵌套)

注意:每个嵌套块中每条命令就结束,都必须使用 ; 结束。

3、调用:

1)可以使用 CALL 命令通过名字对存储过程调用;

CALL 存储过程的名称() ;

  1. 可以供外部程序调用,比如 java ,python

存储过程编写的思路

前提:进入数据库,保证可以使用正常的存储过程执行SQL命令

1、修改  mysql 的界定符(语句结束符)

DELIMITER // 或者 DELIMITER $$

2、创建存储过程

CREATE PROCEDURE 名字()

BEGIN

过程体;

END;

//   # 不加也没关系,会自动恢复

3、调用存储过程;

CALL 过程名称();

DROP PROCEDURE select2;   -- 命令删除名字后不加(),也可以选中左侧导航右键删除

例如:

不带参数的存储过程

SELECT 'hello world!' FROM DUAL;  -- 过程体,通过存储过程实现

CREATE PROCEDURE p1()

BEGIN

SELECT 'hello world!' FROM DUAL;

END;

报错了:/* 错误代码: 1064

You have an error in your SQL syntax; check the manual that corresponds

to your MySQL server version for the right syntax to use near '' at line 3

*/

报错的原因:是语句的命令没有正确结束,是因为 ; 界定符造成的,解决办法,修改界定符

修改界定符  ;  为 // 或者 $$ ,目的是让 ; 暂时失效,不表示语句结束

修改界定符:delimiter

DELIMITER //

CREATE PROCEDURE p1()

BEGIN

SELECT 'hello world!' FROM DUAL;

END;

调用

CALL p1 ;  -- 每调用一次存储过程,就相当于把过程体执行一次

CALL p1(); -- 调用的时候,没有参数的存储过程()可以加,也可以不加

mysql中常见的数据库对象相关推荐

  1. MYSQL——MYSQL中常见的数据库引擎

    文章目录 MYSQL中常见的数据库引擎 1.什么是数据库引擎? 2.MYSQL中有哪些数据库引擎 3.常见引擎介绍 (1)InnoDB (2)MyISAM (3)Memory(Heap) MYSQL中 ...

  2. MySql随笔-常见的数据库对象

    常见的数据库对象: 一.表(Table):表是存储数据的逻辑单元,可以以行和列的形式存在,列就是字段,行就是记录. 二.数据字典:就是系统表,存放数据库相关信息的表,系统表的数据通常由数据库系统维护, ...

  3. 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][03]SQL概述_常见的数据库对象 SQL概述 什么是SQL SQL背景知识 SQL分类 DDL(Data Defini ...

  4. mysql中常见错误代码汇总

    mysql中常见错误代码汇总: 我们操作mysql的时候经常会遇到一些错误并给出错误的代码,很难知道它是什么意思,下面给出常见的错误代码,方便查阅: 1005:创建表失败 1006:创建数据库失败 1 ...

  5. 排除MySQL中常见错误的实用招术

    MySQL是Oracle拥有的一种广泛使用的开源关系数据库管理系统(RDMS).多年来,它是基于Web的应用软件的默认选择,与其他数据库引擎相比仍然大受欢迎. MySQL是为Web应用软件设计和优化的 ...

  6. MySQL中常见的日志文件

    日志文件记录了影响MySQL数据库的各种类型活动.MySQL中常见的日志文件有: 错误日志(error log) 二进制日志(binlog) 慢查询日志(slow query log) 查询日志(lo ...

  7. 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

    在之前这一篇中我们分享过使用chameleon工具完成MySQL到openGauss的全量数据复制.实时在线复制.9.30新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不 ...

  8. asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...

    [ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型 0 2018-06-30 07:00:08 官方教程: ...

  9. MySQL中常见的单行函数(下)

    MySQL中常见的单行函数(下) 一.转换函数 Date_format(date,format) 将日期转换成字符串(类似Oracle中的to_char()) Str_to_date(str,fo ...

最新文章

  1. 【深度学习】(3) 全连接层、激活函数
  2. python从入门到精通书-Python从入门到精通
  3. 线段树、二叉堆以及离散化入门
  4. 算法设计7—哈希表1
  5. 在.net中读写config文件的各种方法(转载)
  6. 中科院合肥科学技术学校05计算机,硕士研究生课程设置-中国科学院合肥物质科学研究院.PDF...
  7. python-kafka 常用 api 汇总
  8. Guava入门~Objects
  9. mysql拦截器实现crud_Mybatis自定义SQL拦截器
  10. 高仿wx钱包页H5网站源码
  11. Linux内核分析 - 网络[二]:网卡驱动接收报文
  12. Redis--Windos下的安装和使用
  13. [Ubuntu] zsh
  14. 2021年01月18号学习产品经理之电商项目从0-1
  15. 《人机交互技术》 第七章 Web界面设计
  16. 关于开源云计算平台软件的一些个人想法
  17. 全球及中国钒氧化物行业发展前景与投资策略分析报告2022-2028年
  18. 四旋翼飞行器的原理研究和建模
  19. 使用局域网IP地址作为小程序的测试IP
  20. 如何入门“动物杂交:新视野”

热门文章

  1. 对不起,我给大家丢人了!开发三年只拿到美团、京东、阿里三个大厂offer
  2. 办公人员使用计算机的管理办法,办公区网络和办公电脑管理办法
  3. 计算机课活动方案,第二课堂(计算机)兴趣小组活动方案
  4. Nginx 二级目录部署Vue2
  5. onSenUI 配置环境
  6. JAVA高并发的三种实现 Java高并发,如何解决,什么方式解决
  7. 宽动态Wide Dynamic Recording技术摄像机
  8. 黑屏助手V1.0(本本不能手动关闭显示器?不想屏保?)
  9. ubuntu 安装QQ 和微信
  10. Appium-Terminate App(终止应用程序)