Win32系统下数据库环境搭建暂时告一段落,现将前几篇汇总,做一个索引:
二、DB2数据库环境
附常用SQL的介绍(SQL92):
一、创建用户:
create user userName identified by password;
二、给用户授权:
grant privilege on object to user(role);其中具有对象授权的数据库(如Oracle)最后可以加with grant option,含义是此用户/角色能够将此权限授予别的用户/角色。object为对象,表,视图等数据库对象。privilege中允许的值即该数据库的权限名称,公共的如SELECT,UPDATE,INSERT,CREATE等,权限控制比较严格的数据库如Oracle还存在connect,resources的权限。
三、建表:
(1)、第一种方式,直接填写字段和字段类型以及是否为空的限制,以及是否主键的限制,示例如下:
create table tableName(
tableId number(10) not null primary key,
tableName varchar(200) not null
)
(2)、复制其余表的结构,采用create_select方式,示例如下:
create table tableName select ID,Name from Schema.B;//该语句执行完毕后B表的这两个字段的信息将被复制到tableName表。
四、插入数据:
(1)、同三,也有两种结构,第一种:
insert into tableA values('1','zhangsan','13535353535');//此种方式插入数据不要求values里面的字段和tableA中的个数匹配(规范的话最好相等),不过忽略的字段一定不能为NOT NULL,否则插入会报错。
(2)、从另一张表中插入数据:
第一种方式: insert into tableA select * from Schema.TableB;//此条语句执行时TableB中的字段个数必须和tableA中相等否则插入报错。不加限制条件则将表中的所有记录插入tableA,TableB中的数据入tableA时会被强制转换成tableA在建表时声明的字符类型。此外对于这种不指定插入字段的插入法,数据库有一个隐含属性columnId,每张表在建立时每个字段都带着这个属性,此时tableA根据这个属性的值寻找TableB中的“源”即columnId匹配的那个字段。默认情况下建表时第一个字段为1,第二个为2,依次类推。
第二种方式:只指定目标表的字段如:insert into TableA(Id,name) select * from TableB;类型的,将TableB中的字段按照TableB建表时候的顺序插入TableA中,字段顺序对应插入语句中列出来的顺序(此时就不是建表时候的顺序了如上述语句变成insert into TableA(name,Id) select * from TableB;结果完全不同)。
第三种方式:只指定源表字段如insert into TableA select Id,Name from TableB;则Id插入TableA的第一个字段而Name插入第二个字段,数据库怎么知道哪个是第一个,你在建表的时候已经给它指定了。
第四种方式:这就是我们随便google一下就能看到的insert into TableA(Id,name) select Id,name from TableB;这种方式,最容易理解了,直接对应字段插入就可以了。
五、更新数据:
使用Update关键字,具体用法:update tableName set column='columnName'[条件语句];
六、删除数据:
使用DELETE关键字,具体用法delete from tableName where columnName='';
值得一提的是Merge语句,该语句的意思是向一张表中merge数据,如果匹配的话就update,没有找到匹配的话就insert into,Oracle9及以后的版本支持该语句,后被写入SQL99规范。具体用法:
Merge into Table1(Column1,Column2)
when matched update....
when not matched insert....
一般情况下CRUD插入语句是最多见的,通常DBA写SQL是比较规范的,插入语句多像上面的第四种方式,但是也有不少为了省事,直接写其余三种方式的,多一点积累,不至于措手不及。
七、关系操作:
SQL有多种关系操作,或者叫关系代数,罗列一些常用具体如下:
(1)、Projection(投影):这种是最常见的,如Select Id,Name from TableA;即为一个投影,即TableA在字段Id,Name上的投影。
(2)、Selection(选择):where语句,从结果集中选择一部分。
(3)、OrderBy(排序):orderby子句,对结果进行排序有ASC(升序)和DESC(降序),默认升序。
(4)、GroupBy(分组):将结果集分组,参数为字段名称,即根据这个字段分组。
(5)、Combination(并):Union(ALL)关键字,对不同的结果集合并展示,操作的为字段级。即返回的结果的字段数不会超过Union的单个表的字段数。这个是相对下面这个说的。
(6)、Join(交):分Inner和Outer,不过交的结果中的字段个数会大于单个表的字段数,因此交操作的是表(我们姑且把输出结果看成一个临时表)和字段,表级和字段级都被操作了。
八、取消权限:
revoke命令,用法和grant雷同。值得注意的是Oracle的对象授权在此处就难管理了,建立一个用户,赋予对象权限后给另一个用户授权,取消这个用户的权限时是无法取消被它授予的那个用户的权限的。
九、删除用户、表:
Drop命令,删除表时:Drop table tableName;
删除用户时:Drop user userName cascade;//cascade命令将删除数据该Schema的所有数据实体。
十、常用的窗口函数:
SQL的标准窗口函数不多,不过每个DBMS都会对此有自己的扩展,常用的如:
Sum()//求和
Avg()//求平均
Max/Min()//最大最小值
Count()//计数
常用的SQL标准中都会给予提及。知道什么意思就行了。
常用的数据库命令就总结到这,因为工作中和数据库打交道比较多,总结一下, 希望能对你我都有帮助。