首页 > 数据库 >数据库 | Database

数据库 | Database

时间:2023-05-18 15:46:04浏览次数:49  
标签:Database 数据库 emp deptno WHERE id SELECT

1 入门

1.1 元数据

数据可以分为两类: 元数据和实际数据.

元数据是描述数据的数据, 也可以被称为 "数据的数据". 它们提供了关于数据的信息, 例如数据的来源, 格式, 大小, 类型, 版本, 创建日期, 更新日期等等. 元数据通常用于数据管理和数据发现, 以帮助用户更好地理解和使用实际数据.

实际数据是指包含有意义信息的数据, 通常用于实际的分析, 研究, 决策和应用. 这些数据可以是数字, 文本, 图像, 视频, 声音等形式的数据. 实际数据可以包括原始数据, 处理后的数据, 分析结果, 报告等等.

1.2 文件系统

对于直接管理数据的系统如使用文件系统, 可能出现数据冗余和不一致 (相同数据多个副本?), 访问困难 (获取每一属性都需要额外编写函数?), 数据孤立 (数据分散难以获取?), 数据一致性 (不同格式的数据之间难以合并?), 更新操作的原子性 (原子操作不能被间断?), 多用户并发访问 (多个用户同时读写?), 安全性问题 (数据的可访问性?).

1.3 数据视图

数据视图就是从数据库中选择一部分数据, 组合起来形成一个虚拟的表格, 提供给用户方便的查询和访问. 它相当于是一个数据库查询的快捷方式, 让用户只看到他们需要的数据, 隐藏掉不必要的信息, 即三层结构中的外模式部分.

三层结构:

  • 内部层 (内模式 / 物理层): 是用户能够看到和访问的数据视图. 外部模式定义了用户如何看待数据, 包括数据的组织方式, 数据的格式, 数据的查询方式等.

  • 概念层 (模式 / 逻辑层): 是数据库管理员看到的数据视图. 概念模式定义了整个数据库的逻辑结构, 包括数据的实体, 关系, 属性以及它们之间的联系.

  • 外部层 (外模式 / 视图层): 是数据库存储在计算机硬件上的实际结构. 内部模式定义了数据在存储介质上的物理结构和存储方式, 包括数据的文件, 索引, 存储器和存储空间等.

物理数据的独立性指的是内部层对于概念层独立, 逻辑数据的独立性指的是概念层对于外部层独立. 底层数据的修改对于上层是透明的.

1.4 数据模型

  • 物理模型

eg: B+ 树, 平衡树

  • 逻辑模型

eg: 关系模型, 网状模型, 层次模型, 基于对象的数据模型, 半结构化数据模型

  • 概念模型

eg: 实体 - 联系模型, 流程图

物理层使用物理模型, 逻辑层与视图层都采用逻辑模型.

半结构化数据指的是类似 HTML, XML, JSON 的具有标签与属性的不稳定数据. 结构化数据使用 DBMS, 非结构化数据使用 Hadoop.

1.5 数据库分类

1.5.1 NoSQL

NoSQL 数据库是一类非关系型数据库管理系统, 它们不使用传统的 SQL 语言进行查询.

  • 列式数据库

列式数据库 (Column-Oriented Database) 是一种数据存储方法, 将数据按照列 (Column) 而不是行 (Row) 进行存储和管理. 这与传统的行式数据库 (Row-Oriented Database) 有所不同, 行式数据库在读取数据时通常会读出多余数据, 列式数据库在某些场景下具有更高的性能和存储效率.

Monetdb 是常见的列式数据库.

  • 键值数据库

键值数据库 (Key-Value Database) 是一种非关系型数据库, 它采用简单的键值对 (Key-Value Pair) 数据结构来存储和管理数据. 键值数据库具有高度可扩展性, 低延迟和高性能的特点, 因此常被用于处理大量读写操作的场景.

Redis 是常见的键值数据库.

  • 文档数据库

文档数据库是一种基于文档的数据库管理系统, 其中数据以类似于 JSON 的结构化文档格式存储.

MongoDB 是常见的文档数据库.

  • 图数据库

图数据库是一种专门用于存储和查询图形数据结构的数据库管理系统. 图形数据结构由节点 (Nodes) 和边 (Edges) 组成, 节点表示实体, 边表示实体之间的关系. 与其他数据库类型相比, 图数据库能够更有效地处理复杂的关系和图遍历查询.

Neo4j 是常见的图数据库.

1.5.2 SQL

SQL 数据库也称为关系型数据库, 是基于关系模型的数据库管理系统. 关系型数据库使用 SQL (Structured Query Language) 作为查询语言, 支持事务处理, 数据完整性和并发控制等功能.

常见的关系型数据库有 Oracle, MySQL, SQLite 等.

1.5.3 NewSQL

NewSQL 数据库是一类新型数据库管理系统, 旨在克服传统关系型数据库在可扩展性和性能方面的局限, 同时保持其优秀的事务处理, 数据完整性和 SQL 查询能力.

常见的 NewSQL 数据库有 Google Spanner, CockroachDB 和 TiDB.

2 关系模型

关系是通过笛卡尔积定义的. 与传统的笛卡尔积不同, 元组的各个属性间的顺序可以调换. 关系的模式指的是结构化的定义, 关系的值指的是该关系的实例.

2.1 定义

  • 元组 (Tuple): 元组是关系中的一行, 表示一个数据记录. 元组中的每个元素对应于关系的一个属性.

  • 关系 (Relation): 关系是关系模型的基本构成单位, 表示为一个二维表格. 在实际数据库中, 关系通常对应于一个表. 表是一个存储元组的容器.

  • 属性 (Attribute): 属性是关系中的一列, 表示数据的某个特征. 属性具有名称和数据类型.

  • 域 (Domain): 域是属性可能取值的集合, 表示属性的值空间. 域定义了属性的数据类型, 范围和约束.

  • 键 (Key): 键是关系中用于唯一标识元组的一个或多个属性的组合. 主键 (Primary Key) 是关系中的一个特殊键, 用于确保元组的唯一性.

NULL 代表空状态 (unknown), 它包括不存在状态.

2.2 完整性约束

完整性约束 (Integrity Constraints) 是用于确保数据的准确性, 一致性和可靠性的规则.

2.2.1 实体完整性约束

超码(Superkey)是关系模型中的一个重要概念. 超码指的是一个或一组属性, 其能够在关系中唯一地标识每个元组. 换句话说, 超码是一个使得在关系中不存在两个相同的元组的属性集合. 如果超码是关系本身则称全码.

这有点像哈希表, 哈希表也是存储唯一键值对的数据结构, 只不过哈希表是一个键对应一个键值, 超码是多个键对应一个元组.

候选码 (Candidate Key) 的任何真子集都不是超码, 也即最小超码. 包含在候选码中的属性称为主属性. 不出现在任何候选码中的属性称为非主属性.

主码 (Primary Key) 从候选码中选择, 用于唯一标识不同元组. 主码属性不允许为空. 主属性包括主码属性.

2.2.2 参照完整性约束

外码 (Foreign Key) 是一个关系表中的属性或属性组合, 它对应另一个关系表的主键. 通过外码和主键的关联, 关系模型中的表可以相互引用, 从而表示实体之间的关系. 外码的取值限制于另一个关系表的主码已有取值. 外码可以设置为空.

2.3 关系运算

任何运算的输入或输出都是关系.

  1. 选择 (Select): 选择运算用于从关系表中筛选出满足特定条件的记录. 结果仍然是一个关系表. 在 SQL 中, 这对应于使用 WHERE 子句进行筛选.

  2. 投影 (Project): 投影运算用于从关系表中选取指定的属性列. 结果是一个仅包含所需属性列的关系表. 在 SQL 中, 这对应于 SELECT 子句中列出所需的属性列.

  3. 连接 (Join): 连接运算用于将两个或多个关系表基于某种关联条件 (如相等的键值) 进行组合. 连接可以是内连接 (Inner Join), 外连接 (Outer Join, 包括左外连接, 右外连接和全外连接) 或自连接 (Self Join). 在 SQL 中, 这些操作通过 JOIN 子句及其变体 (如 LEFT JOIN, RIGHT JOIN 等) 实现.

  4. 集合运算: 关系模型中的集合运算基于数学集合论, 包括并集 (Union), 交集 (Intersection) 和差集 (Difference). 这些运算用于合并或比较具有相同属性列的关系表. 在 SQL 中, 这些操作分别对应于 UNION, INTERSECT 和 EXCEPT 子句.

3 SQL

3.1 DML 语言

DML 指数据操纵语言.

3.1.1 SELECT

例如取出薪资大于 2500 的员工的所有属性:

SELECT * FROM emp WHERE sal > 2500

这里的 SELECT, FROM 和 WHERE 称为子句 (Clause).

SELECT 对表中的每一行执行其后的表达式, 比如

SELECT 1

会将每一行选中, 值为 1.

WHERE 就像 if 判断语句, 不一定要包括表中的某个属性, 它对每一行进行判断, 比如

WHERE 1=1

是一个恒真式, 全部选中.

子句执行顺序:

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

SELECT WHERE 可以实现简单的笛卡尔积连接 (不推荐)

SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno

内连接返回两个表之间匹配的行, 它只返回那些在两个表中都存在的记录

SELECT orders.order_id, customers.name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

INNER 可以省略. 这是最常见的连接方式.

外连接在内连接的基础上附加指定侧的未满足条件的元组, 如果没有匹配的值那么返回 NULL

SELECT orders.order_id, customers.name
FROM orders
LEFT JOIN customers
ON orders.customer_id = customers.customer_id;

同理存在 RIGHT JOIN.

自然连接将两个表中相同列名的列进行匹配, 自动执行连接操作

SELECT orders.order_id, customers.name, orders.order_date
FROM orders
NATURAL JOIN customers;

自连接指一个表与其自身进行连接操作

SELECT e1.employee_name AS Employee, e2.employee_name AS Manager
FROM Employees e1
LEFT JOIN Employees e2 ON e1.manager_id = e2.employee_id;

这里使用了 "取别名" 的方式.

LIKE 操作符用于对字符串值执行模式匹配, % (表示零个, 一个或多个字符) 和 _ (表示一个任意字符) 是用于构造搜索模式的通配符:

例如查询所有以 'A' 开头的名字:

SELECT * FROM students
WHERE student_name LIKE 'A%';

例如查询所有名字长度为 5 个字符的学生:

SELECT * FROM students
WHERE student_name LIKE '_____';

也可使用正则表达式.

GROUP BY 用于对查询结果进行分组, 通常与聚合函数 (如 COUNT, SUM, AVG, MIN, MAX 等) 结合使用. 聚合函数会忽略 NULL 值. GROUP BY 后有多个列时, 查询会按照这些列的组合对结果集进行分组. 当想要按某个列的值对数据进行汇总时, 可以使用 GROUP BY, 如计算下面每种产品的销售数量

SELECT product_id, COUNT(*) AS total_sales
FROM sales
GROUP BY product_id;

除聚合函数外, SELECT 中的表达式一定要在 GROUP BY 中出现, 否则 SELECT 得到的 GROUP 的某些属性值无法分配 (可能一个 GROUP 中某些属性有多个值).

HAVING 用于对 GROUP BY 子句生成的分组应用筛选条件, 与 WHERE 子句类似, 但适用于聚合函数和分组条件

SELECT product_id, COUNT(*) AS total_sales
FROM sales
GROUP BY product_id
HAVING total_sales > 100;

ORDER BY 用于对查询结果进行排序, 可以指定排序列和排序顺序 (升序 ASC 或降序 DESC)

SELECT product_id, COUNT(*) AS total_sales
FROM sales
GROUP BY product_id
HAVING total_sales > 100
ORDER BY total_sales DESC;

3.1.2 INSERT

INSERT 语句用于向数据库表中插入新记录:

INSERT INTO Students (student_id, student_name, age)
VALUES (1, 'John', 18);

3.1.3 UPDATE

UPDATE 语句用于修改数据库表中符合特定条件的记录:

UPDATE Students
SET student_name = 'New Name', age = 25
WHERE student_id = 5;

3.1.4 DELETE

DELETE 语句用于从数据库表中删除符合特定条件的记录:

DELETE FROM Students
WHERE age > 20;

3.2 DDL 语言

DDL 指数据定义语言.

3.2.1 CREATE

例如使用以下 CREATE 语句创建一个名为 "orders" 的表:

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT REFERENCES customers(customer_id),
  order_date DATE,
  order_time TIMESTAMP,
  total_cost NUMERIC(10,2),
  status VARCHAR(20),
  CONSTRAINT ck_status CHECK (status IN ('open', 'closed', 'pending'))
);

其中

  • order_id: 整数类型, 主键列, 用于唯一标识每个订单
  • customer_id: 整数类型, 外键列, 参照了另一个名为 "customers" 的表中的 customer_id 列
  • order_date: 日期类型, 用于存储订单的日期
  • order_time: 时间戳类型, 用于存储订单的时间
  • total_cost: 十进制数类型, 精度为 10 位, 小数点后保留 2 位, 用于存储订单的总成本
  • status: 字符串类型, 用于存储订单的状态

这个 CREATE 语句还包含了以下约束:

  • PRIMARY KEY: 用于指定 order_id 列作为主键, 确保每个订单有唯一的标识
  • REFERENCES: 用于指定 customer_id 列作为外键, 确保每个订单都关联到一个有效的客户
  • CONSTRAINT: 用于指定一个名为 "ck_status" 的检查约束, 确保订单的状态只能是 "open", "closed" 或 "pending"

3.2.2 DROP

例如使用以下 DROP 语句删除名为 "students" 的表:

DROP TABLE students;

3.2.3 ALTER

例如使用以下 ALTER 语句向 "students" 表中添加一个名为 "age" 的新列:

ALTER TABLE students ADD age INT;

3.3 一些例子

to_date: 这个函数用于将字符串转换为日期类型. 它需要两个参数: 要转换的字符串和日期格式. 日期格式是一个模式, 指示如何解析字符串中的日期和时间元素.

SELECT to_date(order_date_str, 'YYYY-MM-DD') AS order_date
FROM orders;

date_trunc: 这个函数用于截断日期和时间值, 将其精确到指定的单位. 它需要两个参数: 要截断的单位和要处理的日期或时间值.

SELECT date_trunc('month', order_date) AS order_month, COUNT(*)
FROM orders
GROUP BY order_month;

查询每个部门的人数, 平均工资, 平均补助, 工资总额, 要求即使部门没有员工也要输出相应信息, 输出结果包括部门编号, 部门名称, 人数, 平均工资, 平均补助, 工资总额:

SELECT emp.deptno, dname, COUNT(empno), AVG(sal), SUM(sal), AVG(comm)
FROM emp LEFT JOIN dept ON emp.deptno = dept.deptno
GROUP BY emp.deptno, dname

DISTINCT: 去重, 例如选出唯一的元组

SELECT DISTINCT deptno, job
FROM emp

CASE 表达式: 用于控制分支语句, 例如添加标签和实现特殊排序

SELECT id, score,
    CASE
        WHEN score >= 90 THEN '优'
        WHEN score >= 80 THEN '良'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS level
FROM students;

CASE 语句根据学生成绩将其分为四个等级, 并将结果命名为 level, 以便输出时添加标签.

SELECT id, name, score
FROM students
ORDER BY
    CASE
        WHEN score >= 80 THEN score
        ELSE 1000 + score
    END DESC, name;

CASE 语句先判断成绩是否大于等于 80 分, 如果是, 则按照成绩从高到低排序; 否则, 使用一个较大的数值 (1000 + score) 作为排序关键字, 以便将成绩小于 80 分的学生排在后面. 最后, 使用 name 列对结果进行次要排序.

子查询 (嵌套查询): 在一个语句中嵌套另一个查询语句

SELECT id, name, score
FROM students
WHERE score > (
    SELECT AVG(score)
    FROM students
);

子查询用于计算学生成绩的平均值, 然后将该值作为筛选条件, 查询出所有成绩高于平均值的学生信息.

EXISTS: 判断子查询结果是否存在

SELECT DISTINCT customer
FROM orders
WHERE EXISTS (
    SELECT id
    FROM orders
    WHERE customer = orders.customer AND amount > 200.0
);

EXISTS 判断子查询结果是否存在, 如果存在则返回该客户的姓名.

子查询分为相关子查询 (先执行外层, 外层逐次判断内行, "直接查询外层的某项内层属性") 和不相关子查询 (先执行内部, 内层结束才执行外部, "先生成各个独立的表再查询"), 如:

SELECT e.ename, e.sal
FROM emp e
WHERE e.sal > (SELECT AVG(sal) FROM emp WHERE deptno = e.deptno);

SELECT e.ename, e.sal
FROM emp e
WHERE e.sal > (SELECT AVG(sal) FROM employees);

子查询也可以放在 FROM 中:

SELECT emp.deptno, ename, sal
FROM emp JOIN (SELECT deptno
               FROM emp
               GROUP BY deptno
               HAVING AVG(sal)>2000) hdept
         ON emp.deptno=hdept.deptno;

查询每个员工的姓名, 工资, 所在部门的平均工资, 所处职位的平均工资, 使用相关子查询:

SELECT 
    e.ename, 
    e.sal, 
    (SELECT AVG(sal) FROM emp WHERE deptno = e.deptno) AS dept_avg_sal, 
    (SELECT AVG(sal) FROM emp WHERE job = e.job) AS job_avg_sal
FROM 
    emp e;

这也称为 "标量子查询" (子查询只返回一个值).

使用不相关子查询:

SELECT 
  E.ename, 
  E.sal, 
  D.Avg_Dept_Sal, 
  J.Avg_Job_Sal
FROM 
  emp E
JOIN 
  (SELECT 
     deptno, 
     AVG(sal) as Avg_Dept_Sal 
   FROM 
     emp 
   GROUP BY 
     deptno) D
ON 
  E.deptno = D.deptno
JOIN 
  (SELECT 
     job, 
     AVG(sal) as Avg_Job_Sal 
   FROM 
     emp 
   GROUP BY 
     job) J
ON 
  E.job = J.job
;

WITH 局部视图语法:

WITH department_salaries AS (
  SELECT 
    deptno, 
    AVG(sal) AS avg_salary
  FROM 
    emp
  GROUP BY 
    deptno
)
SELECT 
  e.ename, 
  e.sal, 
  ds.avg_salary
FROM 
  emp e
JOIN 
  department_salaries ds
ON 
  e.deptno = ds.deptno;

找到所处职位的平均工资在 1000 - 2500 之间的人, 要求输出姓名, 职位, 工资:

SELECT 
  ename, 
  job, 
  sal
FROM 
  emp e
WHERE 
  (SELECT AVG(sal) FROM emp WHERE job = e.job) BETWEEN 1000 AND 2500;

这也可以使用 JOIN, IN, ANY, SOME 实现.

NULLIF:

SELECT 
  column1 / NULLIF(column2, 0) AS result
FROM 
  your_table;

如果 column2 的值为 0, 那么 NULLIF(column2, 0) 将返回 NULL, 这将防止除以零的错误.

查询不在平均工资大于等于 5000 的部门工作的人:

SELECT 
  ename, 
  sal, 
  deptno
FROM 
  emp
WHERE 
  (deptno NOT IN (
    SELECT 
      deptno
    FROM 
      emp
    WHERE 
      deptno IS NOT NULL
    GROUP BY 
      deptno
    HAVING 
      AVG(sal) >= 5000
  ) 
  OR deptno IS NULL);

这里添加了一个 WHERE 子句, 以排除 deptno 为 NULL 的行, 然后在主查询中添加了一个 OR 条件, 以包含那些 deptno 为 NULL 的行. 这样可以确保 NULL 值被正确地处理.

UNION 用于将两个或更多个 SELECT 语句的结果组合到一个结果集中. UNION 会自动删除重复的行. 如果希望保留所有行 (包括重复的行), 则应使用 UNION ALL

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

INTERSECT 用于返回两个或更多 SELECT 语句结果集中的共享记录. 它返回的是两个查询结果的交集

SELECT column_name(s) FROM table1
INTERSECT
SELECT column_name(s) FROM table2;

MINUS 用于从第一个 SELECT 语句的结果中减去第二个 SELECT 语句的结果

SELECT column_name(s) FROM table1
MINUS
SELECT column_name(s) FROM table2;

查询人数小于 3 人的部门的部门名称, 即使这个部门没有员工, 也输出该部门名称:
连接:

SELECT d.dname, COUNT(e.empno) AS num_employees
FROM dept d 
LEFT JOIN emp e ON d.deptno = e.deptno 
GROUP BY d.dname 
HAVING COUNT(e.empno) < 3;

不相关子查询:

SELECT dname
FROM dept
WHERE deptno NOT IN (
    SELECT deptno
    FROM emp
    GROUP BY deptno
    HAVING COUNT(*) >= 3
);

相关子查询:

SELECT d.dname
FROM dept d
LEFT JOIN emp e ON d.deptno = e.deptno
WHERE (e.deptno IS NULL OR (
    SELECT COUNT(*)
    FROM emp
    WHERE deptno = d.deptno
)) < 3;

集合:

SELECT dname
FROM dept
MINUS
SELECT dname
FROM dept
WHERE deptno IN (
    SELECT deptno
    FROM emp
    GROUP BY deptno
    HAVING COUNT(*) >= 3
);

综合示例:

SELECT dname
FROM dept
WHERE NOT EXISTS (
    SELECT job
    FROM emp
    WHERE sal > 2000 AND sal < 5000
    EXCEPT
    SELECT job
    FROM emp
    WHERE deptno = dept.deptno
);

标签:Database,数据库,emp,deptno,WHERE,id,SELECT
From: https://www.cnblogs.com/Arcticus/p/17339066.html

相关文章

  • java内嵌数据库hsqldb
    java内嵌数据库hsqldb介绍:jdk1.8,maven k开发软件:ideaspringboot+mybatis+hsqldb内容:1.项目搭建2.基本操作3.本地数据持久化第一步 新建maven项目导入依赖<dependencies><dependency><groupId>org.hsql......
  • .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移
    前言接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。安装ORM框架,这里我们采用EFCore安装EFCore我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家阅读和......
  • mysql导出\导入数据库
    导出数据库mysqldump-upgms-ppgms-S/data/mysql_data/mysql/mysql.sock>pgms.sql;导出单表mysqldump-upgms-ppgms-S/data/mysql_data/mysql/mysql.sockt_organization>t_organization.sql;导入数据sourcet_bindinginfo.sql; ......
  • 使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版
    本教程之前的文章,我们已经介绍了如何用ST05事务码,对一个ABAP报表进行性能分析和优化的步骤。94.使用事务码ST05对SAPABAP数据库表访问性能调优的一个具体例子重构后的代码:REPORTzdb_optimization.DATA:lt_orderTYPETABLEOFzmyorder,ls_orderLIKE......
  • percona-xtrabackup数据库备份工具
    文章目录percona-xtrabackup备份工具安装流程完全备份流程完全恢复流程增量备份流程增量恢复流程percona-xtrabackup备份工具安装流程安装percona-xtrabackup先准备PerconaXtraBackup8.0需要的mysql源:yuminstall-yhttps://repo.mysql.com//mysql80-community-release-el7-......
  • java基于springboot+vue的篮球竞赛预约平台、比赛预约管理系统,附源码+数据库+lw文档+P
    1、项目介绍根据篮球竞赛预约平台的功能需求,进行系统设计。前台功能:用户进入系统可以实现首页,竞赛项目,平台公告,个人中心,后台管理等功能进行操作;后台由管理员和用户,主要功能包括首页,个人中心,用户管理,项目分类管理,竞赛项目管理,赛事预约管理,系统管理等功能;系统对这些功能进行整合......
  • 29、利用 LNMP 实现phpMyAdmin并利用redis会话保持,用页面管理数据库
    建设第二个网站,利用LNMP实现实现phpMyAdmin并利用redis会话保持,用页面管理数据库在100web1、200web2上创建网站数据存放目录[root@ubunt~]#mkdir/data/php2进入官网https://www.phpmyadmin.net/下载[root@ubuntphp2]#wgethttps://files.phpmyadmin.net/phpMyAdmin/5.......
  • Windows10安装oracle 19c数据库+PLsql详细安装过程
    Windows版Oracle19c安装过程记录文章目录Windows版Oracle19c安装过程记录前言安装过程1下载2安装3检查是否安装成功。PLSQL连接Oracle数据库前言安装Windows版Oracle19c。官网:https://www.oracle.com/database/technologies/安装过程首先在百度上搜索Windows版Oraclec19安装。1......
  • Python 连接 MySQL 数据库
    在实际数据分析和建模过程中,我们通常需要从数据库中读取数据,并将其转化为Pandasdataframe对象进行进一步处理。而MySQL数据库是最常用的关系型数据库之一,因此在Python中如何连接MySQL数据库并查询数据成为了一个重要的问题。本文将介绍两种方法来连接MySQL数据库,并将......
  • 快速入门:使用Azure 数据 Studio进行连接和查询 Azure SQL 数据库
    在此快速入门中,您将使用Azure数据Studio连接到AzureSQL数据库服务器。然后,将运行TRANSACT-SQL(T-SQL)语句来创建和查询中其他使用的TutorialDB数据库Azure数据Studio教程。先决条件若要完成本快速入门教程,需要Azure数据Studio,和AzureSQL数据库服务器。安装Azure......