當前位置:首頁 » 編程語言 » sql創建表和創建臨時表語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql創建表和創建臨時表語句

發布時間: 2023-08-30 17:12:23

Ⅰ oracle資料庫建立臨時表,sql語句

create table 臨時表名 as
select *
from 原始表
where 月份 = 需要的月份

Ⅱ sql語句創建表

創建新表的程序功能為:

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

具體為:

創建之前判斷該資料庫是否存在

if exists (select * from sysdatabases where name='databaseName')

drop database databaseName

go

Create DATABASE databasename

on primary-- 默認就屬於primary文件組,可省略

/*--數據文件的具體描述--*/

name=『databasename_data』,-- 主數據文件的邏輯名稱

filename=『'所存位置:databasename_data.mdf』, -- 主數據文件的物理名稱

size=數值mb, --主數據文件的初始大小

maxsize=數值mb, -- 主數據文件增長的最大值

filegrowth=數值%--主數據文件的增長率

log on

/*--日誌文件的具體描述,各參數含義同上--*/

name='databasename_log', -- 日誌文件的邏輯名稱

filename='所存目錄:databasename_log.ldf', -- 日誌文件的物理名稱

size=數值mb, --日誌文件的初始大小

filegrowth=數值%--日誌文件的增長值

結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;

sql 語句就是對資料庫進行操作的一種語言。

(2)sql創建表和創建臨時表語句擴展閱讀

1、常見語句

更新:update table1 set field1=value1 where 范圍

查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)

排序:select * from table1 order by field1,field2 [desc]

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1[separator]

2、高級查詢

A:UNION運算符

UNION 運算符通過組合其他兩個結果表(例如TABLE1 和TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨UNION 一起使用時(即UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自TABLE1 就是來自TABLE2。

B: EXCEPT運算符

EXCEPT 運算符通過包括所有在TABLE1 中但不在TABLE2 中的行並消除所有重復行而派生出一個結果表。當ALL 隨EXCEPT 一起使用時(EXCEPT ALL),不消除重復行。

C:INTERSECT運算符

INTERSECT 運算符通過只包括TABLE1 和TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當ALL 隨INTERSECT 一起使用時(INTERSECT ALL),不消除重復行。

註:使用運算詞的幾個查詢結果行必須是一致的。

Ⅲ 在SQL Server中如何用SQL語句建立一張臨時表

create table #臨時表名(剩下的和建立普通表是一樣的)

select 欄位s.. into #臨時表名 from ...

Ⅳ 如何實現SQL Server臨時表的創建

創建
臨時表
方法一:
create
table
#臨時表名(欄位1
約束條件,
欄位2
約束條件,
.....)
create
table
##臨時表名(欄位1
約束條件,
欄位2
約束條件,
.....)
方法二:
select
*
into
#臨時表名
from
你的表;
select
*
into
##臨時表名
from
你的表;
註:以上的#代表局部臨時表,##代表全局臨時表
查詢臨時表
select
*
from
#臨時表名;
select
*
from
##臨時表名;
刪除臨時表
drop
table
#臨時表名;
drop
table
##臨時表名;

Ⅳ SQL 創建一個臨時表#tabletemp 裡面有兩個欄位「cn」和「dt」分別用來存儲另一個表的欄位名和數據類型。

提到MySQL臨時表,我們都很熟悉了,一般來說,分為兩類:

1. MySQL 臨時表引擎,名字叫做 Memory。比如

create table tmp1(id int, str1 varchar(100) ) engine = memory;

由參數max_heap_table_size 來控制,超過報錯。

2. 非臨時表的引擎,這里又分為兩類:

  • 用戶自定義的臨時表,比如:

  • create temporary table (id int, str1 varchar(100) );

  • SQL執行過程中產生的內部臨時表,比如:UNION , 聚合類ORDER BY,派生表,大對象欄位的查詢,子查詢或者半連接的固化等等場景。

  • 那麼這兩種臨時表的計數器通常用show global status like '%tmp_%tables%' 來查看。比如

  • mysql> show status like '%tmp_%tables%';``+-------------------------+-------+``| Variable_name | Value |``+-------------------------+-------+``| Created_tmp_disk_tables | 0 |``| Created_tmp_tables | 0 |``+-------------------------+-------+``2 rows in set (0.00 sec)

  • 以上結果分別代表,只創建磁碟上的臨時表計數以及臨時表的總計數。這兩個計數器由參數 tmp_table_size 和 max_heap_table_size 兩個取最小值來控制。

    那在 MySQL 5.7 之前,這個 SQL 運行中產生的臨時表是 MYISAM,而且只能是 MYISAM。那 MySQL 從 5.7 開始提供了參數 Internal_tmp_mem_storage_engine 來定義內部的臨時表引擎,可選值為 MYISAM 和 INNODB 。當然這里我們選擇 INNODB 。並且把內部的臨時表默認保存在臨時表空間 ibtmp1 (可以用參數 innodb_temp_data_file_path 設置大小以及步長等)下。當然這里我們得控制下 ibtmp1 的大小,要不然一個爛SQL就把磁碟整爆了。

    但是MySQL 5.7 之前都沒有解決如下問題:

  • VARCHAR的變長存儲。那就是如果臨時表的欄位定義是 VARCHAR(200),那麼映射到內存里處理的欄位變為CHAR(200)。假設 VARCHAR(200) 就存里一個字元 "Y", 那豈不是很大的浪費。

  • 大對象的默認磁碟存儲,比如 TEXT,BLOB, JSON等,不管裡面存放了啥,直接轉化為磁碟存儲。

  • MySQL 8.0 開始,專門實現了一個臨時表的引擎 TempTable , 解決了 VARCHAR欄位的邊長存儲以及大對象的內存存儲。由變數 interal_tmp_mem_storage_engine來控制,可選值為 TempTable(默認)和 Memory;新引擎的大小由參數temp_table_max_ram 來控制,默認為1G。超過了則存儲在磁碟上(ibtmp1)。並且計數器由性能字典的表 memory_summary_global_by_event_name 來存儲。

  • mysql> SELECT * FROM performance_schema. memory_summary_global_by_event_name WHERE event_name like '%temptable%'G*************************** 1. row *************************** EVENT_NAME: **memory/temptable/physical_disk** COUNT_ALLOC: 0 COUNT_FREE: 0 SUM_NUMBER_OF_BYTES_ALLOC: 0 SUM_NUMBER_OF_BYTES_FREE: 0 LOW_COUNT_USED: 0 CURRENT_COUNT_USED: 0 HIGH_COUNT_USED: 0 LOW_NUMBER_OF_BYTES_USED: 0CURRENT_NUMBER_OF_BYTES_USED: 0 HIGH_NUMBER_OF_BYTES_USED: 0*************************** 2. row *************************** EVENT_NAME: **memory/temptable/physical_ram** COUNT_ALLOC: 1 COUNT_FREE: 0 SUM_NUMBER_OF_BYTES_ALLOC: 1048576 SUM_NUMBER_OF_BYTES_FREE: 0 LOW_COUNT_USED: 0 CURRENT_COUNT_USED: 1 HIGH_COUNT_USED: 1 LOW_NUMBER_OF_BYTES_USED: 0CURRENT_NUMBER_OF_BYTES_USED: 1048576 HIGH_NUMBER_OF_BYTES_USED: 10485762 rows in set (0.03 sec)

  • 以上 memory/temptable/physical_disk 代表放入磁碟上的臨時表計數情況。

    memory/temptable/physical_ram 代表放入內存的臨時表計數情況。

    那總結下MySQL 8.0 引入的 TempTable 引擎:

  • 默認內部臨時表引擎。

  • 支持變長字元類型的實際存儲。

  • 設置變數 temp_table_max_ram 來控制實際存儲內存區域大小。

Ⅵ 怎麼在SQL-Front中創建資料庫創建表

:在sql語句中,臨時表有兩類,分別是局部(local)和全局(global)臨時表,局部臨時表只在其會話(事務)中可見,全局臨時表可以被會話(事務)中的任何程序或者
模塊訪問

2:創建局部臨時表

use db_sqlserver
go
create table #db_local_table
(
id int,
name varchar(50),
age int,
area int
)
創建的臨時表不能與其他會話共享,當會話結束時,行和表的定義都將被刪除

3:創建全局臨時表
use db_sqlserver
go
create table ##db_local_table
(
id int,
name varchar(50),
age int,
area int
)
全局臨時表對所有用戶都是可見的,在每個訪問該表的用戶都斷開伺服器連接時,全局臨時表才會被刪除

4:創建主鍵、外鍵關聯的資料庫表
use db_sqlserver;
go
create table db_table5
(
職工編號 int primary key,
職工號 varchar(50) unique,
倉庫號 varchar(50),
工資 int
)

go
create table db_table6
(
訂單編號 int primary key,
訂單號 varchar(50) unique,
職工號 varchar(50) references db_table5(職工號),
訂購日期 datetime,
銷售金額 int
)

5:創建具有check約束欄位的資料庫表
use db_sqlserver;
go
create table db_table7
(
倉庫編號 int primary key,
職工號 varchar(50) unique,
倉庫號 varchar(50),
工資 int,
面積 int check(面積>=600 and 面積<=1800)
)

6:創建含有計算欄位的資料庫表

use db_sqlserver;
go
create table db_table8
(
職工編號 int primary key,
職工號 varchar(50) unique,
倉庫號 varchar(50),
基本工資 int check(基本工資>=800 and 基本工資<=2100),
加班工資 int,
獎金 int,
扣率 int,
應發工資 as (基本工資 + 加班工資 + 獎金 - 扣率)
)

7:創建含有自動編號欄位的資料庫表

use db_sqlserver;
go
create table db_table9
(
倉庫編號 int identity(1,1) primary key,
倉庫號 varchar(50) unique,
城市 varchar(50) default('青島'),
面積 int check(面積>=300 and 面積<=1800)
)

向表中添加記錄:
insert into [db_sqlserver].[dbo].[db_table9](倉庫號, 面積) values('400', 1600);
倉庫編號會自動增加

8:創建含有排序欄位的數據表
create table db_table10
(
倉庫編號 int identity(1, 1) primary key,
倉庫號 varchar(50) collate french_CI_AI not null,
城市 varchar(50) default '青島',
面積 int check(面積>=300 and 面積<=1800)
)

倉庫號是一個排序欄位,其中CI(case insensitive)表示不區分大小寫,AI(accent insensitive)表示不區分重音,即創建的是一個不區分大小寫
和不區分重音的排序。如果要區分大小和和區分排序,修改代碼為:French_CS_AS

9:動態判斷資料庫表是否存在
use db_sqlserver;
go
if(Exists(select * from sys.sysobjects where id=OBJECT_ID('db_table9')))
print '資料庫表名已經存在'

else
print '該資料庫表名不存在,可以利用該名創建表'

10:查看錶的各種信息,可以查看指定資料庫表的屬性、表中欄位屬性、各種約束等信息

use db_sqlserver;
go
execute sp_help db_table9;

11:用select語句查看資料庫表的屬性信息
use db_sqlserver;
go
select * from sysobjects where type='U'

12:重命名資料庫表
use db_sqlserver;
go
execute sp_rename "db_table9", "db_renametable"

13:增加資料庫表的新欄位

use db_sqlserver;
go
alter table db_table1 add 電子郵件 varchar(50)
alter table db_table1 add 聯系方式 varchar(50) default '0532-88886396'

select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id('db_table1')14:修改資料庫表的欄位
use db_sqlserver;
go
alter table db_table1 alter column 電子郵件 varchar(200)
select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id('db_table1'

15:刪除資料庫表欄位
use db_sqlserver;
go
alter table db_table1 drop column 電子郵件
select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id('db_table1')
16:刪除資料庫表
use db_sqlserver;
go
drop table db_table1
drop table db_table1, db_table2
如果刪除有依賴關聯的資料庫表,即主鍵、外鍵關鍵表、則要刪除兩個表之間的關聯約束,然後才能刪除表。注意,也可以先刪除引用該表的資料庫表,然後
即可刪除該表,