我的数据库原理及应用学习笔记.docx

上传人:b****2 文档编号:17148348 上传时间:2023-07-22 格式:DOCX 页数:8 大小:18.61KB
下载 相关 举报
我的数据库原理及应用学习笔记.docx_第1页
第1页 / 共8页
我的数据库原理及应用学习笔记.docx_第2页
第2页 / 共8页
我的数据库原理及应用学习笔记.docx_第3页
第3页 / 共8页
我的数据库原理及应用学习笔记.docx_第4页
第4页 / 共8页
我的数据库原理及应用学习笔记.docx_第5页
第5页 / 共8页
我的数据库原理及应用学习笔记.docx_第6页
第6页 / 共8页
我的数据库原理及应用学习笔记.docx_第7页
第7页 / 共8页
我的数据库原理及应用学习笔记.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

我的数据库原理及应用学习笔记.docx

《我的数据库原理及应用学习笔记.docx》由会员分享,可在线阅读,更多相关《我的数据库原理及应用学习笔记.docx(8页珍藏版)》请在冰点文库上搜索。

我的数据库原理及应用学习笔记.docx

我的数据库原理及应用学习笔记

数据库原理及开发应用

(总结的知识储备)

1.数据库就是储存数据的仓库,专业的解释就是对数据存储和管理的软件和数据本身统称为数据库。

2.大型数据库有Oracle,Sqlsever属于中型数据库,小的太多忽略不计,要知道就上网查。

3.数据库管理系统的主要功能:

数据库定义功能;数据存取功能;数据库运行管理;数据库的建立和维护功能。

4.数据库的三级模式构:

外模式、模式和内模式。

(外模式即是用户模式可以多个,模式只能一个,内模式就是储存模式)。

5.DDL:

数据库模式定义语言DDL(DataDefinitionLanguage)。

6.DML:

数据操作语言(data manipulation language)。

7.DBMS:

数据库管理系统(DatabaseManagementSystem)。

8.DBS:

数据库系统(DatabaseSystem)。

9.DBA:

数据库管理员(DatabaseAdministrator)。

 

从三方面学习数据库

1.数据库是如何储存数据的?

(主键,外键,唯一键)

2.数据库是如何操作数据的?

(insertupdatedelete)

3.数据库是如何显示数据的?

(select重点)

操作及代码

1.Cratetable语句:

createtablestudent(stu_namenvarchar(30)notnull,stu_numbintnotnull,stu_sexnchar

(1)notnull);

2.主键外键:

stu_numbintprimarykey;(可以在int和primary中间加上constraint约束名称)。

sch_addnvarchar(30)foreignkeyreferencesstudent(stu_numb);

 

顺带回忆一下主键和外键的定义:

主键:

能够唯一标示一个事物的的字段或者多个字段的组合,叫主键。

(含有主键的表叫做主键表,主键一般是整数不建议用字符串,而且一般用代理主键不要用业务主键,也就是说不要用有业务的字段作为主键,一般就用没有含义的编号当做主键。

外键:

如果一个表中的若干个字段来自若干个表的主键或者唯一键,就称这若干个字段为外键。

(含有外键的表叫做外键表,通常都来自主键,因为唯一键可能为null,而且外键不一定来自别的表可能就来自本表)。

自认为总结的超好。

哦哦,还有删除表的时候先删外键表,不然先删主键会报错,原因很简单,外键引用错误。

没完,

主键约束:

不允许重复元素,避免了数据的冗余。

外键约束:

从语法上保证所关联的事物一定存在,而且事物和事物之间的关系是通过外键来体现的。

3.check语句:

stu_markintcheck(stu_mark>=60andstu_mark<=100);

check约束:

保证事物属性的取值在合法的范围内。

4.insert语句:

insertintostudentvalues(‘施宁一’,14,’男’);(必须把所有字段全都输入除非有null的要写null);也可以是:

insertinto(stu_name,stu_sex)values(‘施宁一’,’男’);

 

5.default语句:

stu_sexnchar

(1)default(‘男’);

default约束:

保证事物的属性一定会有一个值。

 

6.unique语句:

stu_namenvarchar(30)unique;表示其取值唯一不能重复。

7.update语句:

(书上没写这,网上找的好例子)我们刚刚发现IndianaJones的等级为16,工资为$40,000.00,我们可以通过下面的SQL语句对数据库进行更新(并清除那些烦人的NULL)。

  UPDATEEMPLOYEES

  SETGRADE=16,SALARY=40000

  WHEREFIRST_NAME='Indiana'

  ANDLAST_NAME='Jones';

8.delete语句:

(一样是网上的例子,代码大写的效果一样但看着不爽)DELETE语句用来删除已知表中的行。

如同UPDATE语句中一样,所有满足WHERE子句中条件的行都将被删除。

由于SQL中没有UNDO语句或是“你确认删除吗?

”之类的警告,在执行这条语句时千万要小心。

如果决定取消LosAngeles办事处并解雇办事处的所有职员,这一卑鄙的工作可以由以下这条语句来实现:

DELETEFROMEMPLOYEES

WHEREBRANCH_OFFICE='LosAngeles';

如同UPDATE语句中一样,省略WHERE子句将使得操作施加到表中所有的行。

 

简单的操作及代码总结完了,后面是重点内容和难点部分,主要介绍

查询【select】

1.计算列:

(下面的例子中student是表名,其余的为字段名)

select*fromstudent;(数据库里的注释为--)

--*表示所有的意思。

此语句将表中的所有数据显示。

selectstu_namefromstudent;

selectstu_name,stu_idfromstudent;

selectstu_name,stu_id*10as“学号的十倍”fromstudent;

selectstu_name,stu_id*10as“学号的十倍”,stu_id“学号”fromstudent;

--as可以省略不写,此语句可以经过计算建立新的一列,并且命名。

必须知道的是select123fromstudent;之类的语句结果不会报错,会显示student表的行数,每行都是123这个数据。

注:

在写字段别名时可以用单引号也可以用双引号,但是为了增强可移植性,一般用双引号,因为在Oracle大型数据库中不允许用单引号。

 

2.distinct【不允许重复的】语句。

selectdistinctstu_namefromstudent;

--将一样的数据都过滤掉,包括null,如果有都只剩下一个。

selectdistinctstu_name,stu_idfromstudent;

--将这两个字段的组合重复的过滤掉了。

但是不能写成

selectstu_id,distinctstu_namefromstudent;用来过滤第二个字段,保留第一个字段。

逻辑上有错误,不可行。

3.between【在某个范围内的查询】语句。

(后面emp是表名,salary是薪水的字段)

select*fromemp

wheresalary>=1500andsalary<=5000

等价于

select*fromemp

wheresalarybetween1500and5000

需要注意的是:

select*fromemp(;)

wheresalary>=1500andsalary<=5000是不可取的,这两个命令是一起的,中间不能打分号。

查找另外一个范围的数据时可以用以下语句:

select*fromemp

wheresalarynotbetween1500and5000

(另外一种是:

select*fromemp

wheresalary<=1500orsalary>=5000

4.in【若干个孤立的值】

select*fromempwheresalaryin(1500,3000)

等价于

select*fromempwheresalary=1500orsalary=3000

select*fromempwheresalarynotin(1500,3000)

等价于

select*fromempwheresalary<>1500andsalary<>3000

也作

select*fromempwheresalary!

=1500andsalary!

=3000

--数据库中不等于有两种写法:

=和<>推荐使用第二种。

--or取反时记得改为and,呵呵。

5.top【最前面的若干个记录,专属于sqlserver不可移植到其他数据库】

selecttop5*fromemp;

selecttop15percent*fromemp;

--此语句输出的是百分之15的行数的所有字段,如果经计算百分之15是2.1,则输出的是三行。

而且*不能省略,否则报错。

6.null【没有值空值】

零和null不一样,null表示没有值,而零表示一个确定的值。

null不能参与这些运算:

<>!

==

可以参与如下运算:

isisnot

(下面的例子中emp表示表名,而comm表示字段名)

select*fromempwherecommisnull;

--输出的是奖金为空的员工的信息。

select*fromempwherecommisnotnull;

--输出的是奖金不为空的员工信息。

select*fromempwherecomm<>null;

--输出为空error

select*fromempwherecomm!

=null;

--输出为空error

select*fromempwherecomm=null;

--输出为空error

任何类型的数据都允许为null

createtablet1(stu_namenvarchar(30),stu_idint,stu_sexnchar

(1);

insertintot1values(null,null,null);--正确

任何数字与null参与数学运算的结果都是null

(后面例子中empna表示员工名字,empsal表示月薪,empid表示员工号码,comm与上面一样表示年终奖金)

selectempid,empna,empsal*12+commas”年薪”fromemp;

运行结果是最后一个字段都为null,证明了上面的说法。

另外一种正确的写法:

selectempid,empna,empsal*12+isnull(comm.,0)as“年薪”fromemp;

关于函数isnull(comm.,0)的解释:

如果comm的值为null则返回0,如果不是null则返回原本的comm值。

7.orderby【以某个字段排序】

orderbya,b

按a,b都按升序排列。

orderbya,bdesc

a升序,b,降序

orderbyadesc,b

a降序,b升序

orderbyadesc,bdesc

a,b都按降序排列。

--解释:

默认是按照升序排列的,升序是asc可以不写。

(ascending,descending)

 

8.模糊查询【搜索时经常使用】

格式:

select字段的集合from表名where某个字段的名字like匹配条件(匹配条件通常含有通配符%)

通配符表示任意零个或者多个字符

select*fromempwhereenamelike‘%A%’

--只要含A的ename就输出。

select*fromempwhereenamelike‘A%’

--ename只要首字母为A就输出。

select*fromempwhereenamelike‘%A’

--ename只要以A结尾就输出。

_【下划线】

表示任意单个字符

select*fromempwhereenamelike‘_A%’

--ename只要第二个字母为A就输出。

[a-f]

a到f中的任意单个字符

select*fromempwhereenamelike‘_[a-f]%’

--ename中只要第二个字母是在a到f中的就输出。

[a,f]a或f

[^a-c]

不是a到c中的任意一个字母,看清楚是^不是~自己瞎了别怪我没提醒。

select*fromempwhere部门iplike'_[^发,联]%'

(这个语句是从sqlsever里面复制的,感觉颜色还蛮好看的)

注意:

匹配的条件必须用单引号括起来,不能傻不拉几的用双引号,后面来解释一下要搜索带%_的字段时的方法。

直接把在sqlsever里的复制看:

createtablepeople(namenvarchar(30)notnull,ageint)

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2