您当前的位置: 首页 >  sql

大前端之旅

暂无认证

  • 3浏览

    0关注

    403博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

一文带你了解MySQL基础

大前端之旅 发布时间:2020-06-20 13:32:37 ,浏览量:3

目录
      • 一,为什么要学习数据库
      • 二,数据库的相关概念
        • 2.1数据库术语
        • 2.2SQL 语法要点
        • 2.3 SQL 分类
          • 数据定义语言(DDL)
          • 数据操纵语言(DML)
          • 事务控制语言(TCL)
          • 数据控制语言(DCL)
        • 2.4
      • 三,数据库存储数据的特点
      • 四,初始MySQL
        • 4.1MySQL产品的介绍和安装
        • 4.2MySQL服务的启动和停止
        • 4.3MySQL服务的登录和退出
        • 4.4 MySQL的常见命令
        • 4.5 MySQL的语法规范
        • 4.6 SQL的常见命令
      • 五,DQL语言的学习
        • 5.1:基础查询
        • 5.2:条件查询
        • 5.3:排序查询
        • 5.4:常见函数
        • 5.5:分组查询
        • 5.6:多表连接查询
          • 一、传统模式下的连接 :等值连接——非等值连接
          • 二、sql99语法:通过join关键字实现连接
          • 三、自连接
        • 5.7:子查询
        • 5.8:分页查询
        • 5.9:联合查询
      • 六、DML语言的学习 ★
        • 6.1插入语句
        • 6.2修改语句
        • 6.3删除语句
      • 七、DDL语言的学习
        • 7.1库和表的管理
          • 7.1.1库的管理:
          • 7.2.2表的管理:
            • 1.创建表
            • 2.修改表 alter
            • 3.删除表
        • 7.2 常见数据类型介绍
        • 7.3常见约束
      • 八、TCL语言的学习
        • 8.1数据库事务
        • 8.2事务的分类:
      • 九、视图的讲解
        • 9.1视图和表的区别:
        • 9.2视图的操作
      • 十、存储过程和函数
        • 10.1存储过程
        • 10.2创建存储过程
        • 10.3调用存储过程
        • 10.4函数
      • 十一,自定义变量
        • 11.1用户变量
        • 11.2局部变量
        • 11.3二者的区别:
      • 十二,流程控制结构
        • 12.1分支
          • 一、if函数
          • 二、case语句
          • 三、if elseif语句
        • 12.2循环

一,为什么要学习数据库

数据库的好处

1.持久化数据到本地

2.可以实现结构化查询,方便管理

二,数据库的相关概念 2.1数据库术语
  • 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。
  • 数据表(table) - 某种特定类型数据的结构化清单。
  • 模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。
  • 列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。
  • 行(row) - 表中的一个记录。
  • 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。

SQL 语法结构包括:

  • 子句 - 是语句和查询的组成成分。(在某些情况下,这些都是可选的。)
  • 表达式 - 可以产生任何标量值,或由列和行的数据库表
  • 谓词 - 给需要评估的 SQL 三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程。
  • 查询 - 基于特定条件检索数据。这是 SQL 的一个重要组成部分。
  • 语句 - 可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
2.2SQL 语法要点
  • SQL 语句不区分大小写,但是数据库表名、列名和值是否区分,依赖于具体的 DBMS 以及配置。

例如:SELECTselectSelect 是相同的。

  • 多条 SQL 语句必须以分号(;)分隔。
  • 处理 SQL 语句时,所有空格都被忽略。SQL 语句可以写成一行,也可以分写为多行。
-- 一行 SQL 语句
UPDATE user SET username='root', password='123456' WHERE username = 'root';

-- 多行 SQL 语句
UPDATE user
SET username='root', password='123456'
WHERE username = 'root';
  • SQL 支持三种注释
## 注释1
-- 注释2
/* 注释3 */
2.3 SQL 分类 数据定义语言(DDL)

数据定义语言(Data Definition Language,DDL)是 SQL 语言集中负责数据结构定义与数据库对象定义的语言。

DDL 的主要功能是定义数据库对象。

DDL 的核心指令是 CREATEALTERDROP

数据操纵语言(DML)

数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。

DML 的主要功能是 访问数据,因此其语法都是以读写数据库为主。

DML 的核心指令是 INSERTUPDATEDELETESELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。

事务控制语言(TCL)

事务控制语言 (Transaction Control Language, TCL) 用于管理数据库中的事务。这些用于管理由 DML 语句所做的更改。它还允许将语句分组为逻辑事务。

TCL 的核心指令是 COMMITROLLBACK

数据控制语言(DCL)

数据控制语言 (Data Control Language, DCL) 是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。

DCL 的核心指令是 GRANTREVOKE

DCL 以控制用户的访问权限为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有:CONNECTSELECTINSERTUPDATEDELETEEXECUTEUSAGEREFERENCES

根据不同的 DBMS 以及不同的安全性实体,其支持的权限控制也有所不同。

2.4

​ 1、DB:数据库,保存一组有组织的数据的容器 ​ 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 ​ 3、SQL:结构化查询语言,用于和DBMS通信的语言

三,数据库存储数据的特点

​ 1、将数据放到表中,表再放到库中 ​ 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 ​ 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 ​ 4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性” ​ 5、表中的数据是按行存储的,每一行类似于java中的“对象”。

四,初始MySQL 4.1MySQL产品的介绍和安装

SQL的安装与介绍可以参考

4.2MySQL服务的启动和停止
方式一:计算机——右击管理——服务
	方式二:通过管理员身份运行
	net start 服务名(启动服务)
	net stop 服务名(停止服务)
4.3MySQL服务的登录和退出
方式一:通过mysql自带的客户端
只限于root用户

方式二:通过windows自带的客户端
登录:
mysql 【-h主机名 -P端口号 】-u用户名 -p密码

退出:
exit或ctrl+C
4.4 MySQL的常见命令
1.查看当前所有的数据库
show databases;
2.打开指定的库
use 库名
3.查看当前库的所有表
show tables;
4.查看其它库的所有表
show tables from 库名;
5.创建表
create table 表名(

	列名 列类型,
	列名 列类型,
	。。。
);
6.查看表结构
desc 表名;
7.查看服务器的版本
方式一:登录到mysql服务端
select version();
方式二:没有登录到mysql服务端
mysql --version
或
mysql --V
4.5 MySQL的语法规范

​ 1.不区分大小写,但建议关键字大写,表名、列名小写 ​ 2.每条命令最好用分号结尾 ​ 3.每条命令根据需要,可以进行缩进 或换行 ​ 4.注释 ​ 单行注释:#注释文字 ​ 单行注释:-- 注释文字 ​ 多行注释:/* 注释文字 */

4.6 SQL的常见命令
show databases; 查看所有的数据库
use 库名; 打开指定 的库
show tables ; 显示库中的所有表
show tables from 库名;显示指定库中的所有表
create table 表名(
	字段名 字段类型,	
	字段名 字段类型
); 创建表

desc 表名; 查看指定表的结构
select * from 表名;显示表中的所有数据

	      √                  
	分页查询      ★              
	union联合查询	√		
五,DQL语言的学习 5.1:基础查询
语法:
	SELECT 要查询的东西
	【FROM 表名】;
	类似于Java中 :System.out.println(要打印的东西);
特点:
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数
5.2:条件查询

​ 条件查询:根据条件过滤原始表的数据,查询到想要的数据 ​

语法:
	select 
		要查询的字段|表达式|常量值|函数
	from 
		表
	where 
		条件 ;
分类:
一、条件表达式
	示例:salary>10000
	条件运算符:
	> < >= 10000 && salary < =  >= 100;
#方式二:
ALTER VIEW test_v7
AS
SELECT employee_id FROM employees;

SELECT * FROM test_v7;

2.视图的删除

DROP VIEW test_v1,test_v2,test_v3;

视图结构的查看

DESC test_v7;
	SHOW CREATE VIEW test_v7;
十、存储过程和函数

十二、流程控制结构

10.1存储过程

含义:一组经过预先编译的sql语句的集合 好处:

1、提高了sql语句的重用性,减少了开发程序员的压力
2、提高了效率
3、减少了传输次数

分类:

1、无返回无参
2、仅仅带in类型,无返回有参
3、仅仅带out类型,有返回无参
4、既带in又带out,有返回有参
5、带inout,有返回有参
注意:in、out、inout都可以在一个存储过程中带多个
10.2创建存储过程

语法:

create procedure 存储过程名(in|out|inout 参数名  参数类型,...)
begin
	存储过程体

end

类似于方法:

修饰符 返回类型 方法名(参数类型 参数名,...){

	方法体;
}

注意

1、需要设置新的结束标记
delimiter 新的结束标记
示例:
delimiter $

CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名  参数类型,...)
BEGIN
	sql语句1;
	sql语句2;

END $

2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end

3、参数前面的符号的意思
in:该参数只能作为输入 (该参数不能做返回值)
out:该参数只能作为输出(该参数只能做返回值)
inout:既能做输入又能做输出
10.3调用存储过程

call 存储过程名(实参列表)
10.4函数

创建函数

学过的函数:LENGTH、SUBSTR、CONCAT等 语法:

CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型
BEGIN
	函数体

END

调用函数 SELECT 函数名(实参列表)

函数和存储过程的区别

关键字调用语法返回值应用场景函数FUNCTIONSELECT函数()只能是一个一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个存储过程PROCEDURECALL存储过程() 可以有0个或多个一般用于更新

###系统变量 一、全局变量

作用域:针对于所有会话(连接)有效,但不能跨重启

查看所有全局变量
SHOW GLOBAL VARIABLES;
查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%';
查看指定的系统变量的值
SELECT @@global.autocommit;
为某个系统变量赋值
SET @@global.autocommit=0;
SET GLOBAL autocommit=0;

二、会话变量

作用域:针对于当前会话(连接)有效

查看所有会话变量
SHOW SESSION VARIABLES;
查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%char%';
查看指定的会话变量的值
SELECT @@autocommit;
SELECT @@session.tx_isolation;
为某个会话变量赋值
SET @@session.tx_isolation='read-uncommitted';
SET SESSION tx_isolation='read-committed';
十一,自定义变量 11.1用户变量

声明并初始化:

SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;


方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select @变量名;
11.2局部变量

声明:

declare 变量名 类型 【default 值】;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;


方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select 变量名
11.3二者的区别: 作用域定义位置语法用户变量当前会话会话的任何地方加@符号,不用指定类型局部变量定义它的BEGIN END中BEGIN END的第一句话一般不用加@,需要指定类型 十二,流程控制结构 12.1分支 一、if函数
语法:if(条件,值1,值2)
	特点:可以用在任何位置
二、case语句

语法:

情况一:类似于switch
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号) 
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

情况二:类似于多重if
case 
when 条件1 then 结果1或语句1(如果是语句,需要加分号) 
when 条件2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

特点: 可以用在任何位置

三、if elseif语句

语法:

if 情况1 then 语句1;
elseif 情况2 then 语句2;
...
else 语句n;
end if;

特点:

只能用在begin end中!!!!!!!!!!!!!!!

三者比较:

应用场合if函数简单双分支case结构等值判断 的多分支if else if语句区间判断 的多分支 12.2循环

语法:

【标签:】WHILE 循环条件  DO
	循环体
END WHILE 【标签】;

特点:

只能放在BEGIN END里面

如果要搭配leave跳转语句,需要使用标签,否则可以不用标签

leave类似于java中的break语句,跳出所在循环!!!
关注
打赏
1660524863
查看更多评论
立即登录/注册

微信扫码登录

0.0469s