SQL 语句 基础:学习

上一篇 / 下一篇  2011-01-20 09:11:34 / 个人分类:知识的积累

创建新表
  create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
删除新表
  drop table tabname
增加一个列
  Alter table tabname add column col type
几个简单的基本的sql语句
  选择:select * from table1 where 范围   
插入:insert into table1(field1,field2) values(value1,value2)  
 删除:delete from table1 where 范围  
 更新:update table1 set field1=value1 where 范围
 查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!
 排序:select * from table1 order by field1,field2 [desc]  
 总数:select count(*) as totalcount from table1  
 求和:select sum(field1) as sumvalue from table1   
     平均:select avg(field1) as avgvalue from table1  
 最大:select max(field1) as maxvalue from table1  
 最小:select min(field1) as minvalue from table1[separator]

几个高级查询运算词
  A: UNION 运算符  
 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。   
B: EXCEPT 运算符   EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。   C: INTERSECT 运算符   INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。   注:使用运算词的几个查询结果行必须是一致的。
使用外连接
  A、left outer join:   左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。   SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c  
     B:right outer join:   右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。   C:full outer join:   全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

子查询
  (表名1:a 表名2:b)   select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)
外连接查询
  (表名1:a 表名2:b)   select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
between的用法
  between限制查询数据范围时包括了边界值,not between不包括   select * from table1 where time between time1 and time2   select a,b,c, from table1 where a not between 数值1 and 数值2
in 的使用方法
  select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

Insert: 请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。

  同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。

  对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。

INSERT INTO EMPLOYEES VALUES

   ('Jones','Indiana','1992-02-01',

   'Chicago',NULL,NULL);

我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。

INSERT INTO EMPLOYEES(

   FIRST_NAME, LAST_NAME,

   HIRE_DATE, BRANCH_OFFICE)

  VALUE(

   'Indiana','Jones',

   '1992-02-01','Indianapolis');

这样,我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。

SELECT语句

现在已经消除了重复的行,但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果:

  SELECT DISTINCT BRANCH_OFFICE

  FROM EMPLOYEES

  ORDER BY BRANCH_OFFICE ASC;

将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号

逻辑连接符:为了进一步定义一个WHERE子句,用户可以使用逻辑连接符AND,OR和NOT
关键字NOT后面跟着用圆括号括起来的比较表达式。其结果是对结果取否定:WHERE NOT(BRANCH_OFFICE = 'Boston');
断言可以与其他的断言嵌套使用。为了保证它们以正确的顺序进行求值,可以用括号将它们括起来:

首先,在断言中进行NULL判断时需要特殊的语法。例如,如果用户需要显示所有年薪未知的职员的全部信息,用户可以使用如下SELECT语句:

  SELECT * FROM EMPLOYEES

  WHERE SALARY IS NULL;

  相反,如果用户需要所有已知年薪数据的职员的信息,你可以使用以下语句:

  SELECT * FROM EMPLOYEES

  WHERE SALARY IS NOT NULL;

  请注意我们在列名之后使用了关键字IS NULL或IS NOT NULL,而不是标准的比较形式:COLUMN = NULL、COLUMN <> NULL或是逻辑操作符NOT(NULL)。

从而需要使用特殊的操作符IS NULL和IS NOT NULL。

UPDATE语句

  UPDATE语句允许用户在已知的表中对现有的行进行修改。

  例如,我们刚刚发现Indiana Jones的等级为16,工资为$40,000.00,我们可以通过下面的SQL语句对数据库进行更新(并清除那些烦人的NULL)。

  UPDATE EMPLOYEES

  SET GRADE = 16, SALARY = 40000

  WHERE FIRST_NAME = 'Indiana'

   AND LAST_NAME = 'Jones';

  上面的例子说明了一个单行更新,但是UPDATE语句可以对多行进行操作。满足WHERE条件的所有行都将被更新。如果,你想让Boston办事处中的所有职员搬到New York,你可以使用如下语句:

  UPDATE EMPLOYEES

  SET BRANCH_OFFICE = 'New York'

  WHERE BRANCH_OFFICE = 'Boston';

  如果忽略WHERE子句,表中所有行中的部门值都将被更新为'New York'。

  UPDATE语句的语法流图如下面所示:

  UPDATE table

  SET column = value [{, column = value}]

  [ WHERE predicate [ { logical-connector predicate}]];

  DELETE语句

  DELETE语句用来删除已知表中的行。如同UPDATE语句中一样,所有满足WHERE子句中条件的行都将被删除。由于SQL中没有UNDO语句或是“你确认删除吗?”之类的警告,在执行这条语句时千万要小心。如果决定取消Los Angeles办事处并解雇办事处的所有职员,这一卑鄙的工作可以由以下这条语句来实现:

  DELETE FROM EMPLOYEES

  WHERE BRANCH_OFFICE = 'Los Angeles';

  如同UPDATE语句中一样,省略WHERE子句将使得操作施加到表中所有的行。

  DELETE语句的语法流图如下面所示:

  DELETE FROM table

  [WHERE predicate [ { logical-connector predicate} ] ];

 

 


 


TAG:

包包427的个人空间 引用 删除 包包427   /   2011-08-19 17:13:13
基础再巩固巩固!
 

评分:0

我来说两句

Open Toolbar