–1.建立資料庫db_auth
create database db_auth
–2.刪除資料庫db_auth
drop database db_auth
–3.在指定位置建立資料庫db_auth
create database db_auth
on primary(
name='db_auth_data',
filename = 'f:\sql資料庫\資料庫面試題\201717380139張三\db_auth_data.mdf',
size = 5mb, --主資料庫檔案的初始大小
maxsize = 100mb,--主資料庫檔案增長的最大值
filegrowth = 15%--主資料檔案
)
–4.在建立部門表department(編號[主鍵自增],名稱,備註)
use db_auth
gocreate table department(
deparid int primary key identity(1,1)
)
–5.刪除部門表department
drop table department
–6.再次建立部門表department,並設定主鍵自增
use db_auth
create table department(
deparid int primary key identity(1,1),--primary key 主鍵 identity 自增
name nvarchar(50),
remark nvarchar(100)
)
–7.修改表的字段[名稱]為非空
alter table department alter column name nvarchar(50) not null
–8.在部門表插入,系統管理部、人力資源部、物資部、採購部
insert into department
values('系統管理部',''),('人力資源部',''),('物資部',''),('採購部','')
–9.查詢部門表資訊
select * from department
–10.修改人力資源部的備註為:人員招聘,培訓,考核
update department set remark='人員招聘,培訓,考核' where name='人力資源部'
–11.刪除採購部
delete from department where department.name='採購部'
–12.建立員工表employee,新增員工編號,姓名,性別,生日,薪資,備註,所在部門等
create table employee(
empid int primary key identity(1,1),--員工編號
name nvarchar(10) not null,--姓名
*** nvarchar(2) not null,--性別
bir date not null,--生日
wages decimal(10,2) not null,--薪資
remark nvarchar(100),--備註
deparid int references department(deparid)--外來鍵關係
)
–查部門名稱和員工數
select d.name,count(*)
from department d,employee e
where d.deparid=e.deparid
group by d.name
–13.分別查詢部門表和員工表
select d.name,e.name,e.***,e.bir,e.wages from
c department d,employee e where d.deparid=e.deparid
–14.新增員工資訊
insert into employee
values('王系一','男','2000/5/4',5000,null,1)
–15.男員工大於10人的部門
select d.name
from department d,employee e
where d.deparid=e.deparid and
(select count(empid) from employee where ***='男')>10
–16.查詢在30天內過生日的員工
select name as '姓名',(dateadd(year,datediff(year,bir,getdate()),bir))
as '出生年月' from employee
where (dateadd(year,datediff(year,bir,getdate()),bir))
between getdate() and getdate()+30
–17.查詢20歲以下的員工
select * from employee e where year(getdate())-year(e.bir)<20 --方法一
select * from employee where datediff(yy,bir,getdate())<20 --方法二
–18.查詢薪資從高到低排名在10-20之間的員工
select top 20 e.wages from employee e where e.empid not in
(select top 10 d.empid
from
employee d
order by d.wages desc )
order by e.wages desc
–19.建立觸發器,用於驗證新增員工時年齡》18歲
create trigger trigger_name
on employee
for insert
asdeclare @age int
select @age=datediff(year,i.bir,getdate()) from inserted i
if(@age<=18)
begin
raiserror('員工年齡必須大於18歲',16,8)
rollback transaction
end
–20.使用游標遍歷查詢工資的每一行資料,累加到總工資中
declare @sum int=0,@wages int
--宣告游標
declare wagescursor cursor local
for select wages from employee
--開啟游標
open wagescursor
--讀取資料
fetch from wagescursor into @wages
while @@fetch_status=0
begin
set @sum+=@wages
fetch next from wagescursor into @wages
end--關閉游標
close wagescursor
--刪除游標
deallocate wagescursor
--輸出結果
print @sum
go
–21.建立檢視查詢員工資訊及所在部門名稱
go
create view view_emp
asselect d.name '部門名稱',e.name '員工姓名',e.*** '性別',e.wages '工資',e.bir '生日',e.remark '備註' from
employee e inner join department d on e.deparid=d.deparid
--執行
select * from view_emp
–22.建立儲存過程查詢姓名為張三的員工資訊
go
create proc proc_emp
as select * from employee where name='張三'
--執行
exec proc_emp
–23.實現sql分頁格式
select top rows * from 表 where stuid not in( select top((page-1)*rows) stuid from 表 )
rows:行數 page:頁數
資料庫sql指令碼編寫規範
對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null可以在num上設定預...
編寫資料庫指令碼
發表日期 2000 年 1 月 10 日 我在 if it moves,script it 英文 這篇文章中曾談到,如何使用 windows script host wsh windows 指令碼主機 管理 windows 和 windows 中的應用程式。文中的大多數示例都是基於管理 window...
shell指令碼實現對mysql資料庫的增刪改查
bin bash 以下是執行shell指令碼的測試結果 歡迎登陸本系統 1 查詢 2 插入 3 修改 4 刪除 5 退出 請選擇對應功能的標號,例如 1 1查詢結果如下 sid sname sage sgender sclass 1 張武 28 1 一班 2 李四 24 1 二班 3 王五 25 1...