SQL语法全面接触第四节

SQL与数据库的维护
    表格的建立
  
    将SQL中的基本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过滤,但实际上,我们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据库中的表格。 
  
     Create TABLE语句
    我们可以利用这个命令,来建立一个全新的表格,但前提则是:数据库必须已经存在。
  Create TABLE table(field1 type[(size)][index1][,field2 type[(size)][index2][,...]][,nultifieldindex[,...]]) 
  table
  欲建立的新的表格名称。 
  field1,field2
  在新表格中的新的字段名称,到少要一个字段以上。 
  type
  字段的数据类型。 
  size
  字段的大小。 
  index1,index2
  利用CONSTRAINT条件子句定义一个单一字段的索引名称。 
  multifieldindex
  利用CONSTRAINT条件子句定义一个多重字段的索引名称。
    例如:
    建立一个拥有职员姓名与部门字段的表格。
  
  Create TABLE 职员表格 (姓名TEST,部门TEST,职员编号 INTEGER CONSTRAINT职员字段索引PRIMARY KEY)
  在这一个范例中,我们建立了一个表格名称为“职员表格”的表格,并且定义了该表格的主键值,以限制数据不能重复输入。 
    表格索引的建立 
     Create INDEX语句
  这个命令主要是对一个已存在的表格建立索引,其用法如下:
  Create[UNIQUE]INDEX index ON table(field[ASC|DESC][,field[ASC|DESC],...])
  [WITH {PRIMARY|DISALLOWNULL|IGNORENULL}] 
  index
    欲被建立的索引名称。 
    table
    欲建立索引的表格名称。 
  field
    欲被建立的索引的字段名称。并可通过DESC保留字,来决定索引的顺序。
    例如:
  在职员表格中建立一个索引。
  Create INDEX 新索引名称
  ON 职员表格(姓名部门); 
  表格的字段更新 
  CONSTRAINT条件子句
  CONSTRAINT 的功能是类似索引(INDEX)的,虽然CONSTRAINT 也可以建立表格之间的关联性。 
  单一字段索引:
  CONSTRAINT name{PRIMARY KEY|UNIQUE|REFERENCES foreigntable[(foreignfield1,foreignfield2)]} 
  多字段索引:
  CONSTRAINT name
  {PRIMARY KEY(primary1[,primary2[,...]])
  |UNIQUE(unique1[,unique2[,...]])
  |FOREIGN KEY (ref1[,ref2[,...]])
  |REFERENCES foreigntable[(foreignfield1[,foreignfield2[,...]])]} 
  name
  要被建立的CONSTRAINT名称。 
  primary1,primary2
  被用来设计成主键值的字段名称(可一个以上)。 
  unique1,unique2
  被用来设计成唯一键值的字段名称(可一个以上)。 
  foreign key
  字段名称,或是参考到别的表格中字段的字段名称。 
  foreigntable
  如前所述,被参考到的表格。 
  foreignfield1,foreignfield2
  在参考到的表格当中,被ref1,ref2字段所指定的字段。如果被参考的字段是参考表格中的主键值,你也可以省略这个条件子句。
  例如:
  当我们要建立一个新的职员数据表格,表格包含姓名、部门名称与生日三个字段,且由这三个字段建立一个唯一的索引时,可以使用下面这段SQL的语句。
  Create TABLE 职员数据表格
  (姓名 TEST,部门名称 TEST,生日 DATETIME,CONSTRAINT 职员数据表格限制 UNIQUE(姓名,部门名称,生日));
  以上是SQL中,与数据库表格建立相关的命令,你可以利用这些命令,通过SQL的语句,将数据库表格完整的建立出来,接下来的章节,将针对数据库建立之后的维护与增删所要使用的SQL语句作一介绍。
  Delete语句
    我们可以利用Delete语句,将表格中的记录删除。(注意:记录被删除后,无法再复原,所以条件设置要正确)
  
  Delete[table.*]
  FROM tableexpression
  Where criteria 
  table
  欲删除记录的表格名称,也可以用*来取代。 
  tableexpression
  一个或一个以上表格的名称。此一参数可以为单一的表格名称或是从INNER JOIN,LEFT JOIN,或RIGHTJOIN 等运算所得到的结果。 
  criteria
  决定表格中记录要被删除的标准。
    例如:
    若是我们要将职员表格中姓名姓名叫做"李名"的记录删除,我们可以利用下面的SQL语句来完成。
    Delete * FROM 职员表格
    Where 姓名="李名"; 
      数据库表格相关的操作命令
    SQL除了可以作为查询与数据库表格的建立的工具外,对于数据库与表格的新建、删修、与维护,与具有相当不错的功能,若是读者使用SQL命令得宜,对于整个效率的提高有着很大的帮助,所以对于SQL语句所带来的优势,常常会遇到一个情况,就是:“当我们对多个表格作复杂与多步骤的处理时,或许SQL只要一个语句就可以完成所有的需求与目标”,乍看一下,或许觉得有些玄妙,但是接下来的章节,会让你了解其中的妙处。 
  
    Select...INTO语句
    我们可以通过这个命令,利用既存表格查询,来建立一个新表格的查询语句。
  
  Select field1[,field2[,...]]INTO newtable[IN externaldatabase]
  FROM source 
  field1,field2
  欲拷贝到新表格的字段名称。 
  newtable
  欲建立之新表格的名称,不可是已经存在的表格。 
  externaldatabase
  若是该表格在另外的外部数据库时,该数据库的名称。 
  source
  记录数据拷贝的来源表格名称,可以是单一的表格或是一段SQL查询之语句。
  例如:
  你可以通过下面的SQL语句,来建立一个新的“训练名册”表格。
  Select 职员表格.姓名,职员表格.部门
  INTO 训练名册 FROM 职员表格
  Where 职称="新进人员"; 
  
  INNER JOIN操作数
    当某一个共同的字段数据相等时,将两个表格的记录加以组合。
  
  Select fields
  FROM table1 INNER JOIN table2
  ON table1.field1 compopr table2.field2 
  table1,table2
  欲进行记录组合的表格名称。 
  field1,field2
  欲组合的字段名称。(必须具有相同的数据类型) 
  compopr
  比较关系运算符如下:“=”,“<”,“>”,“<=”,“<>”等。
  例如:
  若是你要把分类表格与产品表格作组合,可参考下面的SQL语句。
  Select 分类名称,产品名称
  FROM 分类表格 INNER JOIN 产品表格
  ON 分类表格.分类编号=产品表格.分类编号; 
    
    UNION操作数
    我们可以通过UNION操作数来建立连接的查询条件,UNION操作数可以将两个以上的表格或是查询的结果组合起来。
  
  [TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL]
  [TABLE]queryn [...]] 
  query1,query2,queryn
  为一个Select的语句,或是一个已存在的查询名称,或是一个已存在的表格名称。 
  
    例如:
    你可以利用下面的SQL语句,将订单数量超过1000的顾客表格记录,与新客户表格作UNION的操作。
  TABLE 新客户表格 UNION ALL
  Select *
  FROM 顾客表格
  Where 订单数量>1000; 
    
    Alter语句
    在一个表格被建立之后,利用Alter语句,我们可以去修改表格的字段设计。
  Alter TABLE table
  {ADD {COLUMN field type[(size)][CONSTRAINT index]
  |CONSTRAINT multifieldindex}
  |Drop {COLUMN field|CONSTRAINT indexname}} 
  table
  欲被Alter的表格名称。 
  field
  要被增加或删除的字段名称。 
  type
  字段数据类型。 
  size
  字段大小。 
  index
  对此字段的索引。
  例如:
  在职员表格中新建一个“薪水”的字段。
  Alter TABLE 职员表格
  ADD COLUMN 薪水 CURRENCY; 
  例如:
  在职员表格中删除一个“薪水”的字段。
  Alter TABLE 职员表格 Drop COLUMN 薪水;
    
    Drop语句
    针对所指定的表格或字段加以删除,或是把索引删除。
  Drop {TABLE table|INDEX index ON table} 
  table
  欲删除之表格或索引依附之表格名称。 
  index
  欲从表格中删除的索引名称。
  例如:
  从职员表格中,删除编号索引。
  Drop INDEX MyIndex ON Employees; 
  例如:
  从数据库中,删除整个表格。
  Drop TABLE 职员表格;
  
    Insert INTO语句
    新建一条数据到表格当中。 
    多条记录新建查询:
  Insert INTO target [IN externaldatabase][(field1[,field2[,...]])]
  Select [source.]field1[,field2[,...]
  FROM tableexpression 
  单条记录新建查询:
  Insert INTO target[(field1[,field2[,...]])]
  VALUES(value1[,value2[,...]) 
  target
  新建记录的表格名称。 
  externaldatabase
  外部数据库的路径,搭配IN条件子句使用。 
  source
  若是记录从其它表格中拷贝时,指明该表格的名称。 
  field1,field2
  欲增加数据的字段名称。 
  tableexpression
  表格名称或描述记录是从哪一个表格中插入的表格名称。配合INNER JOIN,LEFT JOIN,或 RIGHT JOIN 运算符一起使用。 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值