Skip to content

sql-select-database

单个数据库服务器(关系型数据库管理系统,RDBMS)可以管理多个独立的数据库。每个数据库都是一个自包含的表、视图和其他对象的集合。在执行创建表或查询数据等操作之前,你必须首先告诉服务器你打算使用哪个数据库。这被称为为你的会话设置“当前数据库”。

USE 语句是一个简单的命令,用于选择一个数据库作为你的交互式会话的当前数据库。一旦你执行 USE,你运行的所有后续 SQL 命令(如 SELECT、INSERT、CREATE TABLE)都将针对所选数据库执行,直到你选择另一个数据库或结束会话。

USE database_name;

这里,database_name 必须是服务器上现有数据库的名称。

注意:USE 语句是 SQL 标准的一部分,但主要用于命令行客户端和 GUI 工具(如 DBeaver、MySQL Workbench 或 SQL Server Management Studio)。其实现可能有所不同。例如,某些系统可能没有直接的 USE 等效项,需要使用其他方法来切换上下文。

应用程序中数据库选择的工作原理

Section titled “应用程序中数据库选择的工作原理”

在应用程序代码中(例如,使用 Python、Java、Node.js 或 Go),你通常不执行 USE 语句。相反,目标数据库是直接在连接字符串中指定的,当你的应用程序建立与数据库服务器的连接时。这确保了该连接的每个查询从一开始就正确地路由到预期的数据库。

一个典型的连接字符串可能看起来像这样:

postgresql://username:password@hostname:port/database_name

让我们通过一个 SQL 命令行客户端中的典型工作流程。

  1. 首先,让我们创建一个新的数据库来工作。
create database company_db;
  1. 现在,选择这个新数据库,使其成为活动的上下文。
use company_db;
Database changed
  1. 选择了 company_db 后,我们现在可以在其中创建表。
create table employees (
id INT primary key,
name VARCHAR(100) not null
);
  1. 我们可以插入数据并查询它,所有操作都将正确地针对 company_db 中的 employees 表。
insert into employees (id, name) values (1, 'Alice');
select * from employees;
idname
1Alice

如果你尝试 USE 服务器上不存在的数据库,SQL 将返回一个错误。

use non_existent_db;
ERROR 1049 (42000): Unknown database 'non_existent_db'