A. sql怎麼導出欄位名
用SQL的導入導出功能,導出成EXCEL,在步驟中選擇用一條SQL語句這個選項然後輸入下邊的語句 SELECT SYSCOLUMNS.NAME
FROM SYSCOLUMNS
WHERE SYSCOLUMNS.ID=OBJECT_ID('你的表名') 這樣就可以把表的欄位名導出到EXCEL,就可以自由復制或者直接保存
B. SQL查詢欄位名
獲取資料庫表的欄位清單 [這里是查看 test_table 表的欄位]
SELECT
a.column_id AS No,
a.name AS 列名,
isnull(g.[value],'-') AS 說明
FROM
sys.columns a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE
object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')
No 列名 說明
1 Test_ID 主鍵(自增長)
2 Test_Key 種類
3 Test_Value 數值
4 Test_Type 內部類型
5 Test_BelongTo 從屬關系
6 Test_Grade 等級
7 Test_Remark 備注
8 Test_Visible 是否可見
C. 如何用sql語句返回指定欄位的數據類型
select ColumnName = c.name , ColumnType=T.name
from sys.columns as c
INNER JOIN sys.types T ON C.user_type_id=T.user_type_id
where c.name = '欄位名'
D. db2 資料庫上 我有個sql,比如 select * from test ,但是我不要返回結果集,我要返回所有的欄位名,
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('T_USER')
你是查列的欄位名,又不是查數據明梁鄭,你join 後面的on()是沒東渣納西寫的,一般就union連接兩個查詢語句,查看多個表的字激頌段名
E. 求給力!!SQL獲取欄位名!!高手請賜教!
CREATE TABLE TestABC (
[ID] INT,
[姓名] VARCHAR(10),
[性別] CHAR(2),
[年級] CHAR(4),
[語文] INT,
[數學] INT,
[英語] INT,
[物理] INT,
[化學] INT
);
INSERT INTO TestABC
VALUES(1, '張三', '男', '高一', 80, 90, 90, 95, 90);
-- 這個SQL,是除了 'ID', '姓名', '性別', '年級' 這4列以外,其他都檢索。
DECLARE @sql VARCHAR(200);
BEGIN
SET @sql =
'SELECT ' + STUFF(
(SELECT
',' + col.name
FROM
sys.columns col
WHERE
col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'TestAbc')
AND col.name NOT IN ('ID', '姓名', '性別', '年級')
FOR XML PATH('')), 1 , 1, '') + ' FROM TestAbc';
EXECUTE (@sql);
END
-- 這個SQL,是排除前面4列,從第5列開始全部檢索。
DECLARE @sql VARCHAR(200);
BEGIN
SET @sql =
'SELECT ' + STUFF(
(SELECT
',' + col.name
FROM
sys.columns col
WHERE
col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'TestAbc')
AND col.column_id > 4
FOR XML PATH('')), 1 , 1, '') + ' FROM TestAbc';
EXECUTE (@sql);
END
2個SQL 的結果是一樣的:
語文 數學 英語 物理 化學
----------- ----------- ----------- ----------- -----------
80 90 90 95 90
(1 行受影響)
F. 怎樣用sql語言返回表的所有欄位名
通過系碼好統表查該表的所有遲橋鉛列名,
不需要顯示的就不要,
然後消培生成SQL查詢,
除了不想顯示的都能顯示出來.
G. SQL語句在 select * from tablename 的時候,返回的結果怎麼帶上欄位名,欄位名有一千多,不能一個一個寫
這句語句本來就帶欄位名滲攜的。你要單獨列欄位姿敏出叢冊伏來的話就select 欄位名1,欄位名2,。。。 from tablename
H. SQL語言基礎(4)
內連接
把兩張表相同的地方查詢出來
左連接
包括了內連接,同時還查詢左表特有的內容
右連接
包括了內連接,同時還查詢了右表獨有的內容
語法:select * from 表1 inner join 表2 on 表1.欄位 = 表2.欄位
內連接最重要的是,找出兩張表要關聯的欄位
顯式內連接
查詢a表和b表共有的數據
select * from a inner jion b on a.id = b.id;
查詢students和scores共有的數據
select * from stundets inner join scores on students.studnetNo = scores.studentNo;
語法:select * from 表1,表2 where 兩個表的連接條件
select * from students,scores where students.studentNo = scores.studnetNo;
內連接查詢顯示指定的欄位
students表與scores內連接,只顯示姓名,課程號,成績
select name,courseNo,score from studnets inner join scores students.studentNo = scores.studentNo;
表的別名在查詢中的使用(當使用表別名可以縮短SQL語句)
select name,coursenNo,score from students st inner join scores cson st.studentsNo = sc.studnetNo;
查詢成績表信息,同時顯示成績對應的課程名稱
select * from scores sc inner join course co on sc.courseNo = co.courseNo;
帶有where條件的內連接
語神顫頃法select * from 表1 inner join 表2 on 表1.欄位 = 表2.欄位 where條件
查詢王昭君的信息,要求只顯示游陸姓名、課程號、成績
select name,coursenNo,score from students st inner join scores sc on st.studentNo = sc.studentNo where name = '王昭君'
帶有and邏輯運算符的內連接查詢
查詢姓名為王昭君,並且成績小於90的信洞陵息,要求只顯示姓名、成績
select name,score from students st inner join scores sc on st.studentNo = sc.studentNo where st.name = '王昭君' and sc.score < 90;
查詢學生信息和成績以及成績對應的課程名稱(三張表關聯)
select * from students inner join scores on students.studnetNo = scores.studentNo
inner join courses on scores.courseNo = courses.courseNo;
搭框架
基本的select語句框架搭建起來,如果有多表,把相應的多表也聯合進來
看條件
決定where後面具體的條件
顯示的欄位
select後面到底要顯示什麼欄位
查詢所有學生的linux的課程成績,要求只顯示姓名、成績、課程名
第一步:搭框架
select * from students inner join scores on students.studentNo = scores.studentNo inner join courses on scores.courseNo = courses.courseNo;
第二步:看條件
select * from students inner join scores on students.studentNo = scores.studentNo inner join courses on scores.courseNo = courses.courseNo where coursename = 'linux';
第三步:返回欄位名
select name,score,coursename from students inner join scores on students.studentNo = scores.studentNo inner join courses on scores.courseNo = courses.courseNo where coursename = 'linux';
帶有order by 排序的內連接查詢
查詢成績最高的男生信息,要求顯示姓名、課程名、成績
select name,score,coursename from
students inner join scores on students.studentNo = scores.studentNo
inner join courses on scores.courseNo = courses.courseNo
order by score desc limit 0,1;
語法:select * from 表1 left join 表2 表1.欄位=表2.欄位
查詢所有學生的信息以及成績,包括沒有成績的學生
select * from students inner left join scores on studnets,studentNo = scores.studentNo;
語法:select * from 表1 right join 表2 表1.欄位=表2.欄位
查詢所有的課程信息,包括沒有成績的課程
select * from student right join courses on scores.courseNo = courses.courseNo;
多表聯合查詢,同名欄位的處理方式(如果多表查詢出現重名欄位時,一定要在所查欄位前加上指定的表名)
如果一條select要用到多個表,表中有同名欄位,就需要 表名.欄位名 加以區分
select students.studentNo form students inner join scores on students.studentNo = scores.studentNo;
查詢一共有多少省(因為省的沒有上級,我們用NULL數據填充)
select count(*) from areas where is null;
查詢一共有多少市
select count(*) from areas where is not null;
自關聯是同一張表做連接查詢
自關聯下,一定找到同一張表可關聯的不同欄位
查詢廣東省所有城市 (當要用到自關聯的時候,需要給表起別名)
select count(*) from areas a1 inner join areas a2 on a1.id = a2.pid where a1.name = '廣東';
子查詢是嵌套到主查詢裡面的
子查詢作為主查詢的數據源或者條件
子查詢是獨立可以單獨運行的查詢語句
主查詢不能獨立運行,依賴子查詢的結果
查詢大於平均年齡的學生記錄
用子查詢實現(子查詢就是把一張表的結果作為另外一張表的條件)
select * from studnets where age > (select avg(age) from students);
查詢30歲的學生的成績
1.查詢30歲學生的studentNo
select studentNo from students where age = 30;
select * from scores where studentNo in ('001','003','011');
用子查詢實現
select * from scores where studentNo in (select * from scores where age = 30);
用內連接實現
select * from student st inner join scores sc on st.studentNo = sc.studentNo where sex = '女' ;
用子查詢實現
用子查詢,查詢所有女生的信息和成績 (把表的查詢結果作為另外一個表然後在做內連接)
select * from (select * from students where sex ='女') stu inner join scores sc on stu.studentsNo = sc.studentsNo;
表級子查詢--子查詢返回結果為多行,多列
1.列出男職工的總數和女職工的總數
select sex,count(*) from employess group by sex;
2.列出非黨員職工的總數
select count(*) from employess where politicalstatus ! = '黨員';
3.列出所有職工工號,姓名以及所在部門的名稱
select empid,empname,deptname from departments d inner join employees e on d.deptid = e.deptid;
4.列出所有職工工號,姓名和對應工資
select e.empid ,empname,salary from employees e inner join salary on e.empid = s.empid;
5.列出領導崗的姓名以及所在部門名稱
select empname,deptname from departments d inner join employees e on d.deptid = e.deptid where leader is null;
6.列出職工人數大於4的部門號和總人數
select deptid,count(*) from employees group by deptid having count(*) > 4;
7.列出職工總人數大於4的部門號和部門名稱
select e.deptid ,deptname count(*) from departments d inner join employees e on d.deptid = e.deptid group by e.deptid having count(*) > 4;
8.列出開發部和測試部的職工號,姓名
select empid,empname from departments d inner join employees e on d.deptid = e.deptid where deptname in ('測試部','開發部');
select e.empid,e.empname from (select * from departments where deptname in ('測試部','開發部')) d inner join employees e on d.depid = e.depid;
9.列出市場部所有女職工的姓名和政治面貌
select empname,politicalsta from departments d inner join employees e on d.deptid = e.deptid where deptname ='市場部' and sex ='女';
10.顯示所有職工姓名和工資,包括沒有工資的職工姓名
select empname,salary from employess e left join salary s on e.empid = s.empid;
11.求不姓孫的所有職工工資
select empname,sum(salary) from employees e left join salary s on e.empid = s.empid where empname not like '孫%';
select empname,salary from (select * from employess where not like '孫%') e inner join salary s on e.empid = s.empid;
I. sql 查詢欄位名稱 已知id和欄位值,查詢欄位名稱
用系統表
select [name],[column_id] from sys.columns where [object_id]=object_id('老擾dbo..tablename')
其侍神旦中name是欄位名、column_id是第幾列、tablename是你的瞎液表的名字