数据库学习笔记Word格式.docx

上传人:b****5 文档编号:18933723 上传时间:2023-01-02 格式:DOCX 页数:25 大小:1.99MB
下载 相关 举报
数据库学习笔记Word格式.docx_第1页
第1页 / 共25页
数据库学习笔记Word格式.docx_第2页
第2页 / 共25页
数据库学习笔记Word格式.docx_第3页
第3页 / 共25页
数据库学习笔记Word格式.docx_第4页
第4页 / 共25页
数据库学习笔记Word格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据库学习笔记Word格式.docx

《数据库学习笔记Word格式.docx》由会员分享,可在线阅读,更多相关《数据库学习笔记Word格式.docx(25页珍藏版)》请在冰豆网上搜索。

数据库学习笔记Word格式.docx

进入到注册表

regedit

local_machine->

system->

currentControlset->

contro->

sessionmanager

把键值删除

2.1两种开发工具

sqlserver2000提供了两种开发工具

1.企业管理器

企业管理器是微软提供的图形界面方式操作sqlserver2000的工具

2.查询分析器

查询分析器是微软提供的用命令行(sql语句)操作sqlserver2000的工具;

2.2企业管理器的使用

sa:

superadministrator

1.管理员sa的介绍

2.如何修改sa密码

2.3查询分析器的使用

sql语句包括4个部分:

数据定义语言(DDL):

例如:

create,drop,alter等语句;

数据操作语言(DML):

insert,update,delete语句;

数据查询语言(DQL):

select语句;

数据控制语句(DCL):

grant,revoke,commit,rollback等。

3.表的管理

3.1表的命名和列的命名规则

1表名以字母和下划线开头

2长度不能超过128个字符;

3不要使用sqlserver的保留字

4只能使用A-Z,a-z,0-9,$,_,#等

3.2支持的数据类型

1字符型

char

varchar

ntext

text

nchar

nvarchar最大4000个字符

一般带有汉子的段用nvarchar,全英文或者符号的用varchar,因为nvarchar无论是单个字母还是单个汉子都占有两个字节,而varchar字母占一个,汉字占两个;

2数字型

bit

int

bigint

float存放小数,但不推荐使用

numeric小数

小数的时候推荐使用numeric

3日期类型

datatime表示日期

timestamp时间戳

一般情况下,用datatime表示日期

4图片image保存图片,但是用的很少,一般用路径存放

5视频binary字段可以存放,但是往往将视频文件保存在文件服务器上,在sqlserver中值保留文件路径,存取效率高

3.3建表(公司管理系统)

-----职员表

Sqlserver建议表的设计者,最好给表定义一个主键,用来标示唯一的一条记录

1主键(primarykey),不能够重复出现,

2而且必须给值,换句话说主键不允许为null

3主键是可以修改的

--创建表dept

createtabledept

(deptNointprimarykey,

dNamenvarchar(30),

locnvarchar(30)

--创建表emp

createtableemp

(empNoint,

eNamenvarchar(30),

jobnvarchar(30),

mgrint,

hireDatedatetime,

salnumeric(8,2),

commnumeric(8,2),

deptNointforeignkeyreferencesdept(deptNo)

--根据需要把deptNo做成外键(foreignkey)

--外键只能指向主键,并且要和主键的数据类型要一致

3.4插入字段

插入部分字段

语法:

insertinto表名(字段列表)values(列表)

3.5修改字段

3.6基本查询

3.6.1查询所有列

Select*fromemp(表名)where条件

3.6.2查询指定列

Select字段1,字段2from表名where条件

如何查询SMITH的薪水,工作,所在部门编号

selectename,sal,job,deptNofromempwhereename='

Smith'

3.6.2如何取消重复行(distinct只能消除完全一样的行,保留一行)

Selectdistinct字段from表名where条件

如何统计总共有多少部门

selectdistinctdeptnofromemp

3.6.3使用算术表达式

如何显示每个雇员的年工资?

selectename,sal*13年薪fromemp

3.6.4使用列的别名

selectename,'

年薪'

=sal*13fromemp

selectename,sal*13'

fromemp

selectenameas姓名,sal*13as年薪fromemp

注:

comm有空值;

selectename,sal+isnull(comm,0)fromemp

3.6.4使用where字句

1如何显示工资高于3000的员工

selectename,salfromempwheresal>

3000

2如何查找1981.1.1后入职的员工

selectename,hireDatefromempwherehireDate>

'

1981-1-1'

3如何显示工资在2000到3500的员工情况

selectename,salfromempwheresalbetween2000and3500

3.6.5如何使用like操作符(模糊查询)

%表示0到多个字符

_表示单个字符

如何显示首字符为S的员工姓名和工资

selectename,salfromempwhereenamelike'

S%'

如何显示第三个字符为大写O的所有员工的姓名和工资

selectename,salfromempwhereenamelike'

__o%'

3.6.6在where条件中使用in

如何显示empno为123,345,800.。

的雇员情况

selectename,empnofromempwhereempno=7369orempno=7782

selectename,empnofromempwhereempnoin(7369,7782)

3.6.7使用isnull的操作符

如何显示没有上级的雇员的情况

select*fromempwheremgrisnull

3.6.8使用逻辑符号

查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为j

select*fromempwhere(sal>

500orjob='

manager'

)andename='

j%'

3.6.9使用orderby语句

orderby默认是升序排列

orderbydesc降序排列

orderbyasc升序排列

orderby可以根据不同的字段进行不同的排序

1如何按照工资的从低到高的顺序显示雇员的信息

select*fromemporderbysalasc

select*fromemporderbysaldesc

2如何按照部门号升序而且雇员的工资降序排列

select*fromemporderbydeptno,saldesc

3.6.10使用别名排序

如何统计每个人的年薪,并按照从低到高的顺序排列?

selectename,sal*13年薪fromemporderby年薪

selectename,(sal+isnull(comm,0))*13年薪fromemporderby年薪

分页查询

按雇员的id号升序取出

3.7表的复杂查询

3.7.1说明

在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍比较复杂的select语句

3.7.2数据分组-----max,min,avg,sum,count

如何显示所有员工的最高工资和最低工资

selectmin(sal)fromemp

selectmax(sal)fromemp

selectmin(sal),max(sal)fromemp

如何显示最低工资和该雇员的姓名

selectename,salfromempwheresal=(selectmin(sal)fromemp)

显示所有员工的平均工资和工资总和

selectavg(sal)平均工资,sum(sal)总工资fromemp

把高于平均工资的雇员的姓名和工资显示出来

selectename,salfromempwheresal>

(selectavg(sal)fromemp)

计算共有多少员工

selectcount(*)fromemp

显示工资最高的员工的姓名和工资

selectename,salfromempwheresal=(selectmax(sal)fromemp)

3.7.3groupby和having

having往往和groupby结合使用,可以对分组查询进行筛选

groupby用于对查询结果的分组统计

having字句用于限制分组显示结果

显示每个部门的平均工资和最高工资

selectavg(sal),max(sal),deptnofromempgroupbydeptno

显示每个部门的每种岗位的平均工资和最低工资

selectavg(sal),min(sal),deptno,jobfromempgroupbydeptno,job

orderbydeptno

显示平均工资低于2000的部门号和它的平均工资

selectavg(sal),deptnofromempgroupbydeptnohavingavg(sal)<

2000

显示平均工资高于2000的部门号和它的平均工资,并且从低到高排列

selectavg(sal),deptnofromempgroupbydeptnohavingavg(sal)>

orderbyavg(sal)

3.7.4对数据分组的总结

1分组函数只能出现在选择列表、having、orderby子句中;

2如果在select语句中同时包含groupby,having,orderby那么他们的顺序只能是groupby,having,orderby;

3在学则列中如果有列、表达式、和分组函数,那么这些列和表达式必须出现一个在groupby语句中,否则会出错;

3.7.5多表查询

显示sales部门位置和其员工姓名

selectdname,loc,enamefromemp,dept

wheredname='

sales'

andemp.deptno=dept.deptno

显示雇员名,雇员工资及所在部门的名字

selectename,sal,dnamefromemp,deptwhereemp.deptno=dept.deptno

显示部门号为10的部门名称,员工名和工资

selectdname,ename,salfromemp,dept

whereemp.deptno=10andemp.deptno=dept.deptno

显示雇员名,雇员工资及所在部门的名字,并按部门排序

selectename,sal,dnamefromemp,deptwhereemp.deptno=dept.deptno

orderbydname

3.7.6自连接

3.7.7子查询

3.7.8分页查询

3.7.9如何处理重复的记录

把cat的记录distict后的结果,放入到#temp3

把cat的记录清空

把#temp3表的数据(没有重复的记录),插入cat表

删除#temp3表

3.7.10左外连接,右外连接

3.8维护数据的完整性

3.8.1约束

3.8.2使用

3.8.3案例

3.8.4修改表

4.Sqlserver数据库的备份和修复

4.1使用企业管理器完成备份和修复

4.2使用查询分析器完成备份和修复

5.Java程序中如何操作sqlserver

5.1使用jdbc-odbc方式操作sqlserver数据库

1.配置数据源(控制面板-管理工具-数据源)

2.在程序中去连接数据源:

套路:

1.加载驱动

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

2.得到连接(mytest是刚刚建立的数据源)

Connectionct=DriverManager.getConnection

(“jdbc:

odbc:

mytest”,“sa”,“sa”);

3.创建Statement或者PreparedStatement(用处:

发送sql语句);

Statementsm=ct.createStatement();

4.执行crud

exectueUpdate可以执行cud操作(添加,删除,修改)

如果是查询使用executQuery();

注意:

关闭资源!

继续演示:

查询:

resultSet结果集,

1.preparedStatement可以提高执行效率(因为他可以预编译);

2.preparedStatement可以防止sql注入,但是要求用赋值的方式;

5.2使用jdbc来操作数据库

Jdbc方式去操作数据库

1.引入包java.Sql.*;

2.引入三个jar包;

3.套路:

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

microsoft:

sqlserver:

//127.0.0.1:

1433;

databaseName=spdb1”,“sa”,“sa”);

PreparedStatementps=ct.prepareStatment(“sql语句”);

4.执行;

5.3Statement和preparedStatement的区别

5.4在java程序中操作sqlserver数据库表

5.实例

1.梁山heros(表的简单操作)

--创建数据库

createdatabaseliangshanheros

--创建表

useliangshanheros--使用某个数据库

go

createtablehero

(heroidint,--排名

heronamevarchar(50),--姓名

heronicknamevarchar(50),--外号

sexchar

(2)

--使用sql语句添加数据

insertintoherovalues(1,'

宋江'

'

及时雨'

男'

insertintoherovalues(2,'

卢俊义'

玉麒麟'

insertintoherovalues(3,'

吴用'

智多星'

insertintoherovalues(4,'

公孙胜'

入云龙'

--使用sql语句来查询数据

select*fromhero

2.梁山heros(表的简单操作)

sexchar

(2),

salint

2000)

2300)

1500)

--删除一张表(表的结构和表的数据一起删掉)

droptablehero

--①查询工资低于1600的同志

select*fromherowheresal<

1600

--②把工资低于1600的人的工资提高10%(update)

--语法:

--update表名set字段名1=?

,字段名2=?

where条件

updateherosetsal=sal*1.1wheresal<

--③请删除性别为女的同志

deletefromherowheresex='

女'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1