您的位置:首页 > 数据库

欢迎使用CSDN-markdown编辑器

2015-09-21 08:28 351 查看
=======================================

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] values

jobs 表中的四个字段,第一个字段存在唯一索引,并且自动增长不必用户添加

所以只需添加三个字段的值即可

示例:insert into jobs values(‘graphic artist’,25,100)

==============================================

===============================================

使用select into 将一个表中的数据添加到另一个表中:

语法如下:insert SELECT from

例: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 set

注意:当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.=table_alias_b.

=============================================

删除数据:

删除表中所有数据:delete from table_name where state=’ca’

如不给出条件将会删除表中所有数据。

使用truncate table删除表中的所有数据:truncate table 是用于删除表中所有行的命令。功能上

它类似于没有where 子句的delete 语句。但truncate table比delete 执行速度快,而且使用

的系统资源和事务日志资源更少。

虽然truncate table删除表中的所有行,但是表的结构、列、约束、索引等不会被改动。

truncate table不能用于有外键约束引用的表,这种情况下,需要使用不带where子句的

delete 语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql-server