Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте временна таблица в SQL Server

В SQL Server временните таблици се създават с помощта на същия CREATE TABLE синтаксис като обикновени таблици. Разликата е, че имената на временните таблици са с префикс с един или два знака за числа (# ), в зависимост от това дали е локална временна таблица или глобална временна таблица:

  • Локални временни таблици са с префикс с едно число (# )
  • Глобални временни таблици са с префикс с двоен знак за число (## )

Пример 1 – Създайте локална временна таблица

Ето пример за създаване на локална временна таблица:

CREATE TABLE #Cats (
    CatId int PRIMARY KEY,
    CatName varchar(70)
);

Името, което посочвате за локална временна таблица, може да бъде максимум 116 знака. Други типове таблици могат да бъдат 128 знака, но локалните временни таблици автоматично се добавят с генериран от системата цифров суфикс.

Пример 2 – Създайте глобална временна таблица

Ето пример за създаване на глобална временна таблица:

CREATE TABLE ##Cats (
    CatId int PRIMARY KEY,
    CatName varchar(70)
);

Глобалните имена на временни таблици могат да бъдат максимум 128 знака. SQL Server не добавя генериран от системата цифров суфикс към глобалните временни таблици, както прави за локалните временни таблици, така че можете да използвате цялото пространство.

Пример 3 – Преглед на временните таблици

Мога да изпълня следната заявка, за да видя новосъздадените си временни таблици.

SELECT name
FROM tempdb.sys.tables
WHERE name LIKE '#Cats%'
OR name = '##Cats';

Резултат:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
+----------------------------------------------------------------------------------------------------------------------------------+

Можем да видим, че към локалната временна таблица е добавен генерираният от системата числов суфикс и ето защо моята заявка използва LIKE оператор за тази таблица.

Пример 4 – Нова сесия

Ако отворя нова сесия, създам локална временна таблица със същото име (Cats), след което стартирам тази заявка отново, получавам това:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
| #Cats_______________________________________________________________________________________________________________000000000019 |
+----------------------------------------------------------------------------------------------------------------------------------+

Така че множество сесии могат да създадат локална таблица със същото име, тъй като SQL Server променя това име, като увеличава наставката.

Пример 5 – Същата сесия

Въпреки това, ако се опитам да създам локалната временна таблица отново в същата сесия, получавам това:

Msg 2714, Level 16, State 6, Line 1
There is already an object named '#Cats' in the database.

И ако отворя още една сесия, съм успешен и когато задам tempdb.sys.tables Разбрах това:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
| #Cats_______________________________________________________________________________________________________________000000000019 |
| #Cats_______________________________________________________________________________________________________________00000000001B |
+----------------------------------------------------------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортиране/експортиране на база данни със SQL Server Management Studio

  2. Нива на изолация на SQL сървър:серия A

  3. 3 начина да получите първия ден от месеца в SQL Server

  4. Проверете дали дадена таблица се препраща от външен ключ в SQL Server с OBJECTPROPERTY()

  5. SQL Server 2008 празен низ срещу пространство