上次我们说到了sql里面的增Create和Insert,那么如果我们要删除和修改要怎么办呢?
首先我们要明确一件事情,那就是数据库对象和数据的区别,这个其实在上一次里面就该提到,因为刚开始写,想到哪就写到哪吧,随笔随笔嘛,上次还有很多创建的也就忘了,哈哈。莫怪。
数据库对象是数据库的组成部分,主要有
1. 表 表应该是数据库中最基础的对象了,它是数据库用来存储格式化数据的对象。数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于唯一地确定一条记录。
2. 索引 索引是对表中每一条数据记录的独特标记,是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。如聚簇索引。
3. 视图 视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。
4. 图表 图表是数据库中表表之间的关系示意图,利用它可以编辑表和表之间的关系。这样如果一个数据库中存在多个表的话就不会孤立,而是产生了联系,从而简化对多个表的访问。
5. 缺省值 缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
6. 规则 规则就是限制,不过需要注意的是数据库里的规则只针对表中的列而言,对数据库表中数据信息的限制。
7. 触发器 触发器由事件来触发,可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。
8. 存储过程 存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
9. 用户 所谓用户就是有权限访问数据库的人。
然后是数据库的数据,总的来说,数据是存在数据库表中的,基本上我们的sql操作最终都是以操作数据库中的数据为目的的。
那么回到上篇,创建数据库对象一般用Create,然后插入数据的话用到Insert。
这里删除也是一样的,删除数据库对象一般用Drop,删除数据用Delete。如:
Drop Database xxx;
Drop Table xxx;
Drop View xxx;
...
Delete from table where ...
上面说的是删,修改的话还是一样的,修改对象用Alter,修改数据用Update。如:
Alter table1 Alter Column xxx int null --修改表的列的类型
Update table1 Set xxx = yyy where ... --修改满足条件的xxx字段的值为yyy
说到Alter,有些关于修改表的相关,比如:
ALTER TABLE distributors ADD address varchar(30); --向sql server表中增加一个varchar列
ALTER TABLE distributors DROP COLUMN address RESTRICT; --从sql server表中删除一个字段
ALTER TABLE distributors RENAME COLUMN address TO city; --更改表的列名
ALTER TABLE distributors RENAME TO suppliers; --更改表的名字
ALTER TABLE distributors ALTER COLUMN street SET NOT NULL; --给一个字段增加一个非空约束
ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL; --从一个字段里删除一个非空约束
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5); --给一个表增加一个检查约束
ALTER TABLE distributors DROP CONSTRAINT zipchk; --删除一个表和它的所有子表的监查约束
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL; --向表中增加一个外键约束
ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode); --给表增加一个(多字段)唯一约束