设为首页 收藏本站
查看: 609|回复: 0

[经验分享] SQL Server基础(三)

[复制链接]

尚未签到

发表于 2018-10-13 10:56:54 | 显示全部楼层 |阅读模式
  1、表数据操作
  表数据操作有四条基本语句:insert向数据表中添加记录,delete删除数据表中的记录,update修改数据表中的记录,select选择数据表中的记录
  DML(Data Manipulation Language)数据操纵语言:利用insert、select、update、delete等语句来操作数据库对象所包含的数据。
  DDL用于定义和管理对象,例如数据库、数据表以及视图。DDL语句通常包括每个对象的create、alter以及drop命令。
  总之,DML是数据语言,而DDL是定义语言
  2、用insert和values插入行:
  必须遵守表的约束,否则 INSERT 事务将失败,使用字段列表指定用于保存新数据的列,指定相应的值列表,VALUES:引入要插入的数据值的列表
  例:为northwind数据库中的customers表增加一行新数据
  USE northwind
  INSERT customers(customerid, companyname, contactname, contacttitle,address, city, region, postalcode, country, phone,fax)
  VALUES (‘PECOF’, ‘Pecos Coffee Company’,’Michael Dunn’,’Owner’, ‘1900 Oak Street’, ‘Vancouver’, ‘BC’,’V3F 2K1’, ‘Canada’,’(604) 555-3392’,’(604) 555-7293’)
  GO
  3、用insert和select插入行:
  所有满足 SELECT 语句的行都被插入最外层,必须检验被插入了新行的表是否存在数据库中,确保数据类型是兼容的,是否存在缺省值,或所有被忽略的列是否允许空值
  例:为northwind数据库中的customers表增加新数据
  USE northwind
  INSERT customers
  SELECT
  substring(firstname, 1, 3)

  + substring (lastname, 1,2),lastname, firstname,>  FROM employees
  GO
  4、可使用 SELECT INTO 语句创建一个表并在同一操作中往表里插入行:
  (1)可以创建局部的或全局的临时性表,当前会话结束,局部临时性表的空间被收回,当表不再被任何会话使用,全局临时表的空间会被收回
  (2)在选择列表中,必须为列起一个别名或指定新标的列的名字
  例:从northwind数据库中的products表中查询部分数据,并插入到临时表中,列包括: productname AS products,unitprice AS price, (unitprice * 0.1) AS tax
  USE northwind
  SELECT productname AS products,unitprice AS price,
  (unitprice * 0.1) AS tax
  INTO #pricetable
  FROM products
  GO
  5、使用top限制插入的行:
  USE northwind
  SELECT top 10
  productname AS products,unitprice AS price,
  (unitprice * 1.1) AS tax
  INTO #pricetable
  FROM products
  GO
  Select * from #pricetable
  如果要查询后10行,可以先倒序排列,再查top10
  6、插入部分数据:如果列有缺省值或允许空值,就可以在 INSERT 语句中忽略该列,SQL Server 将自动插入该值
  注意:只需列出正为insert语句提供数据所在列的名
  在字段列表中指定要提供值的列
  如果具有identity属性、允许缺省值或空值,则不必在字段列表中指定列
  不适用单引号,而是通过输入null来输入控制
  例:为northwind数据库中的shippers表增加新数据,只插入Companyname字段的数据
  USE northwind
  INSERT shippers (companyname)
  VALUES (‘Fitch & Mather’)
  GO
  SELECT * FROM shippers
  WHERE companyname = ‘Fitch & Mather’
  GO
  7、使用delete语句:
  (1)可在delete语句中加入where语句,否则将删除所有的行
  (2)可使用top限制删除的行
  (3)每个被删除的行都被存入事务日志中
  USE northwind
  delete shippers
  WHERE companyname = ‘Fitch & Mather’
  GO
  8、使用truncate table语句:
  (1)删除表中所有的行,但保留表的结构和与之相关的对象
  (2)truncate table语句比delete语句执行速度快
  (3)如果表中有identity列,truncate table语句会重新设置原始数据
  USE northwind
  TRUNCATE TABLE orders
  GO
  9、删除基于其他表的行:
  (1)使用附加的from子句
  第一个from子句指示哪一个表中的行被删除
  第二个from语句引入一个连接或准则,作为delete语句限制的条件
  (2)在where子句中指定条件
  使用子查询决定删除那些行
  DELETE [FROM] {表名 | 视图名}[FROM {} [,…n]][WHERE 搜索条件 ]
  10、根据表中数据更新行:
  (1)使用 WHERE 子句指出哪些行要更新
  (2)用 SET 关键字指定新值
  (3)输入值的类型必须与所定义的数据类型一致
  (4)不能更新违反任何完整性约束的行
  (5)每次只能修改一个表中的数据
  (6)可以同时把一个或多个列、变量放在一个表达式中
  例:更新northwind数据库中的products表使unitprice字段为原有值的1.5倍
  USE northwind
  UPDATE products
  SET unitprice = (unitprice * 1.5),列名=新值
  GO
  11、查询表的全部内容:Select *域[列名] from 表
  Select * from product
  12、比较操作符
  = 等于 > 大于 < 小于 >= 大于或等于 and>or
  从左到右
  例:查询northwind数据库中products表中的数据
  要求一:unitprice大于16
  要求二:productname以字母T开头,或者productid为16
  USE northwind
  SELECT productid, productname, supplierid, unitprice FROM  products WHERE (productname LIKE 'T%' OR productid = 16)   AND  (unitprice > 16.00)
  GO
  14、检索一定范围的值:使用between来查询在一定范围内的值
  注意:结果集中,包含范围内的边缘值
  尽量使用between,而不用and和比较操作符表示的表达式
  要使结果集不包含边缘值,则使用(>x and 500
  ORDER BY SUM(quantity)
  GO
  22、连接:把来自两个表的信息放置在一个结果集中
  分类:内部连接、外部连接、完全连接、交叉连接
  (1)内部连接:是连接类型中最普通的一种,与大多数连接一样,内部连接根据一个或几个相同的字段将记录匹配在一起,但是内部连接仅仅返回那些存在的字段匹配的记录。
  例1:Use northwind
  select products.*,suppliers.supplierid from products inner
  join suppliers on products.supplierid=suppliers.supplierid
  例2:use pubs
  select a.au_lname+', '+a.au_fname as author,t.title from authors a

  join>  (2)外部连接:外部连接时必需跟上左侧连接还是右侧连接。
  例:Use pubs
  select discounttype,discount,s.stor_name from discounts d
  left outer join stores s on d.stor_id=s.stor_id
  select discounttype,discount,s.stor_name from discounts d
  right join stores s on d.stor_id=s.stor_id
  (3)完全连接是将join两侧的数据全部匹配,并返回所有记录。
  例:Use pubs
  select discounttype,discount,s.stor_name from discounts d
  full join stores s on d.stor_id=s.stor_id
  (4)交叉连接不使用on运算符,而将join左侧的所有记录与另一侧的所有记录连接,返回的是join两侧表记录的笛卡尔积。
  例:Use pubs
  select discounttype,discount,s.stor_name from discounts d
  cross join stores s
  (5)Union是一个特殊的运算符,用于将两个或两个以上的查询产生一个结果集。
  例:use northwind
  select companyname ,
  address,
  city
  from customers
  union
  select companyname,
  address,
  city
  from suppliers
  23、子查询
  (1)IN关键字用来判断一个表中指定列的值是否包含在已定义的列表中,或在另一个表中。
  例:use northwind
  select * from customers where  customerid in
  (select distinct customerid from orders)
  (2)EXISTS表示子查询不需要返回多行数据,而只需要返回一个真值或假值。作用是在where子句中测试子查询返回的行是否存在。
  例:use northwind
  select * from orders where
  Exists(select *  from customers where customerid='alfki' )
  (3)Any表示,子查询返回值中至少有一个值与条件比较为真,就满足搜索条件。
  All表示,子查询返回的每个值与条件比较都为真,才满足条件
  Any只要与一个子查询结果运算是真成立
  All必须都与子查询的结果运算是真才成立
  例:use northwind
  select orderid,  freight from orders where freight

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-621068-1-1.html 上篇帖子: SQL Server 安全设置 下篇帖子: SQL Server基础(四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表