【数据库】常用数据库简介

news2024/9/22 10:14:08

7f61853775a042089c73793209536ddf.jpeg

目录

 

🍔 常用的关系型数据库

🍔 Mysql简介

🍔 SQL 简介

SQL语句的分类

SQL 写法

SQL 常用的数据类型

🍔 DDL语句

对数据库的操作

对数据表的操作

🍔 DML语句

插入数据 insert into

修改数据 update

删除数据 delete

约束

🍔 条件查询语句

🍔 聚合查询

🍔 分组查询

🍔 分页查询

🍔 小结


 

🍔 常用的关系型数据库

🐼 什么是关系型数据?

  • 可以存放在Excel中的数据

  • 数据表有明确的结构, 结构不会频繁变化

    • 列名, 每一列有固定的类型, 每一列大小范围可以预计

  • 用来存储关系型数据的就是关系型数据库

🐼 常用的关系型数据库

Oracle

mysql

sqlserver

postgre

 

非关系型数据

  • 文本/图像 长度不固定

  • 结构频繁变化

 

常用的非关系型数据库

  • 强调 Key-Value 的方式存储数据

Pycharm链接Mysql

aaaa882236324896995d7adb6ca1a8e1.png

🍔 Mysql简介

  • MySQL的特点:免费,支持大型数据库,标准的SQL语言形式,跨平台。

  • 课程使用的版本时MySQL8.0/5.6版本。

  • MySQL登录的两种方式:

    • 方法一:mysql -uroot -p123456 (登陆本机的mysql)

    • 方法二:mysql --host=192.168.88.161 --user=root --password=123456 (登陆远程的mysql)

 

🍔 SQL 简介

sql 结构化查询语言(Structured Query Language)简称SQL

不同数据库厂商在标准SQL的基础上, 都会做一些微调

标准SQL 和 Mysql /Oracle SQL 大多数语句都是一样的, 但是有一些细节上的差别

  • sql 语句, 如果是针对Mysql来写的, 迁移到其它的数据库, 这些SQL语句可能还需要调整, 不见得直接就能运行

SQL语句的分类

1、数据定义语言:简称DDL(Data Definition Language)用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

2、数据操作语言:简称DML(Data Manipulation Language)用来对数据库中表的记录进行更新。关键字:insert,delete,update等

3、数据查询语言:简称DQL(Data Query Language)用来查询数据库中表的记录。关键字:select,from,where等

4、数据控制语言:简称DCL(Data Control Language)用来定义数据库的访问权限和安全级别,及创建用户。

DDL/DML/DQL 重点是查询语句 DQL

SQL 写法

  • 在pycharm中 写SQL 所有的关键字会自动变色(默认蓝色)

  • 在建表, 给表名,字段起名字的时候要避开关键字

  • 注释写法 单行注释 # 多行 /* */

SQL 常用的数据类型

  • MySQL 支持多种类型,大致可以分为三类:

    • 数值 整形/浮点型

    • 日期/时间 日期/时间/日期时间/时间戳

    • 字符串(字符)类型

      • char (100) 声明100 就会申请100个字符

      • varchar(100) 看用了多少, 用多少占多少,但是不会超过上限(100)

      • text/blob 比较长的二进制文件 长文本 用的不多

 

🍔 DDL语句

对数据库的操作

  • 创建数据库:CREATE DATABASE 数据库名;

  • 查看数据库:SHOW DATABASES;

  • 删除数据库:DROP DATABASE 数据库名;

  • 使用数据库:USE 数据库名;

对数据表的操作

🐻 创建表

# 创建数据表  创建表的时候, 需要指定字段名字, 字段类型, 如果某些字段需要添加约束 在类型后面写约束的内容
create table category(
    cid varchar(20) primary key not null ,
    cname varchar(100)
);

🐻 查看表

desc 表名; # 查看表结构
show tables; # 查看当前数据库内所有的数据表

🐻 删除表

drop table 表名;

🐻 修改表

  • 增加字段

alter table 表名 add 字段名字 类型(长度) [约束]
  • 修改字段

alter table 表名 change 要修改的字段名字 要改成的字段名字 类型(长度) [约束]
  • 删除字段

alter table 表名 drop 字段名字
  • 修改表名

# 修改表名
格式:rename table 表名 to 新表名;

 

🍔 DML语句

插入数据 insert into

insert into 表名(字段1, 字段2...) values (值1, 值2 ....),(值1, 值2 ....)....
# 如果所有的字段都赋值了, 字段名字可以不写, 传入值的时候, 就按照所有字段的先后顺序传入
insert into 表名 values (值1, 值2 ....),(值1, 值2 ....)....

如果数据中有中文的内容, 最好在建数据库的时候, 就指定数据库的字符集charset=utf8

建数据库的时候指定好了中文字符集, 里面所有的数据表字段都是utf8的, 否则每次建表的时候都要单独指定

修改数据 update

update 表名 set 字段名 = 值, 字段名= 值 ...

update category2 set cname = '家电'; # 不加条件, 整列值都修改成相同的
​
update category2 set cname='水果' where cid = 'c001'; # 加了条件只修改满足条件的记录

1、列名的类型与修改的值要一致.

2、修改值得时候不能超过最大长度.

3、除了数值类型外,其它的字段类型的值必须使用引号引起

 

删除数据 delete

delete from 表名 [where 条件]
delete from category2 # 删除表中所有数据
​
delete from category2 where cid='05';  # 删除 cid是05的数据
​
truncate category2; # 清空表

delete from category2

truncate category2

使用delete删除表记录时,主键自增序列不清零。使用truncate删除表记录时,主键自增序列清零。

约束

建表的时候, 可以给字段添加约束信息, 用来对字段做一些限制

主键约束

primary key auto_increment

  • 不能为空

  • 不能重复

  • 加上auto_increment 可以由Mysql自己维护, 每次自动+1

create table person2(
    id int primary key auto_increment,
    last_name varchar(100),
    first_name varchar(100),
    address varchar(100),
    city varchar(100)
);

1)主键应当是对用户没有意义的

2)永远也不要更新主键。

3)主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

4) 主键应当由计算机自动生成。

当字段为主键并自增的时候, 插入数据的时候, 可以不传这一列

insert into person2(first_name,last_name) values ('Bill','Gates');

如果只是声明了primary key 没有声明自动增长, 这列信息一定要传, 需要自己维护

insert into person(id,first_name,last_name) values (1,'Bill','Gates');

 

Not null

非空约束

  • 当前列添加了非空约束, 这一列中不能有空值

create table person3(
    id int primary key auto_increment,
    last_name varchar(100) not null ,
    first_name varchar(100),
    address varchar(100),
    city varchar(100)
);

unique

唯一约束

  • 当前列添加了非空约束, 这一列中不能有重复值

create table person4(
    id int primary key auto_increment,
    last_name varchar(100) unique,
    first_name varchar(100),
    address varchar(100),
    city varchar(100)
);

default 默认值

  • 如果一列添加了默认值, 某一行没有传入这一列数据的时候, 就会用默认值来填充

create table person5(
    id int primary key auto_increment,
    last_name varchar(100) unique,
    first_name varchar(100),
    address varchar(100),
    city varchar(100) default '北京'
);

 

🍔 条件查询语句

比较查询

select * from product where pname='花花公子';
select * from product where price=800;
select * from product where price!=800;
select * from product where price<>800;
select * from product where price>60;
select * from product where price<800;

范围查询

select * from product where price between 200 and 1000;
select * from product where price in (200,800);

这里 in 不是范围, 而是两个具体的取值, 上面的sql语句只能查询出价格=200 价格=800的商品, 而不是0<价格<800

逻辑查询

select * from product where price >=200 and price<=1000;
select * from product where price =200 or price=800;
select * from product where not (price =800);

模糊查询

# 模糊查询
select * from product where pname like '香%';
select * from product where pname like '%想%';

% 通配符 这里可以代替0~多个字符

_ 代表一个字符

模糊查询遍历这列数据的所有行, 看字段是否满足传入的条件

非空查询

select * from product where category_id is Null;
select * from product where category_id is not null ;

 

查询结果排序 order by

select * from product order by price;
select * from product order by price ,category_id DESC ;

默认升序 ASC

降序 DESC

多字段排序, 当前面的字段排序的时候, 排序结果中有相同取值的时候, 后面排序的字段才能看到效果

🍔 聚合查询

count() 计数 NULL值会过滤

sum() 求和

avg() 求平均

min() 最小值

max() 最大值

# 聚合查询
# 查询所有商品的条目数
select count(*) from product;
select count(*) from product where category_id='c001';
# 查询类别是c002的所有商品价格的总和
select sum(price) from product where category_id='c002';
# 查询类别是c002的所有商品价格的平均值
select avg(price) from product where category_id='c003';
# 查询c003类别中商品价格最大值最小值
select MAX(price),MIN(price) from product where category_id='c003';

pycharm常用快捷键

 shift + alt + ↑↓ 移动一行/多行代码
 ctrl+D  复制代码

🍔 分组查询

group by

  • group by 分组字段 会把这个字段中取值相同的数据行放到一组中, 做后续的计算

    • 分组聚合

    • 分组过滤

    • 分组转换

  • 分组之后的结果可以添加having子句进行过滤, 类似于where条件

# 统计各个分类商品的个数
select category_id,count(*) from product group by category_id;
# 统计各个分类商品的个数 , 且只显示个数大于1的类别
select category_id,count(*) from product group by category_id HAVING count(*)>1;
​
# 统计各个类别商品的平均价格
select category_id,avg(price) from product group by category_id;
select
    category_id,
    max(price)
from
    product
group by
    category_id;

1).having是在分组后对数据进行过滤,where是在分组前对数据进行过滤

2).having后面可以使用分组函数(统计函数),where后面不可以使用分组函数。

🍔 分页查询

  • 当满足查询条件的记录比较多的时候, 我们希望控制每次返回的数据条目数, 可以使用LIMIT 做分页返回

LIMIT M,N

  • M 从第几条开始返回 M计算 (第几页-1) * N(一页返回几条数据)

  • N 一次返回几条数据

select * from product LIMIT 0,5;
select * from product LIMIT 5,5;
select * from product LIMIT 10,5;

 

🍔 小结

SQL语言

  • DDL 了解(对数据库和数据表的操作, 场景相对比较少, 作为了解)

  • DML 重点掌握插入数据

    • insert into 表名(字段) values (值)

  • DQL 重点掌握

    • 基本结构

    select 字段
    from 表名
    where 条件
    group by 分组
    having 分组之后条件
    • where 条件

名称符号说明
比较查询> < , <=, >= ,=, <> !=大于、小于、大于(小于)等于、不等于
范围查询BETWEEN ...AND...显示在某一区间的值(含头含尾) []
 IN(set)显示在in列表中的值,例:in(100,200)
模糊查询LIKE ‘张%’LIKE ‘%涛%’模糊查询,Like语句中,%代表零个或多个任意字符,代表一个字符,例如:first_name like ‘a%’;
非空查询IS NULL IS NOT NULL判断是否为空
逻辑查询and多个条件同时成立
 or多个条件任一成立
 not不成立,例:where not(salary>100);
  • 聚合函数

    count() 计数/sum() 求和/avg() 求平均/max() 求最大/min()求最小

    排序 order by ASC 升序(默认)|DESC(降序)

  • group by分组 和 having

  • 分页(了解) Limit

 

约束 (了解)

  • 主键 primary key 一般会跟着auto_increment

    • 非空+唯一

  • 非空 not null

  • 唯一 unique

  • 默认值 default

af0d51bf269846e7af6a43670df60850.jpeg 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<<编码>> 第 16 章 存储器组织(3)--3-8 译码器 示例电路

3-8 译码器 info::操作说明 “写入” 开关先断开(Q 为低电平, 表示不写入) S2-S1-S0 设置一个二进制数, 选中 Q0~Q7 其中一个作为 Q 的输出 “数据输入” 端置入要保存的数(0或1) 闭合 “写入” 开关, 对应的一位锁存器中的 W 为高电平, 表示可以写入, “数据输入” 的值最终…

Java安全(加密+HTTPS+WEB安全)

Java加密 单向加密 接收一段明文&#xff0c;然后以一种不可逆的方式将它转换成一段密文 ①、MD5&#xff0c;将无论多长的数据最后编码128位数据&#xff0c;常用文件校验、密码加密、散列数据 byte[] data ...;//明文数据 MessageDigest md5 MessageDigest.getInstance…

大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【软件资料集】系统培训方案(Word项目参考2024)

1. 培训概述 2. 培训目的 3. 培训对象及要求 3.1. 培训对象 3.2. 培训人员基本要求 4. 培训方式 5. 培训内容 6. 培训讲师 7. 培训教材 8. 培训质量保证 8.1. 用户培训确认报告 8.2. 培训疑问解答 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&…

opencv实战项目二十四:棋盘格相机内参标定

文章目录 前言一、简介&#xff1a;二、使用步骤2.1制作标定板2.2 拍摄不同角度的标定板2.3计算棋盘格角点并优化2.4计算相机参数 三、整体代码实现&#xff1a; 前言 在数字图像处理和计算机视觉领域&#xff0c;相机标定是一个至关重要的步骤。它为相机提供了一个准确的数学…

Tomcat 乱码问题彻底解决

1. 终端乱码问题 找到 tomcat 安装目录下的 conf ---> logging.properties .修改ConsoleHandler.endcoding GBK &#xff08;如果在idea中设置了UTF-8字符集&#xff0c;这里就不需要修改&#xff09; 2. CMD命令窗口设置编码 参考&#xff1a;WIN10的cmd查看编码方式&am…

Nature|PathChat:病理学多模态生成性AI助手的创新与应用|顶刊精析·24-09-21

小罗碎碎念 今日顶刊&#xff1a;Nature 这篇文章今年6月就发表了&#xff0c;当时我分析的时候&#xff0c;还是预印本&#xff0c;没有排版。今天第一篇推文介绍的是Faisal Mahmood &#xff0c;所以又把这篇文章拉出来详细分析一下。 作者角色作者姓名单位名称单位英文名称第…

PMP--二模--解题--61-70

文章目录 4.整合管理61、 [单选] 为解决具有挑战性的客户请求&#xff0c;启动了一个项目。该项目必须在短时间内交付。项目经理应该怎么做来尽可能提高项目的成功率&#xff1f; 14.敏捷--MVP--最小可行产品--使用最小可行产品获得客户尽早地反馈。完整性和交付是主观的。团队…

构建高可用和高防御力的云服务架构第二部分:SLB负载均衡(2/5)

在现代云服务中&#xff0c;负载均衡&#xff08;Load Balancing&#xff09;是一种关键技术&#xff0c;用于优化资源利用、最小化响应时间、提高系统的可伸缩性和可靠性。负载均衡器位于客户端和服务器之间&#xff0c;根据预设的策略将请求分发到多个服务器上&#xff0c;以…

华为HarmonyOS地图服务 4 - 通过“地图相机“控制地图的可见区域

场景介绍 华为地图的移动是通过模拟相机移动的方式实现的,您可以通过改变相机位置,来控制地图的可见区域,效果如图所示。 本章节将向您介绍相机的各个属性与含义,并移动相机。 相机移动前 接口…

基于lnmp搭建wordpress

一、案例目标 &#xff08;1&#xff09;了解LNMP环境的组成。 &#xff08;2&#xff09;了解LNMP环境的部署与安装。 &#xff08;2&#xff09;了解WordPress应用的部署与使用。 二、节点规划 IP 主机名 节点 192.168.200.20 lnmp lnmp服务节点 三、案例实施 LN…

基于微信小程序的购物系统+php(lw+演示+源码+运行)

基于微信小程序的购物系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的购物系统的开发全过程。通过分析基于微信小程序的购物系统管理的不足&#xff0c;创建了一个计算机管理基于微信小…

1.Spring-容器-注册

一、Bean和获取Bean &#xff08;1&#xff09;创建IoC容器&#xff1a; SpringApplication.run(类名.class, args); ConfigurableApplicationContext ioc SpringApplication.run(Spring01IocApplication.class, args); &#xff08;2&#xff09;将对象注册到IoC容器中&am…

[Vue] 从零开始使用 Vite 创建 Vue 项目

&#x1f4da; 一、安装 Node.js Node.js 是一个运行 JavaScript 代码的 JavaScript 运行时&#xff0c;它允许我们在服务器端运行 JavaScript 代码。以下是安装 Node.js 的步骤&#xff1a; &#x1f310; 访问 Node.js 国内网站&#xff1a;https://nodejs.cn/ &#x1f4…

【如何在 Windows 10 主机上通过 VMware 安装 Windows 11 虚拟机,并共享主机网络】

环境说明 主机操作系统&#xff1a;Windows 10虚拟机操作系统&#xff1a;Windows 11虚拟机软件&#xff1a;VMware 步骤一&#xff1a;确保主机&#xff08;Windows 10&#xff09;网络连接正常 启动网络加速软件&#xff1a;在主机上启动软件&#xff0c;确保主机可以正常访…

基于LSTM的温度时序预测

1.背景 本文接【时序预测SARIMAX模型】 一文&#xff0c;采用LSTM模型进行平均温度数据预测。具体的背景和数据分析就不做重复说明&#xff0c;感兴趣可以去看上文即可。 2.LSTM模型 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种特殊…

AI驱动TDSQL-C Serverless 数据库技术实战营-ai学生选课系统数据分析

以前用过腾讯的TDSQL-MYSQL&#xff0c;TBASE&#xff0c;最近了解到TDSQL-C serverless&#xff0c;本次试验结合的AI大模型驱动来学习实战TDSQL-C serverless&#xff0c;体验服务化的数据库&#xff0c;和一句简单描述进行学生选课系统数据分析&#xff1b; 我使用的分析数据…

C++初阶-list用法总结

目录 1.迭代器的分类 2.算法举例 3.push_back/emplace_back 4.insert/erase函数介绍 5.splice函数介绍 5.1用法一&#xff1a;把一个链表里面的数据给另外一个链表 5.2 用法二&#xff1a;调整链表当前的节点数据 6.unique去重函数介绍 1.迭代器的分类 我们的这个迭代器…

【alluxio编译报错】Some files do not have the expected license header

Some files do not have the expected license header 快捷导航 在开始解决问题之前&#xff0c;大家可以通过下面的导航快速找到相关资源啦&#xff01;&#x1f4a1;&#x1f447; 快捷导航链接地址备注相关文档-ambaribigtop自定义组件集成https://blog.csdn.net/TTBIGDA…

【Elasticsearch系列十八】Ik 分词器

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…