数据库+SQL语言

article/2025/8/27 19:16:06

文章目录

  • 数据库相关概念
    • MySQL数据模型
      • 关系型数据库
    • SQL通用语法
  • SQL语句全解
    • DDL
    • DML
    • DQL
      • 基础查询
      • 条件查询
      • 排序查询
      • 分组查询
      • 分页查询
  • 约束
    • 外键约束
  • 数据库设计
    • 软件研发步骤
    • 数据库设计理念和步骤
    • 表关系
    • 多表查询
    • 事务

数据库相关概念

  1. 数据库:存储和管理数据的仓库,数据有组织进行存储(Data Base)
    特点:
    (1)持久化存储数据,数据库本质上是一个文件系统。
    (2)方便存储和管理数据
    (3)使用同一方式操作数据库

  2. 数据库管理系统:管理数据库的大型软件(DataBase Management System)

Oracle,MySQL,SQLServer,PostgreSQL,DB2,SQLite,MariaDB

  1. SQL:结构化查询语言(操作关系型数据库的编程语言)
    定义操作所有关系型数据库的统一标准
    方言:对于同一个需求,每一种数据库的操作方式出现不一样的地方。

MySQL数据模型

关系型数据库

关系型数据库是建立在关系模型基础上的数据库,是由多张能够相互连接的二维表组成的数据库。
优点:
(1)都是使用表结构,格式一致,易于维护。
(2)通用SQL语言操作,使用方便。
(3)数据存储在磁盘中,安全。
请添加图片描述

SQL通用语法

1.SQL语句可以单行或者多行书写,并且以分号结尾。
2.不区分大小写,关键字建议用大写
3.注释:单行注释 – 注释内容 或者#注释内容(MySQL特有)
多行注释:/* */
4.分类:

DDL:数据定义语言定义数据库对象:数据库,表,列
DML:数据操作语言对数据库中表的数据进行增删改
DQL:数据查询语言查询数据库中表的记录(数据
DCL:数据控制语言定义数据库的访问权限和安全级别,创建对象

SQL语句全解

DDL

DDL操作数据库:

查询show databases;
创建数据库create database 数据库名称;
创建数据库,如果不存在则创建create database if not exists 数据库名称;
删除数据库drop database 数据库名称;
删除数据库,如果存在drop database if exists 数据库名称;
使用数据库use 数据库名称;
查看当前使用的数据库select database();

DDL操作表:

查询当前数据库下表的名称show tables
查询表的结构desc 表的名称
创建表create table 表名(字段名1 数据类型,字段2 数据类型2);
删除表drop table 表名; drop table if exists 表名;
修改表名alter table 表名rename to 新表名;
添加一列alter table 表名 add 列名 数据类型;
修改数据类型alter table 表名 modify 列名 新数据类型;
添加列名和数据类型alter table 表名 change 列名 新列名 新数据类型
删除列alter table 表名 drop 列名

请添加图片描述score double(总长度,小数点后保留的位数);

保存0-100 2位小数
score double(5,2);

data只可显示出年月日

name char(10);
name varchar(10);
//当张三同时存入俩个name中的时候,
//第一个占十个字符空间,后面按零补齐。
//第二个占据俩个字符存储空间。

(1)char的存储性能高于varchar
(2) char 浪费空间

图形化客户端工具:Navicat这套全面的前端工具为数据库的管理,开发和维护提供了一款直观而且强大的图形界面。

DML

添加数据:

给指定的列添加数据Insert into 表名(列名1,列名2) values(值1,值2);
所有的列添加数据insert into 表名 values(值1,值2);
批量添加数据insert into 表名(列名1,列名2) values(值1,值2),(值1,值2);
修改表数据update 表名 set 列名1=值1,列名2=值2 where 条件;
删除表数据delete from 表名 where 条件;
如果updata语句没有加where条件,会把表中数据全部修改。

DQL

select字段列表
from表名列表
where条件列表
group by分组字段
having分组后条件
order by排序字段
limit分页设定

基础查询

select name,age from stu;
//查询多个字段
select *from stu;
//列名的列表可以代替所有列的数据,建议写上所有列名
select distinct address from stu;
//去除重复记录
select math as 数学成绩 from stu;
//as起别名,当前as也可以省略,但是需要有空格

条件查询

select 字段列表 from 表名 where 条件列表;
符号功能
>大于
=等于
<> !=不等于
between …and在某个范围内都包括
in()多选一
like 占位符模糊查询 _单个任意字符 %多个任意字符
is null是null
is not null不是null
and &&并且
or或者

注意:null的值不能用= != ,需要使用is 或者 is not

//查询入学日期在'1998-09-01'到'1999-09-08'的学员信息
select *from stu while date between '1998-09-01' to '1999-09-08';
//查询姓'马'的学员信息
select *from stu where name like '马%';
//查询第二个字'化'的成员信息
select *from stu where name like '_化%';
//查询名字中包含'德'
select *from stu where name like '%德%';

排序查询

select 字段列表 from 表名 order by 排序字段名1[排序顺序1],排序字段名2[排序顺序2];

ASC:升序排列(默认)
DESC:降序排列
如果有多个排序条件,只有当前面条件值一样的时候,才会根据第二条件进行排序。

分组查询

聚合函数:将一列数据作为一个整体,进行纵向计算。

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
select 聚合函数名(列名) from 表;

null不参与所有聚合函数的运算
count的取值:
(1)主键:非空且唯一
(2)(*)

select 字段列表 from 表名[where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];

note:
(1)分组之后,查询的字段是聚合函数分组字段,查询其他字段没有意义。

(2)where和having的区别:

  • 执行时机不一样:where在分组之前进行限定,不满足where条件,则不参与分组,而having是在分组之后对结果进行过滤
  • 可判断的条件不一样:where不能对聚合函数进行判断,having可以

(3)执行顺序:where>聚合函数>having

//查询男同学和女同学的各自数学平均分
select sex,avg(math) from stu group by sex;
//查询男同学和女同学的各自数学平均分和各自人数
select sex,avg(math),count(*) from stu group by sex;
//查询男同学和女同学的各自数学平均分和各自人数,要求分数低于70不参与分组
select sex,avg(math),count(*) from stu where math>70 group by sex;
//查询男同学和女同学的各自数学平均分和各自人数,要求分数低于70不参与分组,要求分组之后的人数大于2个
select sex,avg(math),count(*) from stu where math>70 group by sex having count(*)>2;

分页查询

select 字段列表 from 表名 limit 起始索引,查询条目数;

起始索引:从0开始
计算公式:起始索引=(当前页码-1)*每页显示的条数

NOTE:
(1)limit 是mysql的方言
(2)Oracle分页用rewnumber
(3)SQL service分页查询用top

//从0开始查询,查询3条
select *from stu limit 0,3;
//每页显示三条数据,查询第一页数据
select *from stu limit 0,3;
//每页显示三条数据,查询第一页数据
select *from stu limit 3,3;
//每页显示三条数据,查询第一页数据
select *from stu limit 6,3;

约束

约束是作用于表中列上的规则,用于限制加入表中的数据
约束的存在保证了数据库数据的正确性,有效性和完整性

约束名称描述关键字
非空约束保证列中所有数据不能有nullnot null
唯一约束保证列中的数据各不相同unque
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
检查约束保证列中的值完成某一个条件check
默认约束保存数据是,没指定值则使用默认值0(null也是一个值)default
外键约束外键用来让俩个表之间的数据建立链接,保证数据一致性和完善性foreign key
create table emp(id int primary key,//员工id,主键并且自增长ename varchar(50) not null unque,//非空并且唯一bouns double(7,2) default 0//如果没有奖金默认为0); //建完表之后添加非空约束
alter table 表名 modify 字段名 数据类型 not null;
//删除约束
alter table modify 字段名 数据类型;

演示自动增长:auto-increment(当列是数字类型并且是唯一约束)

insert into emp(ename) value('李四');
insert into emp(id,ename)values(null,'赵六');
//自动实现id

外键约束

外键用来让俩个表的数据之间进行链接,保证数据的一致性和完整性。
添加约束:(先创建主表,再创建从表)

//创建表的时候添加
create table 表名(列名 数据类型,constraint 外键名称 foreign key (外键列名) references (主表);constraint fk_emp_dep foreign key (dep_id) references dept(id);;//建立表之后添加约束
alter table 表名 add constraint 外键名称 foreign key 外键字段名称 references 主表名称(主表列名称);

删除约束:

alter table 表名 drop foreign key 外键名称;

数据库设计

软件研发步骤

需求分析(产品经理)–>制作产品原型
设计(架构师+开发工程师)—>软件结构设计,数据库设计,接口设计,过程设计
编码(开发工程师)
测试(测试工程师)
安装部署(运维工程师)

数据库设计理念和步骤

数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。
建立数据库中的表结构和表与表之间的关联关系的过程。

数据库的设计步骤:
(1)需求分析:数据是什么?数据具有哪些属性?数据于属性的特点.
(2)逻辑分析:通过ER图对数据库进行逻辑建模,不需要考虑物理逻辑
(3)物理设计:根据数据库自身的特点把逻辑转换为物理设计
(4)维护设计:对表的需求见表 表优化

表关系

一对一(多用于表的拆分,将一个实体经常使用的字段放在一张表里面,不经常使用的字段放在另外一张表,用于提高查询性能)
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一(uniquk)

一对多
实现:在多的一方建立外键,指向一的一方的主键

多对多
实现:建立第三张中间表,中间表至少包含俩个外键,分别关联俩方主键

多表查询

笛卡尔积:有A和B俩种集合,取A和B中所有的组合情况
多表查询的目的:消除无效数据

  • 连接查询:
    内连接:相当于查询A B交集的数据
//隐式内连接
select 字段列表 from 表1,表2…where 条件;
//查询emp的name和dept的dname数据,使得emp.dep_id==dept.id
select emp.name,dept.dname from emp dept where emp.dep_id=dept.did;
//给表起别名
select t1.name,t2.dname from emp t1 dept t2 where t1.dep_id=t2.did;//显式内连接
select 字段列表 from 表1 inner  join 表2 on 条件
select *from emp inner join dept on emp.dep_id=dept.did;

外连接:
(1)左外连接:相当于查询A表所有的数据和交集部分的数据

select 字段列表 from1 left[outer] join2 on 条件;

(2)右外连接:相当于查询B表所有数据和交集部分数据

select 字段列表 from1 right[outer] join2 on 条件;
  • 子查询

事务

数据库的事务是一种机制,一个操作序列,包含了一组数据库的操作命令
事务把所有的命令作为一个整体一起向系统提交或者撤销操作请求,也就是这一组数据库命令要么同时成功,要么同时失败。

事务是一个不可分割的工作逻辑单元。(开启事务——>提交事务——>回滚事务)

//开启事务
start transaction;
begin;
//提交事务
commit;
//回滚事务
rollback;
begin;
update account set money=money-500 where name="李四";
update account set money=money+500 where name="张三";
commit;//事务的数据会被持久化更改
rollback;

事务的四大特征:
(1)A(原子性):事务是一个不可再分的最小单位,要么同时成功,要么同时失败。
(2)C(一致性): 事务完成的时候,必须使得所有的数据必须保持一致
(3)L(可见性):多个事务之间,操作的可见性
(4)D(持久性):事务一旦提交或者回滚,它对数据库的数据改变就是永久的。

Mysql的事务默认自动提交:

//查看事务的默认提交方式 1--自动提交 0--手动提交
select @@autocommit;
//修改事务的提交方式(手动提交)
set  @@autocommit=0;

http://chatgpt.dhexx.cn/article/2AJvM8fv.shtml

相关文章

又一门国产数据库语言诞生了,比SQL还好用

一、数据库语言的目标 1.1 数据库是做什么的 数据库这个软件&#xff0c;名字中有个“库”字&#xff0c;会让人觉得它主要是为了存储的。其实不然&#xff0c;数据库实现的重要功能有两条&#xff1a;计算、事务&#xff01;也就是我们常说的OLAP和OLTP&#xff0c;数据库的…

数据库标准数据语言SQL——总结

数据库标准数据语言SQL SQL(Structured Query Language),结构化查询语言 1. 数据查询——select 2. 数据操纵——create,drop,alter 3. 数据定义——insert,update,delete 4. 数据控制——grant,revoke 1数据定义 1. 模式的定义删除 2. 基本表的定义、删除与修改 列级完整…

【数据库】SQL语言

目录 一、SQL语言概述 1、特点 2、SQL功能 3、SQL支持数据库系统三级模式 二、数据定义语言&#xff08;DDL&#xff09; 1、模式 2、基本表 3、视图 4、索引 三、数据查询语言&#xff08;DQL&#xff09; 1、单表查询 2、连接查询 3、嵌套查询 4、集合查询 5、…

数据库语言-SQL

数据库语言&#xff0d;SQL 一、概述二、利用SQL建立数据库1、创建Database2、创建Table3、追加元组 三、利用SQL进行简单查询1、单表查询2、检索条件之去重复记录3、检索结果之排序4、模糊查询 四、利用SQL语言进行多表联合查询1、θ-连接之等值连接2、表更名与表别名3、θ-连…

数据库SQL语言

SQL语言基础 大家好&#xff0c;我是大黄。这次我来简单带你们了解一下数据库技术中必不可少的一项——SQL语言。 SQL&#xff0c;英文是Structured Query Language&#xff0c;直面翻译就是结构化疑问语言。所以说明这个语言是有一定的结构的&#xff0c;所以基础阶段不会太困…

数据库语言

DDL语言 其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表&#xff08;CREATE TABLE 或 DROP TABLE&#xff09;为表加入索引等。 mysql是一个关系型数据库&#xff0c;库里面包含若干个表&#xff0c;而每一张表都是由行和列组成。 1.关于数据库操作的命…

数据库基础语言

目录 数据库与表的概念 如何操作数据库 数据库连接方式 SQL分类 DDL数据定义语言 DML 数据操作语言 数据库常用数据类型 约束条件 主键约束(PRIMARY KEY) 具有主键约束的字段同时可以使用自增来让DBMS自行对其值进行维护 非空约束(NOT NULL) 唯一性约束(UNIQUE) D…

MySQL-SQL语言

文章目录 SQL语法要求&#xff1a;1、DDL1.1、数据库操作(1) 查询当前数据库(2) 查询当前数据库(3) 创建数据库(4) 创建一个itheima数据库&#xff0c;并且指定字符集(5) 删除数据库(6) 切换数据库 1.2、表操作1.2.1、表的基本操作(1) 查询当前数据库所有表(2) 查看指定表结构(…

只知道SQL数据库?又一国产数据库语言诞生了

一、为什么学习数据库&#xff1f; 学习数据库&#xff0c;你肯定需要先了解它&#xff0c;这样你才知道你为什么要学习它&#xff0c;数据库除了SQL还有一些别的数据库&#xff0c;了解它们的作用&#xff0c;可以在不同的场景选择最符合的一个数据库。 1.1 什么是数据库&am…

比SQL还好用,又一门国产数据库语言诞生了

目录 一、数据库语言的目标1、要说清这个目标&#xff0c;先要理解数据库是做什么的。2、什么样的计算体系才算好呢&#xff1f; 二、SQL为什么不行1、先看写着简单的问题2、为什么 SQL 不行呢&#xff1f;3、再看跑不快的原因4、我们再做个类比&#xff1a; 三、SPL为什么能行…

MySQL数据库——SQL语言

文章目录 MySQL数据库——SQL语言前言一、数据定义语言&#xff08;DDL&#xff09;二、数据操纵语言&#xff08;DML&#xff09;三、事务控制语言&#xff08;TCL&#xff09;四、数据查询语言&#xff08;DQL&#xff09;1.select/for 基本查询语句2.给列起别名&#xff08;…

写着简单跑得又快的数据库语言 SPL

数据库语言的目标 要说清这个目标&#xff0c;先要理解数据库是做什么的。 数据库这个软件&#xff0c;名字中有个“库”字&#xff0c;会让人觉得它主要是为了存储的。其实不然&#xff0c;数据库实现的重要功能有两条&#xff1a;计算、事务&#xff01;也就是我们常说的 OLA…

大数据和云计算有什么关系?

前言 本文隶属于专栏《大数据从0到1》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和文献引用请见《大数据从0到1》 解答 云计算关注资源的分配和利用&#xff0c;侧重…

【云原生|云计算系列】云计算基础概念

欢迎来到云原生专题的云计算系列第一篇博客&#xff0c;我们将探索云计算的基础知识&#xff0c;以帮助您深入了解这个迅速发展的领域。在前一篇博客中&#xff0c;我们介绍了云原生的概念和重要性&#xff0c;强调了它作为云计算的核心理念和实践的关键角色。本篇博客将进一步…

云计算之概念——IaaS、SaaS、PaaS、Daas

云计算通俗来说就是输入/输出和计算不在一个主机上。计算要用到计算设备&#xff0c;计算设备一般是指CPU、内存和硬盘&#xff0c;输入/输出设备一般是指键盘、鼠标、显示器、耳机、音响、话筒等外设。而我们的个人计算机是使用主板将这些东西连接到一起来协调工作。 一个软件…

盘点云计算的概念,分类和特点

云计算主要分为 4 种类型&#xff1a;私有云、公共云、混合云和多云。同时&#xff0c;云计算服务主要有 3 种&#xff1a;基础架构即服务&#xff08;IaaS&#xff09;、平台即服务&#xff08;PaaS&#xff09;和软件即服务&#xff08;SaaS&#xff09;。 怎么选择云类型或云…

云计算(详细解释)

云计算 云计算实现了通过网络提供可伸缩的,廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源.云计算代表了以虚拟化技术为核心,以低成本为目标的,动态可拓展的网络应用基础设施.云计算包括3种典型的服务模式:laas(基础设施即服务…

云计算的概念、原理和关键技术

1 云计算的定义 NIST&#xff08;美国国家标准及技术研究所&#xff09;对云计算的定义&#xff1a; “ 云计算是一种模型&#xff0c;实现无处不在的、方便、通过网络按需访问的可配置的共享计算资源池&#xff08;例如&#xff0c;网络、服务器、存储、应用程序、服务&…

云计算的概念与原理

接下来这几篇将给大家介绍KVM的相关知识&#xff0c;讲到KVM之前我们先了解一下云计算&#xff0c;这也是自己在网上找的一些知识总结。给大家参考一下。 一、云计算的概念 1.1、云是什么 我们可能使用过百度云是吧&#xff0c;就是将自己的文件放到那里去保存&#xff0c;要用…

什么叫云计算?云计算通俗解释

云计算通俗点讲就是把以前需要本地处理器计算的任务交到了远程服务器上去做。仔细给您解释云计算的概念可能比较抽象&#xff0c;我给您举几个云计算的应用实例吧。 第一是webQQ&#xff0c;你访问webqq的时候就会发现这里面有很多像是图片处理&#xff0c;网页浏览&#xff0…