数据库常用命令解析

数据库常用命令解析,第1张

1 1、 显示表达式的值 [表达式][表达式]X=3 X2 将显示6

2 GO | GOTO 移动记录指针到指定记录号 GO [记录号]参数[记录号]可以用数字,或TOP、BOTTOM;变量TOP表示最顶端记录、BOTTOM表示最下端记录

3 SKIP 上移或者下移记录指针 SKIP [N]N正数表示下移记录指针,负数表示上移。 设当前记录指针是5SKIP 3 执行命令后记录指针是8SKIP -3 执行命令后记录指针是2

4 DISPLAY 显示记录 DISPLAY [范围] [FOR 条件] [字段列表]注此命令参数[范围]缺省表示当前记录

5 LIST 显示记录 LIST [范围] [FOR 条件] [字段列表]注此命令参数[范围]缺省表示所有记录(ALL)

6 BROWSE 显示、修改记录 BROWSE [FOR 条件] [FIELDS 字段列表]注:缺省 [FIELDS 字段列表]将显示所有的字段 显示1980年以后出生的学号、姓名Browse for 出生年月>={80/01/01} fields 学号,姓名

7 EDIT/CHANGE 修改记录

8 REPLACE WITH 批量替换 REPLACE [范围] [字段1 WITH 表达式1][,……]可以有多个替换,多个替换中间须逗号 计算每位同学的总分,总分等于语文+数学+英语Replace all 总分 with 语文+数学+英语 把每位同学的总分加10分replace all 总分 with 总分+10

9 APPEND 添加记录到数据表末尾 注:增加的记录在数据库的后面

10 INSERT 插入记录 三种用法

INSERT

在当前记录后插入一个记录INSERT BEFORE 在当前记录前插入一个记录INSERT BLANK

在当前记录后插入一个空白记录

11 DELETE 为记录加删除标记(逻辑删除) DELETE [范围] [FOR 条件] 参数[范围]有四种表现形式:(以下命令类似)1、“ALL”表示所有记录2、“RECORD n”表示第n个记录3、“NEXT n”表示从当前记录开始n个记录4、“REST”表示从当前记录开始到最后一个记录。 逻辑删除第3个记录Delete Record 3逻辑删除当前记录开始3个记录 Delete Next 3 逻辑删除数学>90分以上Delete for 数学>90

12 PACK 永久删除加有删除标记的记录

13 RECALL 去除记录的删除标记 RECALL [范围] [FOR 条件]

14 ZAP 永久性删除表中所有记录

15 COUNT 统计表的记录数 COUNT [FOR 条件][TO 内存变量] 统计语文不及格的人数Count for 语文<60 to X

16 AVERAGE 求平均值 AVERAGE [字段列表] [TO 内存变量][FOR条件] 分别求男生的数学和语文的平均分并赋给变量sx和ywaverage数学,语文 to sx,yw for 性别=’男’sx,yw 显示变量sx和yw的值

117 SUM 对表中的数值型记录求和 SUM [字段列表] [TO 内存变量][FOR条件] 分别求全班语文、数学成绩的总和并赋给变量yw,sx Sum 语文,数学 to yw,sx

18 SORT 对当前表排序到新的数据表 SORT [TO 新数据库文件名] [ON 字段 排序方式]注:排序方式有两种:/A和/D分别表示升序和降序,/A可以省略。 把当前打开数据库按总分从大到小排序到新数据库cj1dbf。Sort to cj1dbf on 总分/D

19 LOCATE 顺序查找指定条件第一个记录 LOCATE [范围] [FOR 条件] 在当前记录后面的记录中找化学超过90分的记录Locate REST for 化学>90

20 CONTINUE 继续查找符合条件的记录 命令必须在执行LOCATE后使用,如果找不到满足记录状态栏将显示“End

of locate

scope”

21 INDEX 建立索引文件 INDEX [ON 字段] [TO 索引文件名]注索引文件是按索引字段升序进行排序 打开数据库chengjidbf,并建立以字段“学号”索引文件xhidxUse chengjiIndex on 学号 to xhidx

22 SET INDEX TO 打开索引文件 SET INDEX TO[索引文件名] 设已经打数据库chengjidbf,现要打开索引文件xhidxSet index to xhidx

23 SEEK 查找与索引关键字值匹配记录 SEEK [表达式] 设已对数据库“学号”字段进行索引并打开索引文件Seek ‘10001’ 查找学号是10001的记录

24 CREATE 建立新的数据表 CREATE [数据库文件名] CREATE chengjidbf

25 USE 打开或关闭数据库 三种用法

USE

关闭当前打开的数据库USE

[数据库文件名]

打开数据库USE [数据库文件名] [INDEX 索引文件名]打开数据库同时打开索引文件

26 COPY STRUCTURE TO 复制一个结构相同的空表 COPY STRUCTURE TO[新的数据库文件名]注文件名的扩展名dbf可省略,以下命令类似。 Copy structure to cj12dbfCopy structure to cj12

27 LIST STRUCTURE 显示数据库结构

28 MODIFY STRUCTURE 修改数据库结构

29 COPY TO 从当前表的内容复制到新表 COPY TO [新的数据库文件名] Copy to cj13dbf

30 CLEAR 清除FOXPRO显示区

31 DO 运行程序文件 DO [程序文件名] 运行FOXPRO默认路径下的程序文件“xs1prg”Do xs1prg

32 MODIFY COMMAND 编辑或建立程序文件 MODIFY COMMAND [程序文件名] MODIFY COMMAND xs1prg

33 QUIT 退出FoxPro

34 SET DEFAULT TO 设置FOXPRO默认路径 SET DEFAULT TO [路径]运行此命令后,数据库文件名前无需[路径] 把FOXPRO默认路径设置为D盘的“20040101”文件夹 Set default to D:\20040101

char:固定长度,例如:char(6),你输入的字符小于6时,它会在后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。

存储字符:ANSI

数字英文存储:最多能存储8000个。

汉字存储:4000个汉字

-----------------------------分割---------------------------

varchar(n):可变长度,(n为某一整数,不同数据库,最大长度n不同)

存储字符:ANSI

n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。

数字英文存储:最多能存储8000个。

汉字存储:4000个汉字

-----------------------------分割-----------------------------

nvarchar:可变长度,

存储字符:Unicode

Unicode所有的字符(汉字和英文)都用两个字节表示。

数字英文存储:最多能存储4000个。

汉字存储:4000个汉字

一般来说如果含有中文字符,用nvarchar,如果纯英文和数字,用char/varchar。

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。

1、层次模型:

①有且只有一个结点没有双亲结点(这个结点叫根结点)。

②除根结点外的其他结点有且只有一个双亲结点。

层次模型中的记录只能组织成树的集合而不能是任意图的集合。在层次模型中,记录的组织不再是一张杂乱无章的图,而是一棵"倒长"的树。

2、网状模型 :

①允许一个以上的结点没有双亲结点。

②一个结点可以有多个双亲结点。

网状模型中的数据用记录的集合来表示,数据间的联系用链接(可看作指针)来表示。数据库中的记录可被组织成任意图的集合。

3、关系模型:

关系模型用表的集合来表示数据和数据间的联系。

每个表有多个列,每列有唯一的列名。

在关系模型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型

扩展资料

1、无条件查询

例:找出所有学生的的选课情况

SELECT st_no,su_no

FROM score

例:找出所有学生的情况

SELECT

FROM student

“”为通配符,表示查找FROM中所指出关系的所有属性的值。

2、条件查询

条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。

例:找出任何一门课成绩在70以上的学生情况、课号及分数

SELECT UNIQUE studentst_class,studentst_no,studentst_name,studentst_sex,studentst_age,scoresu_no,scorescore

FROM student,score

WHERE scorescore>=70 AND scorestno=student,st_no

这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。

例:找出课程号为c02的,考试成绩不及格的学生

SELECT st_no

FROM score

WHERE su_no=‘c02’AND score<60

3、排序查询

排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。

例:查找不及格的课程,并将结果按课程号从大到小排列

SELECT UNIQUE su_no

FROM score

WHERE score<60

ORDER BY su_no DESC

4、嵌套查询

嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。

例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名

SELECT st_no,st_name

FROM student

WHERE stno IN (SELECT st_no

FROM score

WHERE su_no=‘c03’ AND score>80 )

这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。

5、计算查询

计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有:

COUNT() 计算元组的个数

COUNT(列名) 对某一列中的值计算个数

SUM(列名) 求某一列值的总和(此列值是数值型)

AVG(列名) 求某一列值的平均值(此列值是数值型)

MAX(列名) 求某一列值中的最大值

MIN(列名) 求某一列值中的最小值

例:求男学生的总人数和平均年龄

SELECT COUNT(),AVG(st_age)

FROM student

WHERE st_sex=‘男’

例:统计选修了课程的学生的人数

SELECT COUNT(DISTINCT st_no)

FROM score

注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。

参考资料:

SQL数据库_百度百科

第一范式(1NF)

(必须有主键,列不可分)

数据库表中的任何字段都是单一属性的,不可再分

create table aa(id int,NameAge varchar(100))

insert aa values(1,''无限-女'')

没有达到第一范式

create table aa(id int,name varcahr(10),age char(2))

insert aa values(1,''无限'',''女'')

达到第一范式

第二范式(2NF)

数据库表中非关键字段对任一候选关键字段的 都不存在部分函数依赖

(当一个表是复合主键时,非主键的字段不依赖于部分主键(即必须依赖于全部的主键字段))

create table sci(

sno int(32),cno int(32),grade int(32),credit int(32),

primary key sno,cno

)

课程(cno)1---1学分(credit)

学生(sno)n---n课程(cno)

学生+课程--->分数(grade)

sci

sno cno grade credit

1 1 60 80

2 1 90 80

3 1 70 80

如此以来,学分被大量重复存储,数据冗余

如要某课程学分,则要大量重复 *** 作

如要加新课程,由于sno和cno共同做为主键,则在加入新课程时,必须有人选该课

如某学生某课程结业,则该学生其它课程信息也同时被删除了

总之

这种设计不太好吧,非关键字属性credit仅函数依赖于cno,也就是credit部分依赖组合关键字(sno,cno)而不是完全依赖

解决

分成两个关系模式 sc1(sno,cno,grade),c2(cno,credit)新关系包括两个关系模式,它们之间通过sc1中的外关键字cno相联系,需要时再进行自然联接,恢复了原来的关系

第三范式(3NF)

关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖

例----S1(SNO,SNAME,DNO,DNAME,LOCATION)

学号 姓名 所在系 系名称 系地址

关键字SNO决定各个属性由于是单个关键字,没有部分依赖的问题,肯定是2NF但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况

原因:关系中存在传递依赖造成的即SNO 1->1 DNO而DNO 1->n SNO却不存在,而DNO -> LOCATION存在,因此关键辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO -> LOCATION 实现的也就是说,SNO不直接决定非主属性LOCATION

解决目地:每个关系模式中不能留有传递依赖

解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)

注意:关系S中不能没有外关键字DNO否则两个关系之间失去联系

数据库索引的种类:

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引

非唯一索引:B树索引

create index 索引名 on 表名(列名) tablespace 表空间名;

唯一索引:建立主键或者唯一约束时会自动在对应的列上建立唯一索引

2、索引列的个数:单列索引和复合索引

3、按照索引列的物理组织方式

B树索引

create index 索引名 on 表名(列名) tablespace 表空间名;

位图索引

create bitmap index 索引名 on 表名(列名) tablespace 表空间名;

反向键索引

create index 索引名 on 表名(列名) reverse tablespace 表空间名;

函数索引

create index 索引名 on 表名(函数名(列名)) tablespace 表空间名;

删除索引

drop index 索引名

重建索引

alter index 索引名 rebuild

索引的创建格式: 

CREATE UNIUQE | BITMAP INDEX <schema><index_name> 

    ON <schema><table_name> 

    (<column_name> | <expression> ASC | DESC, 

     <column_name> | <expression> ASC | DESC,) 

    TABLESPACE <tablespace_name> 

    STORAGE <storage_settings> 

    LOGGING | NOLOGGING 

    COMPUTE STATISTICS 

    NOCOMPRESS | COMPRESS<nn> 

    NOSORT | REVERSE 

    PARTITION | GLOBAL PARTITION<partition_setting>

UNIQUE | BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。 

    <column_name> | <expression> ASC | DESC:可以对多列进行联合索引,当为expression时即“基于函数的索引” 

    TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高) 

    STORAGE:可进一步设置表空间的存储参数 

    LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率) 

    COMPUTE STATISTICS:创建新索引时收集统计信息 

    NOCOMPRESS | COMPRESS<nn>:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值) 

    NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值 

    PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区

使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

一、B树索引:

最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

  可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。

B树索引的创建示例:

create index ind_t on t1(id) ;

注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;

注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);

注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。

二、位图索引:

有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。

所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量 < 行数1%)

位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。

位图索引的创建示例:

create bitmap index ind_t on t1(type);

注:位图索引不可能是唯一索引,也不能进行键值压缩。

三、反向键索引:

考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:

  反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

create index ind_t on t1(id) reverse;

注:键的反转由系统自行完成。对于用户是透明的。

四、基于函数的索引:

有的时候,需要进行如下查询:select from t1 where to_char(date,'yyyy')>'2007';

但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:

create index ind_t on t1(to_char(date,'yyyy'));

注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。

五、全局索引和局部索引:

这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。

具体索引和表的关系有三种:

1、局部分区索引:分区索引和分区表1对1

2、全局分区索引:分区索引和分区表N对N

3、全局非分区索引:非分区索引和分区表1对N

创建示例:

首先创建一个分区表

create table student

(

stuno number(5),

sname vrvhar2(10),

deptno number(5)

)

partition by hash (deptno)

(

partition part_01 tablespace A1,

partition part_02 tablespace A2

);

创建局部分区索引(1v1):

create index ind_t on student(stuno)

local(

partition part_01 tablespace A2,

partition part_02 tablespace A1

); --local后面可以不加

创建全局分区索引(NvN):

create index ind_t on student(stuno)

global partition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

); --只可以进行range分区

创建全局非分区索引(1vN)

create index ind_t on student(stuno) GLOBAL;

主键(Primarykey):也称为主码或主关键字,用于惟一地确定一个元组的属性或属性组(复合主码)。每个关系都有一个并且只有一个主码。

外键(ForeignKey):也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。

在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)称为参照关系。

扩展资料:

数据库主键作用:

1、保证实体的完整性

2、加快数据库的 *** 作速度

3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

参考资料来源:百度百科-数据库主键

以上就是关于数据库常用命令解析全部的内容,包括:数据库常用命令解析、数据库字符串比较大小问题、数据库按数据的组织方式来分可以分为哪三种模型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9826151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存