VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之SQLSERVER中条件表达式和逻辑运算符

=======================================
T-sql中的条件表达式和逻辑运算符
=======================================------------温故而知新------------


常量:表示单个指定数据值的符号。一个常量由一个或多个字母、数字字母组成,字母和datatime需要用引
      号括起来,而二进制字符串和数字常量则不需要。
---------------------------------------------------------
比较运算符:=
            >
            <
            >=
            <=
            <> 不等于
            !  非
----------------------------------------------------------            
一元运算符:+
            -
            ~ 补数运算符
----------------------------------------------------------           
表达式:  示例:price>100
                name like 'pita'
                grade <> 'fail'
----------------------------------------------------------               
通配符:  ‘_’  表示一个字符     例如:select meal_code from meal where meal_code like 'c_'
          
           %  表示任意长度字符串:例如:select meal_code from meal where meal_code like 'co_%'
          
          []  表示括号中所指定范围内的一个字符
                                 例如:select * from flight where aircraft_code like '9w0[1-2]'
          
          [^] 表示不在括号中所指定范围内的任意一个字符 
                               例如:select * from flight where aircraft_code like '9w0[^1-2]' 
-----------------------------------------------------------
逻辑运算符:
       AND:AND连接两个条件,并且仅当两上条件都为真时才返回true 
       OR:OR连接两个条件,但只要其中任一个为真就返回true       
       NOT:当一个语句中使用了多个逻辑运算符时,首先求not的值,然后求and的值,最后再求or的值。
       
============================================
使用insert 插入数据:
      语法如下:insert [into] <table_name> values <values>
               jobs 表中的四个字段,第一个字段存在唯一索引,并且自动增长不必用户添加
               所以只需添加三个字段的值即可
               示例:insert into jobs values('graphic artist',25,100)
==============================================
===============================================
使用select into 将一个表中的数据添加到另一个表中:
      语法如下:insert <table_name> SELECT <column_list> from <table_name2>
      
      例:create table author_details(au_id varchar(11),au_lname varchar(40))
          go
          insert author_details select authors.au_id,authors.au_lname from authors
          
      还可以将一个表中的数据有选择性地添加到另一个表
          insert into sales(stor_id) select stor_id from stores
          INSERT INTO sales(stor_id) SELECT stor_id FROM stores
==============================================================================
更新表中的数据:
      update <table_name> set <column_name=value> [where <search_condition>]
      update titles set price==price+(0.25*price) where title_id='TC7777'
      注意:当update 命令不包含条件时,将更新所有行。
================================================================================
-----------------------------------重点内容

使用联接信息更新:可以使用来自两个不同表的数据来更改数据。这可以通过联接来实现。联接根据表之
     间的逻辑关系检索来自两个或多个表的数据。典型的联接指定表之间的外键关系。它通过以下方式
     定义查询中两个表之间的联系方式。
     × 指定联接用到的每一个表的列。典型的联接指定一个表的外键以及在另一个表上的关联键
     × 指定用于比较列值的逻辑运算符,如=,<>
     
     表联接的类型有三种:
           × 内联接: 内联接中,仅当来自两个表的行的公共列匹配时,才会组合相应的记录并添加到查询
                     结果中。
           
           × 外联接:外联接中只要行满足select 语句中任何where或having子句的搜索条件,则返回
                    from 子句中提及的至少一个表的所有行。
                    left outer join:左外联接返回左表中的所有记录,但返返回右表中的匹配记录。
                    right outer join:右外联接返回右表中的所有记录,但仅返回左表中的匹配记录。
                    
                    因为外联接包括不匹配行,可以利用外联接查找违反外键约束的行。为此,需要先
                    创建外联接,然后添加搜索条件,以查找最右边表的主键列是空值的行。例如,下
                    面的外联接在 employee 表中查找在 jobs 表中没有对应行的行:
          SELECT employee.emp_id, employee.job_id
          FROM employee LEFT OUTER JOIN jobs 
             ON employee.job_id = jobs.job_id
          WHERE (jobs.job_id IS NULL)
          
          外联接   甚至包括在联接表中没有相关行的行的联接。可以创建外联接的三个变
          化形式来指定所包括的不匹配行: 
           左向外联接   包括第一个命名表("左"表,出现在 JOIN 子句的最左边)中的所有行。
           不包括右表中的不匹配行。例如,下面的 SQL 语句说明 titles 表和 publishers 表之
           间的左向外联接包括所有的书名,甚至包括那些没有出版商信息的书名: 
           SELECT titles.title_id, 
                  titles.title, 
                  publishers.pub_name
           FROM titles LEFT OUTER JOIN publishers 
                       ON titles.pub_id 
                        = publishers.pub_id
                        
           右向外联接   包括第二个命名表("右"表,出现在 JOIN 子句的最右边)中的所有行。
           不包括左表中的不匹配行。例如,在 titles 和 publishers 表之间的右向外联接将包
           括所有的出版商,甚至包括那些在 titles 表中没有书名的出版商。所得到的 SQL 可能
           
           象下面这样: 
           SELECT titles.title_id, 
                  titles.title, 
                  publishers.pub_name
           FROM titles RIGHT OUTER JOIN publishers 
                       ON titles.pub_id = publishers.pub_id
                       
           完整外部联接   包括所有联接表中的所有行,不论它们是否匹配。例如,titles 表和 
           publishers 表之间的完整外部联接显示所有书名和所有出版商,甚至包括那些在另一个
           表中没有匹配值的书名和出版商。 
           SELECT titles.title_id, 
                  titles.title, 
                  publishers.pub_name
           FROM titles FULL OUTER JOIN publishers 
                       ON titles.pub_id 
                        = publishers.pub_id


                             
                    
           × 自联接:自联接是一种内联接,用于查找表中与同一表中其他记录相关的记录。自联接中,表
                  与自身进行联接。
           
     
     示例:tabl_a as table_alias_a join table_b as table_alias_b 
           on 
           table_alias_a.<common_field>=table_alias_b.<common_field>

=============================================
删除数据:
     删除表中所有数据:delete from table_name where state='ca'
     如不给出条件将会删除表中所有数据。
     
     使用truncate table删除表中的所有数据:truncate table 是用于删除表中所有行的命令。功能上
          它类似于没有where 子句的delete 语句。但truncate table比delete 执行速度快,而且使用
          的系统资源和事务日志资源更少。
          
          虽然truncate table删除表中的所有行,但是表的结构、列、约束、索引等不会被改动。
          
          truncate table不能用于有外键约束引用的表,这种情况下,需要使用不带where子句的
          delete 语句。


相关教程