数据结构与数据库实验(数据库部分)
DB5
- 安装好SQL Server和SSMS后打开SSMS并连接SQL Server服务器:
- 创建数据库
配置如下:
- 删除数据库
右键数据库点击删除:
删除数据库成功
DB6
- 新建查询
- SQL语句创建数据库
创建userdb1数据库:
1 | create database userdb1on(name='userdb4_data',/*数据文件的逻辑名称,注意不能与日志逻辑同名*/filename='f:\sql_data\userdb4.mdf' ,/*物理名称,注意路径必须存在*/size=5,/*数据初始长度为M*/maxsize=10,/*最大长度为M*/filegrowth=1)/*数据文件每次增长M*/log on(name=userdb4_log,filename='f:\sql_data\userdb4.ldf ',size=2 ,maxsize=5 ,filegrowth=1)go |
执行结果:
userdb1创建成功!
创建University数据库:
1 | create database Universityon(name='university_data',/*数据文件的逻辑名称,注意不能与日志逻辑同名*/filename='f:\sql_data\university_data.mdf' ,/*物理名称,注意路径必须存在*/size=10,/*数据初始长度为M*/maxsize=200,/*最大长度为M*/filegrowth=5%/*数据文件每次增长M*/)log on(name='university_log',filename='f:\sql_data\university_log.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1mb)go |
执行结果:
University数据库创建成功!
- SQL语句删除数据库
1 | drop database userdb1 |
执行(F5)
数据库删除成功!
DB7
- 列出所有employee的员工ID和Name
1 | --下面的 SQL 语句从 "employee" 表中读取 "emp_id" 和 "fname" 列: |
从 “employee” 表中读取 “emp_id” 和 “fname” 列
读取employee表中所有的列:
- 求job_desc为“Publisher”的员工的ID、Name和hire_date
1 | select emp_id,fname,hire_date,job_desc from employee,jobswhere employee.job_id = jobs.job_id and jobs.job_desc = 'Publisher'; |
- 求所有员工的ID和Name,按照hire_date的时间从早到晚排序
1 | select emp_id,fname,hire_date from employeeorder by hire_date; |
order by 默认ASC关键字升序,可以加DESC降序。
- 计算titles表中type为“business”的所有图书总价格
1 | select sum(price) as price_sum from titleswhere type = 'business'; |
- 返回royaltyper为0-60之间的Author Name、address等信息。
1 | select au_fname,address,city,phone,state,royaltyper from authors,titleauthorwhere authors.au_id = titleauthor.au_id and titleauthor.royaltyper between 0 and 60order by royaltyper; |
DB8
- 在pubs数据库中以authors表为基础,建立一个名为CA_author的视图,使用该视图时,将显示所有state为CA的作者的基本信息。
企业管理器创建视图如下:
1 | SELECT au_id, au_lname, au_fname, phone, address, city, state, zip, contractFROM dbo.authorsWHERE (state = 'CA') |
使用视图:
1 | select * from CA_author; |
- a)在查询分析器中利用author表建立一个每个作者的ID,lname,fname,phone,address的视图S_author。
1 | create view S_authoras select au_id,au_lname,au_fname,phone,address from authorsgo select * from S_author; |
查询结果:
b) 建立一个employee_date视图,利用employee表中信息,显示1991年1月1日之后雇佣的雇员的id,name,minit,job_id。
1 | create view employee_dateas select emp_id,lname,fname,minit,job_id,hire_date from employee where hire_date > '1991-1-1 00:00:00';go select * from employee_date order by hire_date; |
查询结果:
- 删除视图当前存在视图如下:
a) 使用企业管理器删除S_author视图
S_author视图已删除。
b) 使用SQL语句删除CA_author、employee_date视图
1 | drop view if existsCA_author,employee_date; |
运行结果:
CA_author和employee_date已删除!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wen's Blog!