select * from where rownum<=2; 只查看表中的前两行数据
-
什么是元数据 metadata
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
name varchar(20) not null ,
hiredate date default sysdate
);
rename hellen_test to hellen;
drop table hellen;
alter table add (
dept varchar(20)
);
alter table drop(dept);
alter table modify(name varchar(15) not null);
desc hellen
定义,更新,查询表里面填充的内容
insert into hellen values ('hellen','11-Nov-17','thomsonreuters')
update hellen setname=hellen huwheredept='thomsonreuters';
delete from table where name='hellen hu';
select * from hellen where ;
、定义存储过程语法,"[" 里面的内容表示可选项
create proc 存储过程名
@参数1 数据类型 [=默认值] [output],
@参数2 数据类型 [=默认值] [output],
...
as
SQL语句
四、简单的一个例子
定义存储过程:
create proc usp_StudentByGenderAge
@gender nvarchar(10) [='男'],
@age int [=30]
as
select * from MyStudent where FGender=@gender and FAge=@age
执行存储过程:
Situation One(调用默认的参数):
exec usp_StudentByGenderAge
Situation Two(调用自己指定的参数):
exec usp_StudentByGenderAge '女',50
或者指定变量名 exec usp_StudentByGenderAge @age=50,@gender='女'
对存储过程进行修改
alter proc usp_StudentByGenderAge
@gender nvarchar(10) [='男'],
@age int [=30],
--加output表示该参数是需要在存储过程中赋值并返回的
@recorderCount int output
as
select * from MyStudent where FGender=@gender and FAge=@age
set @recorderCount=(select count(*) from MyStudent where FGender=@gender and FAge=@age)
--output参数的目的,就是调用者需要传递一个变量进来,然后在存储过程中为该变量完成赋值工作,存储过程执行完成以后,将执行的对应结果返回给传递进来的变量。(与C#中的out原理一模一样)
调用(记住这里的语法!)因为该存储过程前面还有其他参数,所以要把 @recorderCount写上,该存储过程执行后,相当与完成了以上的查询工作,同时将查询结果得到的条数赋值给了@count变量。(@count是当做参数传给usp_StudentByGenderAge,当存储过程执行完毕以后,将得到的条数返回给@count)
declare @count int
exec usp_StudentByGenderAge @recorderCount=@count output
print @count
CREATE PROCEDURE Procedure_Name --Procedure_Name为存储过程名(不能以阿拉伯数字开头),在一个数据库中触发器名是唯一的。名字的长度不能超过个字。PROCEDURE可以简写为PROC。 @Param1 Datatype,@Param2 Datatype --@Param1和@Param2为存储过程的参数,Datatype为参数类型,多个参数用逗号隔开,最多允许个参数。 AS --存储过程要执行的操作 BEGIN --BEGIN跟END组成一个代码块,可以写也可以不写,如果存储过程中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。 END GO --GO就代表结操作完毕 exec Procedure_Name [参数名] --调用存储过程Procedure_Name。 drop procedure Procedure_Name --删除存储过程Procedure_Name,不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 show procedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 show create procedure Procedure_Name --显示存储过程Procedure_Name的详细信息 exec sp_helptext Procedure_Name --显示你这个Procedure_Name这个对象创建文本
通俗的说 schema 是数据表的组织和定义,他们同其他表的关系及他们所包含的列,通俗的说,他们就是数据库的设计。
数据库中的schema 数据库对象的集合,一个用户一般对应一个schema
如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。
我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。在数据库中一个对象的完整名称为schema.object,而不属user.object。
在MySQL中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的。
在SQL Server 2000中,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,假如我们在某一数据库中创建了用户Bosco,那么此时后台也为我们默认的创建了schema【Bosco】,schema的名字和user的名字相同。
在SQL Server 2005中,为了向后兼容,当用sp_adduser存储过程创建一个用户的时候,sqlserver2005同时也创建了一个和用户名相同的schema,然而这个存储过程是为了向后兼容才保留的,当我们用create user创建数据库用户时,我们可以用该用户指定一个已经存在的schema作为默认的schema,如果我们不指定,则该用户所默认的schema即为dbo schema,dbo房间(schema)好比一个大的公共房间,在当前登录用户没有默认schema的前提下,如果你在大仓库中进行一些操作,比如create table,如果没有制定特定的房间(schema),那么你的物品就只好放进公共的dbo房间(schema)了。但是如果当前登录用户有默认的schema,那么所做的一切操作都是在默认的schema上进行。
在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。
oracle, mysql 之类的数据库系统中,一个schema 其实就是一套表,VIEW,等。 类似于SQL SERVER中的一个数据库。
schema就是单个数据库
你建一个库就是一个schema
schema,你可以看成是一个文件夹,有的数据库是可以创建多个schema的,在schema下可以有表,试图等
如果只能有一个schema的话,可以认为只能有一个文件夹的系统。
schema是为对数据结构的定义。
如果把schema理解为面向对象程序中的一个类,一条记录便可以理解为面向对象程序中的一个实例。
和db/ tbl的抽象层次不一样。
db /tbl是数据的组织方式, schema是数据的设计模式