- 一,为什么要学习数据库
- 二,数据库的相关概念
- 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 的一个重要组成部分。语句
- 可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
- SQL 语句不区分大小写,但是数据库表名、列名和值是否区分,依赖于具体的 DBMS 以及配置。
例如:SELECT
与 select
、Select
是相同的。
- 多条 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 的核心指令是 CREATE
、ALTER
、DROP
。
数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。
DML 的主要功能是 访问数据,因此其语法都是以读写数据库为主。
DML 的核心指令是 INSERT
、UPDATE
、DELETE
、SELECT
。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。
事务控制语言 (Transaction Control Language, TCL) 用于管理数据库中的事务。这些用于管理由 DML 语句所做的更改。它还允许将语句分组为逻辑事务。
TCL 的核心指令是 COMMIT
、ROLLBACK
。
数据控制语言 (Data Control Language, DCL) 是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。
DCL 的核心指令是 GRANT
、REVOKE
。
DCL 以控制用户的访问权限为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有:CONNECT
、SELECT
、INSERT
、UPDATE
、DELETE
、EXECUTE
、USAGE
、REFERENCES
。
根据不同的 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语句,跳出所在循环!!!