【无标题】

数据库

基础

数据库操作-DDL

数据库操作

SHOW DATABASES;
CREATE DATABASE 数据库名;USE 数据库名;
SELECT DATABASEQ);

DROP DATABASE数据库名;

DDL-表操作-创建
CREATE TABLE 表名(
字段1字段1类型「 COMMENT字段1注释],字段2字段2类型[COMMENT字段2注释],
b
字段3字段3类型[COMMFNI字段3注释],
字段n字段n类型[COMMENT字段n注释]) [ COMMENT表注释];
注意:[ …]为可选参数,最后一个字段后面没有逗号

删除字段
ALTER TABLE表名 DROP字段名;
案例:
将emp表的字段username删除

DDL-表操作-修改
修改数据类型
ALTER TABLE表名MODIFY 字段名新数据类型(长度);
修改字段名和字段类型
ALTER TABLE表名CHANGE旧字段名新字段名类型(长度)[COMMENT注释][约束];
案例:
将emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30)COMMENT’昵称’;

DDL-表操作-查询
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC表名;
查询指定表的建表语句
SHOW CREATE TABLE表名;

图形界面化-DG

增删改-DML

1.添加数据
INSERT INTO表名(字段1,字段2,…)VALUES(值1,值2,…)[,(值1,值2,…)…] ;
2.修改数据
UPDATE表名SET字段1=值1,字段2=值2[ WHERE条件];
3.删除数据
DELETE FROM表名[ WHERE条件];

DQL-查询
基本查询

1.查询多个字段
SELECT字段1,字段2,字段3… FROM表名;
2.设置别名
SELECT字段1[AS 别名1],字段2[AS 别名2]…FROM表名;
3.去除重复记录
SELECT DISTINCT字段列表FROM表名;

条件查询-WHERE

1.语法
SELECT字段列表FROM 表名WHERE 条件列表;
2.条件

">=
<
<=
=
!=
BETWEEN …AND …IN(.….)
LIKE占位符IS NULL 模糊查询 _代表字符%代表前面很多的字符

– 10.查询姓名为两个字的员工信息_%
select * from emp where name like ‘__’;
,11.查询身份证号最后一位是X的员工信息
select *from emp where idcard like ‘%X ';

聚合函数

1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见聚合函数
count
max
min
avg
sum
3.语法
SELECT 聚合函数(字段列表)FROM表名;

分组查询

1.语法
SELECT 字段列表FROM表名[ WHERE条件 ]GROUP BY分组字段名[ HAVING分组后过滤条件];
2. where与having区别
执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同: where不能对聚合函数进行判断,而having可以。
注意
·执行顺序: where >聚合函数>having 。
·分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

排序查询

1.语法
SELECT字段列表FROM表名ORDER BY 字段1排序方式1,字段2排序方式2;
2.排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

分页查询

1.语法
SELECT字段列表FROM表名LIM崎T起始索引,查询记录数;
注意
·起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
·分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
。如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10.

2.查询第2页员工数据,每页展示10条记录-------->(页码-1)*页展示记录数
select *from emp limit 10,10;

DCL-数据控制语言
用户管理

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限
1.查询用户USE mysql;
SELECT * FROM user;
2.创建用户
CREATE USER ‘用户名’@‘主机名’IDENTIFIED BY‘密码’;
3.修改用户密码
ALTER USER
‘用户名’@‘主机名’IDENTIFIED WlTH mysql_native_password BY‘新密码’;
4.删除用户
DROP USER’用户名’@‘主机名’;

权限控制

MySQL中定义了很多种权限,但是常用的就以下几种:
ALL,ALL PRIVILEGES
SELECT 查询数据
INSERT
UPDATE 修改数据
DELETE
ALTER 修改表
DROP 删除表
CREATE 创建数据库、表
1.查询权限
SHOW GRANTS FOR‘用户名’@‘主机名’;
2.授予权限
GRANT权限列表ON数据库名.表名 TO’用户名’@‘主机名’;
3.撤销权限
REVOKE 权限列表ON数据库名.表名FROM‘用户名’@‘主机名’;

函数
字符串函数

CONCAT(S1,S2,…Sn) 字符串拼接,将S1,S2,…Sn拼接成一个字符串
LOWER(str) 将字符串str全部转为小写
UPPER(str) 将字符串str全部转为大写
LPAD(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n,pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str,start,len) 返回从字符串str从start位置起的len个长度的字符串

数值函数

CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x,y) 返回x/y的模
RAND() 返回0~1内的随机数
ROUND(x,y) 求参数x的四舍五入的值,保留y位小数

日期函数

CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值 type是年月日
DATEDIFF(date1,date2) 返回起始时间date1和结束时间date2之间的天数

流程函数

IF(value , t , f)
如果value为true,则返回t 否则返回f
IFNULL(value1 , value2)
如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [res1] …ELSE [ default ] END
如果val1为true,返回res1,…否则返回default默认值
CASE [ expr ] WHEN[ vall ] THEN [res1] …ELSE [ default ] END
如果expr的值等于val1,返回res1, …否则返回default默认值

– case when then else end
–需求:查询emp表的员工姓名和工作地址(北京/上海---->一线城市,其他---->二线城市)
select
name ,
( case workaddress when’北京’ then ‘一线城市’ when ‘上海’ then’一线城市’ else ‘二线城市’ end )as’工作地址’
from emp;

约束

1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
2.目的:保证数据库中数据的正确、有效性和完整性。
在这里插入图片描述注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

约束演示

在这里插入图片描述
在这里插入图片描述

外键约束

概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。
在这里插入图片描述
添加外键
CREATE TABLE 表名(
字段名数据类型,

[CONSTRAINT][外键名称]FOREIGN KEY (外键字段名)REFERENCES主表(主表列名)
);
ALTER TABLE表名 ADD CONSTRAINT外键名称FOREIGN KEY (外键字段名)REFERENCES主表(主表列名);
删除外键
ALTER TABLE 表明 DROP foreign key 外键字段名

外键约束
在这里插入图片描述

多表查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事务
简介

在这里插入图片描述

事务操作

查看/设置事务提交方式
SELECT @@autocommit ;
SET @@autocommit = 0;手动操作
提交事务
COMMIT;
回滚事务
ROLLBACK ;
在这里插入图片描述
. 开启事务
START TRANSACTION或 BEGIN ;
·提交事务
COMMIT;
.回滚事务
ROLLBACK;

并发事务问题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

主键不可重复插不进去

事务隔离级别

在这里插入图片描述
读未提交 三种都可能出现
读已提交
可重复读
串型化(安全性最高)性能最差
在这里插入图片描述

进阶

存储引擎

MySQL体系结构

在这里插入图片描述

存储引擎机制

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
在这里插入图片描述
在这里插入图片描述

InnoDB介绍

介绍
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。
特点
DML操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
文件
xxx.ibd: xx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数: innodb_file_per_table
在这里插入图片描述

MyISAM和Memory

在这里插入图片描述

存储引擎的特点

在这里插入图片描述
在这里插入图片描述
区别
在这里插入图片描述

存储引擎选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

InnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。

MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那
么选择这个存储引擎是非常合适的。

MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表
无法缓存在内存中,而且无法保障数据的安全性。

索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值