運用Sql指令碼編寫資料庫,實現增刪查改功能。

2021-09-24 23:31:38 字數 4653 閱讀 6522

–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...