数据库梳理(持续更新)_空青~十二的博客-程序员秘密

技术标签: database  C++基础  数据库  sql  

基础语法

操作用法

SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据

CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

SELECT

语法:

SELECT 列名称 FROM 表名称

例子:

SELECT LastName,FirstName FROM Persons

DISTINCT

释义:

关键词 DISTINCT 用于返回唯一不同的值

语法:

SELECT DISTINCT 列名称 FROM 表名称

WHERE

语法:

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

例子:

SELECT * FROM Persons WHERE City='Beijing'
提示: SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
操作符 描述
= 等于
<>(!=) 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

AND & OR

释义:

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

语法:
例子:

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'

ORDER BY

释义:

ORDER BY 语句用于根据指定的列对结果集进行排序(默认ASC升序排序)。 如果您希望按照降序对记录进行排序,可以使用 DESC关键字。

语法:
例子:

SELECT Company, OrderNumber FROM Orders ORDER BY Company
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

INSERT

释义:

INSERT INTO 语句用于向表格中插入新的行。

语法:

INSERT INTO 表名称 VALUES (1,2,....)
INSERT INTO table_name (1,2,...) VALUES (1,2,....)

例子:

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

UPDATE

释义:

Update 语句用于修改表中的数据。

语法:

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

例子:

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

DELETE

释义:

DELETE 语句用于删除表中的行。

语法:

DELETE FROM 表名称 WHERE 列名称 =

例子:

1. DELETE FROM Person WHERE LastName = 'Wilson'

删除所有行,可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的
2. DELETE FROM table_name 或者 DELETE * FROM table_name

进阶

TOP

释义:

TOP 子句用于规定要返回的记录的数目(对于拥有数千条记录的大型表来说,TOP 子句是非常有用的)。

语法:

SELECT TOP number|percent column_name(s) FROM table_name

例子:

SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons //(50%)

LIKE

释义:

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

语法:

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

例子:

SELECT * FROM Persons WHERE City LIKE 'N%'  //"%" 可用于定义通配符(模式中缺少的字母)
SELECT * FROM Persons WHERE City LIKE '%g'  //"%" 通配符在前代表选取以 "g" 为末尾的匹配项
SELECT * FROM Persons WHERE City NOT LIKE '%lon%'  //NOT 不包含

通配符

释义:

  1. 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
  2. SQL 通配符必须与 LIKE 运算符一起使用。

语法:
例子:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'	 //第一个字符后是"eorge"
SELECT * FROM Persons WHERE City LIKE '[ALN]%'	    //选取居住的城市以 "A" 或 "L" 或 "N" 开头的人
SELECT * FROM Persons WHERE City LIKE '[!ALN]%'    //选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人
通配符 描述
% 代表零个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]
或者 字符列中的任何单一字符
[!charlist]

IN

释义:

IN 操作符允许我们在 WHERE 子句中规定多个值

语法:
例子:

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')  *//选取姓氏为 Adams 和 Carter 的人*

BETWEEN

释义:

  1. BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
  2. 不同的数据库的取决范围不一样( 有的取决于"[)",还有的"()",或者"[]" ) 。
  3. 这些值可以是数值、文本或者日期。

语法:

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 AND value2

例子:

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'
SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'

Alias

释义:

通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

语法:

 1. 表的 SQL Alias 语法
 SELECT column_name(s) FROM table_name AS alias_name
 2. 列的 SQL Alias 语法
 SELECT column_name AS alias_name FROM table_name

例子:

 1. SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po
 2. SELECT LastName AS Family, FirstName AS Name FROM Persons

JOIN

释义:

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

语法:
例子:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

除了我们在上面的例子中使用的 INNER JOIN(内连接),还有其他的 JOIN 类型,以及它们之间的差异:
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

释义:
语法:
例子:

常用梳理

Key主键 —— 唯一标识

以时间为例
create table 表名(时间 datetime PRIMARY KEY)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LZY6319/article/details/120290723

智能推荐

个人永久性免费-Excel催化剂功能第69波-专业图表库新增图表-刘万祥老师中国地图..._aoxikui0458的博客-程序员秘密

Excel催化剂的【专业图表库】,仅提供一个工具的输出,让用户可以在制作专业图表过程中更低的门槛,更快速的完成所想要实现的图表。具体参考:第69波-打造最专业易用的商务图表库https://www.jianshu.com/p/914d075418cf专业的图表,仍需要广大图表爱好者乐于分享的精神多多贡献自己的作品才能有真正的实质性的内容丰富度。感谢国内图表大师-刘万祥老师的带头作...

MongoDB之Aggregate聚合管道的通用管道符与分页查询的实现_mongo aggregate 分页_追梦少年FKS的博客-程序员秘密

聚合查询格式:db.getCollection("集合名字").aggregate([ ])聚合条件语句$match:db.getCollection("集合名字").aggregate([ { $match:{sex:4} }])聚合分组语句$group与统计个数count:(_id:null统计整个文档)db.getCollection("集合名字").aggre...

用C语言程序编写字体,程序员都爱用这些字体写代码!_柚圆美的博客-程序员秘密

对于很多编程人员来说,有些字体写出来的代码,不仅看起来赏心悦目,而且写代码的时候非常方便。但是很多程序员都是使用编辑器所默认的字体,这样写出来的代码,不仅千篇一律,而且枯燥无味。下面我们就来看看,究竟哪些字体写出来的代码更美观,哪些字体更适合写代码!1.字母的宽度一致或称为等宽字体,由于代码文件是普通文本,不带样式的,所以宽度一致易于排列和对齐,能迅速找到位置,提高可读性。印刷术中这种等宽字体称之...

大作业程序人生_lyrjy的博客-程序员秘密

Hello被程序员编译出.c文件,这是它的前身,它的生命由这里开始,被预处理后,它引用的文件被复制进来,这是它的第一次完善,之后它被编译器处理成汇编语言文件,这使得它能被作用于某一个特定的系统。而后,汇编器将他翻译为机器语言文件,但仅就此,它还不能被实际运行,直到链接器完成重定位工作,它才真正成为可以被加载到内存中执行的程序。之后,在shell窗口中,他被bash父进程fork出子进程,并execve,在这里它完成了它的使命,并在这里结束生命,在它结束时传递SIGCHLD信号并被父进程回收,这就是hel

随便推点

高级编程技术(Python)作业3_Ashero00的博客-程序员秘密

3-7 缩减名单:你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。 - 以完成练习3-6时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。 - 使用pop() 不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。 - 对于余下的两位嘉宾中的每一位,都打印一条消息...

[Poj 2187] 计算几何之凸包(二) {更高效的算法}_weixin_30832983的博客-程序员秘密

{承上一节继续介绍点集的凸包(下文中所有凸包 若不做特殊说明均指点集的凸包)这一节介绍相比更高效的算法}====================================================================一.卷包裹算法(Gift Wrapping Algorithm)的特性前面提到过卷包裹算法的复杂度问题由于卷包裹算法是两重...

java 求圆锥_LeeYtongxue的博客-程序员秘密

class Circle{ public double radius; Circle(double radius){  this.radius=radius; } public void setRadius(double radius){  this.radius=radius; } public double getRadius(){  return radi

jquery.tmpl.js 展示序号_code-jam的博客-程序员秘密

html&lt;script id="tmplOrderItem" type="text/x-jquery-tmpl"&gt; &lt;tr&gt; &lt;td&gt;${$item.getOrderIndex()}&lt;/td&gt; &lt;td&gt;${PreOrder}&lt;/td&gt; &lt;td&gt;${OldTableID}&lt;/td&gt; &lt;td&gt;

stm32.TIM定时器编码器模式_stm32 tim 编码器模式_Xuan-ZY的博客-程序员秘密

最近用到编码器控制电机,因为编码器用到了定时器的输入捕获功能,初学时候没有认真去看,这边打算结合代码重新整理一遍。编码器接口模式1.选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则置SMS=011。通过设置TIMx_CCER寄存器中的CC1P和CC2P位,可以选择TI1和TI2极性;如果需要,还可以对输入滤波器编程。两个输入TI1和TI2被用来作为

华为ensp 错误代码 :40_ensp报错40_802.1Q的博客-程序员秘密

华为ensp 错误代码 :40华为模拟器ensp在初次安装后容易出现模拟设备起不来并且报 错误代码:40的情况针对上面出现的这种情况在我经历中只要做下面几步都可解决:目前可以见到的ensp软件有两个版本:ensp安装教程可自行百度,,太多了其中:R002版本安装后因为安装包自带了virtual vm box软件,但是因为VBox已知更新的原因,现在002版本自带的VBox因为版太低运行不了,因此安装该版本的同学安装后需要先卸载vbox然后去官网下载一个高一点的版本的软件,但不能用最新版本!!