Bảng lược đồ mysql

Trong hướng dẫn này, bạn sẽ học cách tạo, chỉnh sửa và xóa lược đồ (lược đồ) trong cơ sở dữ liệu SQL Server

Lược đồ trong SQL Server là gì

Lược đồ (schema) là tập hợp các đối tượng cơ sở dữ liệu bao gồm bảng, khung nhìn, trình kích hoạt, thủ tục lưu trữ, chỉ mục, v. v. Lược đồ được liên kết với tên người dùng được gọi là chủ sở hữu lược đồ, chủ sở hữu của các đối tượng cơ sở dữ liệu liên quan về mặt logic

Một lược đồ luôn thuộc về một cơ sở dữ liệu. Mặt khác, một cơ sở dữ liệu có thể có một hoặc nhiều lược đồ. Ví dụ, trong

CREATE SCHEMA customer_services;
GO
8, chúng tôi có hai lược đồ.
CREATE SCHEMA customer_services;
GO
9 và
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
0

Một đối tượng đủ điều kiện trong Lược đồ bằng cách sử dụng định dạng định dạng

SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
1, ví dụ.
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
2. Hai bảng trong hai lược đồ có thể sử dụng tên chung nếu bạn có thể có
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
3 và
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
4

Lược đồ tích hợp trong SQL Server

SQL Server cung cấp cho chúng tôi một số lược đồ được định nghĩa trước đó, ví dụ.

SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
5,
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
6,
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
7, và
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
8

Lưu ý rằng SQL Server sử dụng các lược đồ
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
7 và
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
8 cho các hệ thống đối tượng, do đó, bạn không thể tạo hoặc xóa bất kỳ đối tượng nào trong lược đồ này

Lược đồ mặc định cho cơ sở dữ liệu mới được tạo ra là

SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
5, thuộc quyền sở hữu của tài khoản người dùng
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
5. Theo mặc định, khi bạn tạo người dùng mới bằng lệnh
CREATE TABLE customer_services.jobs(
    job_id INT PRIMARY KEY IDENTITY,
    customer_id INT NOT NULL,
    description VARCHAR(200),
    created_at DATETIME2 NOT NULL
);
3, người dùng sẽ lấy
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
5 làm lược đồ mặc định của nó

Tạo lược đồ bằng câu lệnh CREATE SCHEMA trong SQL Server

Tổng quan về câu lệnh CREATE SCHEMA trong SQL Server

Lệnh

CREATE TABLE customer_services.jobs(
    job_id INT PRIMARY KEY IDENTITY,
    customer_id INT NOT NULL,
    description VARCHAR(200),
    created_at DATETIME2 NOT NULL
);
5 cho phép bạn tạo một lược đồ mới trong cơ sở dữ liệu hiện tại

Phần sau minh họa phiên bản đơn giản hóa của câu lệnh

CREATE TABLE customer_services.jobs(
    job_id INT PRIMARY KEY IDENTITY,
    customer_id INT NOT NULL,
    description VARCHAR(200),
    created_at DATETIME2 NOT NULL
);
5

CREATE SCHEMA schema_name
    [AUTHORIZATION owner_name]

Trong cú pháp này,

  • Đầu tiên, chỉ tên của lược đồ mà bạn muốn tạo trong mệnh đề
    CREATE TABLE customer_services.jobs(
        job_id INT PRIMARY KEY IDENTITY,
        customer_id INT NOT NULL,
        description VARCHAR(200),
        created_at DATETIME2 NOT NULL
    );
    5
  • Tiếp theo, chỉ định chủ sở hữu của lược đồ sau từ khóa
    CREATE TABLE customer_services.jobs(
        job_id INT PRIMARY KEY IDENTITY,
        customer_id INT NOT NULL,
        description VARCHAR(200),
        created_at DATETIME2 NOT NULL
    );
    8

Ví dụ về câu lệnh CREATE SCHEMA trong SQL Server

Ví dụ sau để thấy cách sử dụng câu lệnh

CREATE TABLE customer_services.jobs(
    job_id INT PRIMARY KEY IDENTITY,
    customer_id INT NOT NULL,
    description VARCHAR(200),
    created_at DATETIME2 NOT NULL
);
5 để lập lược đồ
ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
0

CREATE SCHEMA customer_services;
GO
Lưu ý rằng lệnh
ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
1 hướng dẫn SQL Server Management Studio gửi câu lệnh SQL ở phía trên lệnh
ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
1 tới máy chủ để thực thi

Sau khi thực hiện câu lệnh, bạn có thể tìm thấy lược đồ mới được tạo trong Bảo mật > Lược đồ như hình dưới đây

Bảng lược đồ mysql

Nếu bạn muốn liệt kê tất cả các lược đồ trong cơ sở dữ liệu hiện tại, bạn có thể truy vấn các lược đồ từ

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
3 như được minh họa trong truy vấn sau

SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;

This is results

Bảng lược đồ mysql

Sau khi có lược đồ

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
0, bạn có thể tạo các đối tượng cho lược đồ. Ví dụ. câu lệnh sau khi tạo một bảng mới có tên
ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
5 trong lược đồ
ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
0

CREATE TABLE customer_services.jobs(
    job_id INT PRIMARY KEY IDENTITY,
    customer_id INT NOT NULL,
    description VARCHAR(200),
    created_at DATETIME2 NOT NULL
);

Chỉnh sửa lược đồ bằng câu lệnh ALTER SCHEMA trong SQL Server

Tổng quan về câu lệnh ALTER SCHEMA trong SQL Server

Lệnh

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
7 cho phép bạn chuyển các bảo mật từ một lược đồ sang một lược đồ khác trong cùng một cơ sở dữ liệu

Lưu ý rằng. an toàn là tài nguyên mà hệ thống ủy quyền của Database Engine kiểm tra giám sát quyền truy cập. Ví dụ, một bảng là an toàn

Sau đây là cú pháp của câu lệnh

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
7

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;

In this cú pháp

  • ALTER SCHEMA target_schema_name   
        TRANSFER [ entity_type :: ] securable_name;
    9 là tên của một lược đồ trong cơ sở dữ liệu hiện tại mà bạn muốn chuyển các đối tượng vào đó. Lưu ý rằng nó không thể là
    CREATE TABLE dbo.offices
    (
        office_id      INT
        PRIMARY KEY IDENTITY, 
        office_name    NVARCHAR(40) NOT NULL, 
        office_address NVARCHAR(255) NOT NULL, 
        phone          VARCHAR(20),
    );
    0 hoặc
    SELECT 
        s.name AS schema_name, 
        u.name AS schema_owner
    FROM 
        sys.schemas s
    INNER JOIN sys.sysusers u ON u.uid = s.principal_id
    ORDER BY 
        s.name;
    8
  • CREATE TABLE dbo.offices
    (
        office_id      INT
        PRIMARY KEY IDENTITY, 
        office_name    NVARCHAR(40) NOT NULL, 
        office_address NVARCHAR(255) NOT NULL, 
        phone          VARCHAR(20),
    );
    2 could be Object, Type or Tập hợp lược đồ XML. It default is Object.
    CREATE TABLE dbo.offices
    (
        office_id      INT
        PRIMARY KEY IDENTITY, 
        office_name    NVARCHAR(40) NOT NULL, 
        office_address NVARCHAR(255) NOT NULL, 
        phone          VARCHAR(20),
    );
    2 đại diện cho lớp của thực thể mà chủ sở hữu đang được thay đổi
  • CREATE TABLE dbo.offices
    (
        office_id      INT
        PRIMARY KEY IDENTITY, 
        office_name    NVARCHAR(40) NOT NULL, 
        office_address NVARCHAR(255) NOT NULL, 
        phone          VARCHAR(20),
    );
    4 là tên của bảo mật mà bạn muốn chuyển vào
    ALTER SCHEMA target_schema_name   
        TRANSFER [ entity_type :: ] securable_name;
    9

Nếu bạn chuyển một thủ tục, chức năng, dạng xem hoặc trình kích hoạt được lưu trữ, SQL Server sẽ không thay đổi tên lược đồ của các bảo mật này. Do đó, bạn nên xóa và tạo lại các đối tượng này trong Lược đồ mới thay vì sử dụng câu lệnh

ALTER SCHEMA target_schema_name   
    TRANSFER [ entity_type :: ] securable_name;
7 để di chuyển

If you di chuyển một đối tượng, ví dụ. bảng hoặc từ đồng nghĩa, SQL Server sẽ không tự động cập nhật các tham chiếu cho các đối tượng này. Bạn phải sửa đổi công cụ tham chiếu để phản ánh tên lược đồ mới. Ví dụ. Nếu bạn chuyển một bảng được tham chiếu trong một thủ tục được lưu trữ, bạn phải sửa đổi thủ tục được lưu trữ để phản ánh tên lược đồ mới

Ví dụ về câu lệnh ALTER SCHEMA trong SQL Server

Đầu tiên, hãy tạo một bảng mới có tên

CREATE TABLE dbo.offices
(
    office_id      INT
    PRIMARY KEY IDENTITY, 
    office_name    NVARCHAR(40) NOT NULL, 
    office_address NVARCHAR(255) NOT NULL, 
    phone          VARCHAR(20),
);
7 trong Lược đồ
SELECT 
    s.name AS schema_name, 
    u.name AS schema_owner
FROM 
    sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY 
    s.name;
5

CREATE TABLE dbo.offices
(
    office_id      INT
    PRIMARY KEY IDENTITY, 
    office_name    NVARCHAR(40) NOT NULL, 
    office_address NVARCHAR(255) NOT NULL, 
    phone          VARCHAR(20),
);

Tiếp theo, chèn một số hàng vào bảng

CREATE TABLE dbo.offices
(
    office_id      INT
    PRIMARY KEY IDENTITY, 
    office_name    NVARCHAR(40) NOT NULL, 
    office_address NVARCHAR(255) NOT NULL, 
    phone          VARCHAR(20),
);
9

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');

Sau đó, tạo thủ tục lưu sẵn để tìm văn phòng theo id văn phòng

CREATE PROC usp_get_office_by_id(
    @id INT
) AS
BEGIN
    SELECT 
        * 
    FROM 
        dbo.offices
    WHERE 
        office_id = @id;
END;

Cuối cùng, chuyển bảng

CREATE TABLE dbo.offices
(
    office_id      INT
    PRIMARY KEY IDENTITY, 
    office_name    NVARCHAR(40) NOT NULL, 
    office_address NVARCHAR(255) NOT NULL, 
    phone          VARCHAR(20),
);
9 this sang Lược đồ
CREATE SCHEMA customer_services;
GO
9

ALTER SCHEMA sales TRANSFER OBJECT::dbo.offices;  

Nếu bạn thực hiện thủ tục lưu trữ này

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
2, SQL Server sẽ xuất hiện lỗi

Msg 208, Level 16, State 1, Procedure usp_get_office_by_id, Line 5 [Batch Start Line 30]
Invalid object name 'dbo.offices'.

Để khắc phục sự cố này, hãy sửa đổi quy trình đã lưu trữ bằng cách sử dụng lược đồ mới

CREATE SCHEMA customer_services;
GO
0

Xóa lược đồ bằng câu lệnh DROP SCHEMA trong SQL Server

Tổng quan về câu lệnh DROP SCHEMA trong SQL Server

Lệnh

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
3 cho phép bạn xóa lược đồ khỏi cơ sở dữ liệu. Sau đây là cú pháp của câu lệnh
INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
3

CREATE SCHEMA customer_services;
GO
1

In this cú pháp

  • Đầu tiên, chỉ tên của lược đồ mà bạn muốn xóa. Nếu lược đồ chứa bất kỳ đối tượng nào, câu lệnh sẽ không thành công. Do đó, bạn phải xóa tất cả các đối tượng trong lược đồ trước khi xóa lược đồ
  • Tiếp theo, sử dụng tùy chọn
    INSERT INTO dbo.offices(office_name, office_address)
    VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
        ('Sacramento','1070 River Dr., Sacramento, CA 95820');
    5 để xóa lược đồ chỉ khi lược đồ tồn tại. Cố gắng xóa lược đồ không tồn tại mà không có tùy chọn
    INSERT INTO dbo.offices(office_name, office_address)
    VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
        ('Sacramento','1070 River Dr., Sacramento, CA 95820');
    5 sẽ dẫn đến lỗi

Ví dụ về câu lệnh DROP SCHEMA trong SQL Server

Đầu tiên, hãy tạo một lược đồ mới có tên là

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
7

CREATE SCHEMA customer_services;
GO
2

Tiếp theo, tạo một bảng mới có tên

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
8 bên trong lược đồ
INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
7

CREATE SCHEMA customer_services;
GO
3

Sau đó, xóa lược đồ

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
7

CREATE SCHEMA customer_services;
GO
4

SQL Server sẽ thông báo lỗi sau vì lược đồ không trống

CREATE SCHEMA customer_services;
GO
5

Để xóa lược đồ này, trước tiên bạn phải xóa bảng

CREATE PROC usp_get_office_by_id(
    @id INT
) AS
BEGIN
    SELECT 
        * 
    FROM 
        dbo.offices
    WHERE 
        office_id = @id;
END;
1 bằng lệnh sau

CREATE SCHEMA customer_services;
GO
6

Cuối cùng, sử dụng lệnh

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
3 một lần nữa để xóa lược đồ
INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
7

CREATE SCHEMA customer_services;
GO
7

Bây giờ, bạn sẽ thấy rằng lược đồ

INSERT INTO dbo.offices(office_name, office_address)
VALUES ('Silicon Valley','400 North 1st Street, San Jose, CA 95130'),
    ('Sacramento','1070 River Dr., Sacramento, CA 95820');
7 đã bị xóa khỏi cơ sở dữ liệu

Trong hướng dẫn này, bạn đã học cách tạo, chỉnh sửa và xóa lược đồ (lược đồ) trong cơ sở dữ liệu SQL Server