当前位置: 首页 > news >正文

MySQL数据库从0到1

目录

数据库概述

基本命令

查询命令

函数

表的操作

增删改数据和表结构

约束

事务

索引

视图

触发器

存储过程和函数

三范式


数据库概述

SQL语句的分类:

        DQL:查询语句,凡是select语句都是DQL。

        DML:insert,delete,updata,对表当中的数据进行增删改查。

        DDL:create,drp,alter,对表结构的增删改。

        TCL:commit,rollback。

        DCL:grant,revoke。

对sql脚本的理解:

        以sql结尾的文件,被称为sql脚本。

        直接使用source命令可以执行sql脚本。

基本命令

mysql -uroot -p密码
show databases;
create database 数据库名;
use 数据库名;
show tables;
source 文件路径
drop database 数据库名;
select 数据库名();
select version();select * from stu;
desc stu;
show create table stu;

查询命令

select name from stu;
select name as na from stu;
select * from stu;
select name from stu where age > 20;as关键字可以省略
模糊查询中,%表示任意多个字符,_表示任意一个字符select max(name) from stu group by age;group by:按照某个字段或者某些字段进行分组
having:是对分组之后的数据进行再次过滤注意:
分组函数一般都会和group by联合使用
并且任何一个分组函数都是在group by语句执行结束后才会执行
当一条语句中有group by,select后面只能跟分组函数和参与分组的字段
select distinct name fron stu;
select name from stuwhere age between 20 and 50;select * from stu order by age asc;
select * from stu order by age asc, name desc;
select * from stu limit 5;select * from stu a inner join stu b on 条件;select * from stu a left | right join stu b on 条件;查询语句 union 查询语句union可以去重,union all 不可以子查询就是嵌套查询

函数

1、所有的分组函数都是对某一组的数据进行操作的
2、如果计算数据中有null,那么结果一定是null
3、分组函数不能直接使用在where子句当中count(*)和count(name),他们有什么区别?
count(*):统计总记录条数
count(字段):统计不为null的数据总条数

表的操作

create table stu(age int 约束,[constraint 约束名] 约束(name)
);desc stu;
alter table stu rename stu1;
alter table stu add age int;
alter table stu drop age;
alter table stu modify age int;数据类型
int
bigint
float
char
varchar
datecreate table t_student(no bigint,name varchar(255),sex char(1),classno varchar(255),birth char(10)
);

增删改数据和表结构

insert into stu(字段名) values(数据)
insert into stu(字段名) 查询语句update stu set age = 20 where name = 'java';delete from stu where age > 20;

约束

为了保证表中数据的合法性、有效性、完整性。

not null

unique

primary key

foreign key

check

事务

原子性:事务是最小的工作单元,不可再分。

一致性:事务必须保证多条DML语句同时成功或者同时失败。

隔离性:事务A与事务B之间具有隔离。

持久性:持久性说的是最终数据必须持久化到硬盘文件中,事务才算成功的结束。

索引

create table stu(属性名 数据类型,index | key 索引名(字段名)
);create index 索引名 on stu(name);
alter table stu add index | key 索引名(字段名)唯一索引在index前面加unique
全文索引在index前面加fulltext
drop index 索引名 on 表名

视图

视图的特点:

        视图的列可以用来不同的表,是表的抽象和在逻辑意义上建立的新关系。

        视图是由实表产生的虚表。

        视图的建立和删除不影响基本表。

        对视图内容的增删改直接影响基本表。

        当视图来自多个基本表时,不允许添加和删除数据。

        可以将试图看作为一个表来执行查询语句。

create view 试图名 as 查询语句;drop view 视图名;create or replace view 视图名 as 查询语句;alter view 视图名 as 查询语句;insert into 视图名(属性名...) values(数据...);update 视图名 set 属性名 = 数据 条件;delete from 视图名 条件;

触发器

create trigger 触发器名before | after      insert | update | deleteon 表名 for each row增删改语句;drop trigger 触发器名;

存储过程和函数

区别:

        存储过程:可以由0个返回值,也可以有多个返回值。

        函数:有且仅有一个返回值。

好处:

        提高代码重用性

        简化操作

        减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

存储过程:

        一组预先编译好的sql语句的集合,理解成批处理语句。

参数列表包含三部分:

        举例,in name varchar(20)

        in,可以作为输入

        out,可以作为输出,返回值

        inout,即可以输入,又可以输出

delimiter $
create procedure 存储过程名
begin一组sql语句
end $call 存储过程名();declare 变量名 数据类型set @名字 = 数据;drop procedure 存储过程名show create procedure 存储过程名;drop function 函数名;create procedure pro_4(score int)
begincasewhen score >= 90 && score <= 100 then select 'A';when score >= 80 then select 'B';when score >= 60 then select 'C';else select 'D';end case;
end$create function fun_4(score int) returns char
beginif score >= 90 and score <= 100 then return 'A';elseif score >= 80 then return 'B';elseif score >= 60 then return 'C';else return 'D';end if;
end $

三范式

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。

第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。

第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。

http://www.lqws.cn/news/69733.html

相关文章:

  • 基于FPGA的VGA显示文字和动态数字基础例程,进而动态显示数据,类似温湿度等
  • 监控 100 台服务器磁盘内存CPU利用率
  • MPTCP 聚合吞吐
  • StarRocks部署方案详解:从单机到分布式集群
  • TDengine 的 AI 应用实战——电力需求预测
  • 【存储基础】存储设备和服务器的关系和区别
  • 第1篇:数据库中间件概述:架构演进、典型方案与应用场景
  • 序列搜索策略
  • PromQL 快速上手
  • 4.RV1126-OPENCV 图像轮廓识别
  • 【SpringBoot】| 接口架构风格—RESTful
  • 什么是 CPU 缓存模型?
  • 深入探讨redis:缓存
  • vue-13(延迟加载路由)
  • Vue-6-前端框架Vue之基于Plotly.js绘制曲线
  • 【软件测试】web自动化:Pycharm+Selenium+Firefox(一)
  • WebSocket与Reactor模式:构建实时交互应用
  • Qt OpenGL 实现交互功能(如鼠标、键盘操作)
  • 【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数
  • [Java恶补day13] 53. 最大子数组和
  • AI大数据模型如何与thingsboard物联网结合
  • 基于SpringBoot运动会管理系统设计和实现(源码+文档+部署讲解)
  • 20250602在荣品的PRO-RK3566开发板的Android13下打开关机对话框
  • 【LeetCode 题解】两数之和(C++/Python 双解法):从语法到算法的全面解析
  • (LeetCode 每日一题)135. 分发糖果 ( 贪心 )
  • 基于Python学习《Head First设计模式》第三章 装饰者模式
  • Spring Security入门:创建第一个安全REST端点项目
  • 好用的C/C++/嵌入式 IDE: CLion的下载安装教程(保姆级教程)
  • 黑马Java面试笔记之 微服务篇(SpringCloud)
  • 【图论 拓扑排序 贪心 临项交换】P5603 小 C 与桌游 题解|普及+