有三個表:學生表、課程表和學生選課表,它們的結構如下:學生表(
1、select 姓名 from 學生表 where 系別 = '計算機系';2、select 學號 from 學生選課表 where 成績 3、select 學號,成績 from 學生選課表 where 課程號=1;4、select 學生表.姓名,學生選課表.課程號,學生選課表.成績 from 學生表,學生選課表 where 學生表.學號 = 學生選課表.學號;5、select 姓名,年齡,性別 from 學生表 where 年齡 > (select 年齡 from 學生表 where name = '李明');。
sql語句面試題
a)selectpnameas'商品名',avg(qty)as平均銷售量froms,p,*='上海'*=*=*,*,*,sum(*)*=*=*='上海市'*,*,*,*)、先刪除Sale表的外鍵PNO,再刪除gds表。
c)聯系:視圖(view)是在基本表之上建立的表,它的結構(即所定義的列)和內容(即所有數據行)都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。
視圖是基本表的抽象和在邏輯意義上建立的新關系區別:1、視圖是已經編譯好的sql語句。而表不是2、視圖沒有實際的物理記錄。
而表有。3、表是內容,視圖是窗口4、表只用物理空間而視圖不占用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進行修改,但視圖只能有創建的語句來修改5、表是內模式,視圖是外模式6、視圖是查看數據表的一種方法,可以查詢數據表中某些字段構成的數據,只是一些SQL語句的集合。
從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。7、表屬于全局模式中的表,是實表;視圖屬于局部模式的表,是虛表。
8、視圖的建立和刪除只影響視圖本身,不影響對應的基本表。
面試題目(sql)
我使用的是MySQL 如下語句:
建表語句:
create table Lessoninfo(
no int,
week int,
isonduty char);
插入數據:略
insert into Lessoninfo values(。。。。。)
SQL查詢語句:
select no as '教師號', sum(week=1) as '星期一',sum(week=2) as '星期二',sum(week=3) as '星期三' from Lessoninfo group by no;
/***********************附結果******************
mysql>select no as '教師號', sum(week=1) as '星期一',sum(week=2) as '星期二',su
m(week=3) as '星期三' from Lessoninfo group by no;
+--------+--------+--------+--------+
| 教師號 | 星期一 | 星期二 | 星期三 |
+--------+--------+--------+--------+
| 1 | 0 | 2 | 1 |
| 2 | 1 | 0 | 0 |
| 3 | 0 | 1 | 0 |
+--------+--------+--------+--------+
3 rows in set (0.02 sec)
SQL語句面試題
恩,通過自定義函數吧。。 實現如下:
----創建自定義函數
create function F_Getvarchar(@a1 int)
returns varchar(8000)
as
Begin
declare @a2 varchar(100),@Newvarhar varchar(8000)
set @Newvarhar=''
declare cur_getvarchar cursor for
select a2 from a where a1=@a1 order by a2
Open cur_getvarchar
fetch next from cur_getvarchar into @a2
while @@fetch_status=0
Begin
set @Newvarhar=@Newvarhar+@a2
fetch next from cur_getvarchar into @a2
End
close cur_getvarchar deallocate cur_getvarchar
return @Newvarhar
End
--執行
select distinct a1,dbo.F_Getvarchar(a1) from a
sql-- 面試題目
select a.教師號,
*(*) 星期一,b.星期二,c.星期三 from tab a group by 教師號 where 星期號=1 and 是否有課='有'
inner join
(select 教師號,count(*) 星期二 from tab a group by 教師號 where 星期號=2 and 是否有課='有') b
on b.教師號=a.教師號
inner join
(select 教師號,count(*) 星期三 from tab a group by 教師號 where 星期號=3 and 是否有課='有') b
on c.教師號=a.教師號