当前位置: 首页 > news >正文

SQL 必知必会

 

主键(primary key)

  唯一标识表中每行的这个行称为主键。主键列中的值不允许修改或更新。

SQL:

  Structured Query Language,结构化查询语言。

  不区分大小写。为了便于阅读,SQL关键字大写,对所有列和表名小写。

  忽略空格,所以SQL可以分成很多行。

SELECT

  检索数据

SELECT prod_id, prod_name, prod_price
FROM Products;
--使用SELECT语句从表Products中选择数据,指定了3个列名,列名之间用逗号分隔。

输出:

prod_id    prod_name        prod_price
----------------------------------------------------    
BNBG01     Fish bean bag toy   3.4900 
...

FROM 关键字指出从其中检索数据的表名。

 

排序检索数据

子句(clause)通常由一个关键字和数据组成。

ORDER BY

顺序:应保证是SELECT语句中最后一条子句。

多个列排序:

先按其中两个列对结果进行排序,先价格,后名称。

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;

按列位置排序:

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 23

降序排列:

ORDER BY prod_price DESC, prod_name; 

升序是默认的。

 

过滤数据

WHERE

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;

BETWEEN AND 组合

高级数据过滤

WHERE  a OR b AND c

有计算次序,a 或者 b+c

AND 比 OR 的计算次序优先级高。

 

IN

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;

IN 较OR的好处,直观,执行快,可以包含(SELECT语句)

not

WHERE NOT

MySQL 中的NOT没有这种用法。

 

用通配符进行过滤

  通配符(wildcard)、搜索模式(search pattern)

谓词:LIKE

SELECT prod_id, prod_name
FROM Products 
WHERE prod_name LIKE 'Fish%';

接受Fish 后的任意字符

搜索是区分大小写的 'fish%' 与Fish 将不匹配

下划线 (_) 通配符

类似填空题。。。 _ 总是匹配一个字符

方括号 ([] )通配符

  [] 用来指定一个字符集

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;

输出:

cust_contact
----------------
Jim Jones
John Smith
Michelle Green

[JM],单个字符,意为开头为J或M

[^JM],否定的意思

 

创建计算字段

  字段(field),基本上等于列(column),用在计算字段的连接上。

  

  拼接(concatenate),将值联结到一起构成单个值。

  Access、SQL Server、Sybase 使用+号

  DB2、Oracle、PostagreSQL、Sybase 使用||号

SELECT vend_name + '(' + vend_country + ')'
FROM Vendors
ORDER BY vend_name;
---------------------------
Bear Emporium         (USA  )

MySQL 中的拼接,不支持 + 或 || 的拼接,它使用CONCAT() 函数。

 

RTRIM(),格式化数据,去掉值右边的空格。

LTRIM(),去掉左边的空格

TRIM(), 去掉两边的空格

  SELECT RTTIM(vend_name) + '(' + RTRIM(vend_country) + ')'

  ...

 

AS,使用别名

例如:

SELECT RTRIM(vend_name) + '(' + RTRIM(vend_country)+')' AS vend_title

...

意为将 vend_name替换为vend_title

 

转载于:https://www.cnblogs.com/IDRI/p/5791403.html

相关文章:

  • Javascript学习4 - 对象和数组
  • Ubuntu 14.04下安装GitLab指南
  • 黄渊普:媒体视角--O2O与传统零售
  • Makefile学习之make 的运行【转】
  • [原]unity3d刀光剑影(二)
  • C#设计模式之外观
  • MDK调试错误之HardFault_Handler
  • Dom4j
  • Java基础work4
  • NIO入门系列之第9章:字符集
  • 新语言学习
  • Leetcode | Permutations II
  • C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息
  • 跳前端坑前,先看看这个!!
  • AWR报告导出
  • __proto__ 和 prototype的关系
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 2019年如何成为全栈工程师?
  • 3.7、@ResponseBody 和 @RestController
  • Android单元测试 - 几个重要问题
  • flask接收请求并推入栈
  • JavaScript设计模式与开发实践系列之策略模式
  • Laravel 菜鸟晋级之路
  • react 代码优化(一) ——事件处理
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 前嗅ForeSpider采集配置界面介绍
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一起参Ember.js讨论、问答社区。
  • Java性能优化之JVM GC(垃圾回收机制)
  • 大数据全解:定义、价值及挑战
  • ​linux启动进程的方式
  • #Linux(权限管理)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)(1.13) SiK无线电高级配置(六)
  • (33)STM32——485实验笔记
  • (C++20) consteval立即函数
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (三分钟)速览传统边缘检测算子
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .chm格式文件如何阅读
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET CORE Aws S3 使用
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET Standard 的管理策略
  • .NET 反射的使用
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET面试题(二)
  • .Net中ListT 泛型转成DataTable、DataSet
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [1] 平面(Plane)图形的生成算法
  • [Android] Android ActivityManager
  • [Angular 基础] - 表单:响应式表单