91嫩草国产线免费观看_欧美日韩中文字幕在线观看_精品精品国产高清a毛片_六月婷婷网 - 一级一级特黄女人精品毛片

求一個 MySQL的存儲過程,給一個數據庫里面所有的表都追加一個字段(表名沒有規律)

首頁 > 知識產權2022-08-22 08:58:47

SQL中給數據庫所有符合條件的表添加一個字段

SQL中給數據庫Aexis 名 .所有符合條件的表添加一個字段rn比如有表名 Acp,Bcp ,Dcp...... , 其中有相同的cp 字樣的表名 。統一加一個字段CC , 這個要發何加呢

可用存儲過程來添加。

如為test開頭的表添加一個字段,類型及長度為varchar(10)

代碼如下:

declare @tablename varchar(200)
declare @s varchar(2000)
declare @col varchar(10)
declare c cursor for
select name from dbo.sysobjects where xtype= 'U ' and status> =0 and name like 'test%'
set @col='name1'
open c
fetch next from c into @tablename
while @@FETCH_STATUS = 0
begin
   set @s='alter table ' + @tablename + ' add ' + @col + ' varchar(10)'
   exec (@s)
   fetch next from c into @tablename
end
close c
deallocate c

執行成功后會有成功提示,如圖:

1、什么數據庫
2、肯定是要存儲過程來加,你這個CC字段是什么類型,多大長度?
說明白了才好給你寫

Oracle如何在將一個數據庫中的所有表都加上某些字段。

1.如何查出數據庫中所有表中不包含MODIFIER字段的表,rn select distinctrn TABLE_NAME from user_tab_columns arn where a.COLUMN_NAME <> x27MODIFIERx27 得到的值為什么不正確。 rnrn2.我如何將得到的一組表同時加上MODIFIER NVARCHAR2(120)字段,即用得到的表結果集來替換下列語句中的表名。rndeclarernvstr_sql varchar2(2000):=x27alter table 表名 add MODIFIER NVARCHAR2(120) not null)x27;rnbeginrnexecute immediate vstr_sql;rnend;rn希望各位指教,3Q.

需要用存儲過程解決。

如數據庫中存在兩張表,要給兩張表都增加兩個同樣名稱同樣屬性的字段,需要用以下代碼:

1、創建測試用表test和test1

create table test
(id int,
name varchar2(10));

create table test1
(id int,
name varchar2(10));

2、要為兩個表同時增加id1和name1字段。使用代碼:

declare 
v_sql varchar2(2000);
v_table_name varchar2(30);
cursor c1 is select table_name from user_tables;
begin
open c1;
loop --提取一行數據到c1
fetch c1 into v_table_name;
--判讀是否提取到值,沒取到值就退出
--取到值c_job%notfound 是false 
--取不到值c_job%notfound 是true
exit when c1%notfound;
v_sql:='alter table '||v_table_name||' add id1 int';
execute immediate v_sql;
v_sql:='alter table '||v_table_name||' add name1 varchar2(10)';
execute immediate v_sql;
end loop;--關閉游標
close c1;
end;

如圖:

3、執行代碼,成功無誤后,查詢test表和test1表結構:

你的思路有點不準確,使用下面的語句就沒有問題了
select distinct a.TABLE_NAME from user_tab_columns a where a.TABLE_NAME not in (SELECT b.TABLE_NAME from user_tab_columns b where b.COLUMN_NAME=‘MODIFIER’);
仔細想想你就明白為什么你寫的不對了,希望能夠解答你的疑惑。

提示:你并沒有把包含指定列的表的情況除去
declare
vstr_sql varchar2(2000);
cursor c1 is select distinct a.TABLE_NAME TABLE_NAME from user_tab_columns a
where a.TABLE_NAME not in (SELECT b.TABLE_NAME from user_tab_columns b where b.COLUMN_NAME=‘MODIFIER’);
begin
for rec in c1 loop
vstr_sql varchar2(2000):='alter table '||rec.TABLE_NAME||' add MODIFIER NVARCHAR2(120) not null)';
execute immediate vstr_sql;
end loop;
end;

怎么用Sql語句獲取一個數據庫中的所有表的名字

怎么用Sql語句獲取一個數據庫中的所有表的名字

在程序中通過sql語句查詢來獲得某個數據庫的所有表名,代碼如下:

SELECT 

table_name 

FROM

information_schema.tables 

WHERE table_schema = 'mydatabasename' 

AND table_type = 'base table' 

擴展資料

1,利用sys.tables目錄視圖查詢所有表的名字,sys.tables目錄視圖為每個表對象返回一行. 示例語句如下:

select * from sys.tables

注意:sys.tables目錄視圖也只有在SQL SERVER2005及以上的版本中才能使用。

2,利用存儲過程sp_tables sp_tables存儲過程,可返回可在當前環境中查詢的對象列表。這代表可在FROM子句中出現的任何對象。 我們可以執行如下語句:

exec sp_tables

在結果集中篩選出所有TABLE_TYPE等于TABLE的記錄就是表信息了。

參考資料:百度百科 sql語句

百度百科 sys.tables



TABLE 語句

具體語法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其實從語法上看,可以排序,也可以過濾記錄集,不過比較簡單,沒有 SELECT 那么強大。

示例 1

簡單的建一張很小的表 y1,記錄數為 10 條。表 t1,插入 10 條記錄

mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

Query OK, 0 rows affected (0.02 sec)

mysql-(ytt/3305)->insert into t1

with recursive aa(a,b) as (

select 1,1

union all

select a+1,ceil(rand()*20) from aa where a < 10

) select * from aa;

Query OK, 10 rows affected (0.00 sec)

Records: 10  Duplicates: 0  Warnings: 0

簡單全表掃描mysql-(ytt/3305)->select * from t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
TABLE 結果mysql-(ytt/3305)->table t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
看下 table 的執行計劃mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1   partitions: NULL         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 10     filtered: 100.00        Extra: Using filesort1 row in set, 1 warning (0.00 sec)
其實可以看到 TABLE 內部被 MySQL 轉換為 SELECT 了。mysql-(ytt/3305)->show warnings\G*************************** 1. row ***************************  Level: Note   Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)
那其實從上面簡單的例子可以看到 TABLE 在內部被轉成了普通的 SELECT 來處理。示例 2應用于子查詢里的子表。這里要注意,內表的字段數量必須和外表過濾的字段數量一致。克隆表 t1 結構mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)
克隆表 t1 數據mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10  Duplicates: 0  Warnings: 0
table t1 被當做內表,表 t1 有兩個字段,必須同時滿足 t2 檢索時過濾的字段也是兩個。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
注意:這里如果過濾的字段數量和子表數量不一致,則會報錯。

查詢數據庫里所有表名和字段名的語句

1.SQL 查詢所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES

2.查詢表的所有字段名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS

3.ORACLE 查看所有表名:
SELECT TABLE_NAME FROM USER_TABLES

4.ACCESS 查看所有表名:
SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0

5.MSYSOBJECTS 是系統對象,默認情況是隱藏的。通過工具、選項、視圖、顯示、系統對象可以使之顯示出來。

用sql獲取數據庫中所有的表名的方法:
1、oracle下:select table_name from all_tables;
2、MySQL下:select table_name from information_schema.tables where table_schema='csdb' and table_type='base table';
3、sql server下:select name from sys.tables go
正確方法:
show databases;顯示數據庫列表
show tables;顯示當前庫下所有表

相關推薦:

商標糾紛可以申請仲裁嗎(商標使用許可糾紛怎么解決的)

軟件著作權的主體和客體(著作權的主體和客體)

委托作品的著作權人(委托作品著作權歸誰)

冒充專利處罰依據有哪些(申報職稱用假專利 如何處罰)

關于競業禁止的幾個問題(競業限制的法律規定)