SQL学习日历

2019.09.25

  • SQL对大小写不敏感,SELECT与select没有区别。
  • SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。

某些数据库系统要求在每条 SQL 命令的末端使用分号。分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML 部分:

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

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:

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

普通查询

select 列名, 列名 from 表名
// 查询所有列
select * from 表名
// 去掉重复值(distinct)
select distinct 列名 from 表名
// 有条件的查询(where、and、or):
select 列名 from 表名 where 列名 运算符 值

运算符:

运算符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式(模糊查询)

and、or用来连接两个及以上限制条件。and表示两个都成立,or表示其中一个成立。

select 列名 from 表名 where 列名 运算符 值 and 列名 运算符 值
select 列名 from 表名 where 列名 运算符 值 or 列名 运算符 值

对结果集进行排序(order by):

// 升序排序
select 列名 from 表名 order by 列名
// 降序排序
select 列名 from 表名 order by 列名 desc
insert into

普通插入

insert into 表名 values(值1, 值2, …)
// 指定要插入数据的列
insert into 表名(列1, 列2, …) values(值1, 值2, ….)
update

修改表数据:

update 表名 set 列名 = 新值 where 列名 = 值
delete
// 删除表数据(行)
delete from 表名 where 列名 =  值
// 删除所有行(不删除表,表结构、属性、索引都保持完整):
delete from表名
delete * from 表名
top

定义:TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
注释:并非所有的数据库系统都支持 TOP 子句。

SQL Server语法

// 数值写法
select top number|percent 列名 from 表名
// 百分比写法
select top 50 PERCENT列名 from 表名

MySQL语法:

select 列名 from 表名 limit number

Oracle语法:

select 列名 from 表名 where ROWNUM <= number
like

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

select 列名 from 表名 where 列名 like 模式

示例:

// ‘%’定义通配符
// 查询居住在以N开头的城市里的人
select * from Persons where City like ‘N%’
// 查询居住在以g结尾的城市里的人
select * from Persons where City like ‘%g’
// 查询居住在包含lon的城市里的人
select * from Persons where City like ‘%lon%’
// 查询居住在不包含lon的城市里的人
select * from Persons where City not like ‘%lon%’
通配符

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

通配符描述
%匹配一个或多个字符
-仅替代一个字符
[charlist]字符列中的任何单一字符
[^charlist] / [!charlist]不在字符列中的任何单一字符

IN

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

select 列名 from 表名 where 列名 in (value1, value2, …)
between

定义:BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

select 列名 from 表名 where 列名 between value1 and value2
// 选取范围之外
select 列名 from 表名 where 列名 not between value1 and value2

重 要 事 项 \color{#FF3030}{重要事项} :不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。某些数据库会列出介于 “Adams” 和 “Carter” 之间的人,但不包括 “Adams” 和 “Carter” ;某些数据库会列出介于 “Adams” 和 “Carter” 之间并包括 “Adams” 和 “Carter” 的人;而另一些数据库会列出介于 “Adams” 和 “Carter” 之间的人,包括 “Adams” ,但不包括 “Carter” 。

别名(Aliases)

可以为表和列指定别名。

// 表的语法
select 列名 from 表名 as 别名
// 列的语法
select 列名 as 别名 from 表名
JOIN

定义:join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
JOIN 类型,以及它们之间的差异:

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

INNER JOIN
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

select 列名 from 表1 inner join 表2 on 表1.列名 = 表2.列名

注释:INNER JOIN 与 JOIN 是相同的。
LEFT JOIN
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

select 列名 from 表1 left join 表2 on 表1.列名 =  表2.列名

注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
Persons表:
在这里插入图片描述
Orders表:
在这里插入图片描述

select p.LastName, p.FirstName, o.OrderNo
from Persons as p
left join Orders o
on p.Id_P = o.Id_p
order by p.LastName

结果集:
在这里插入图片描述

RIGHT JOIN
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

select 列名 from 表1 right join 表2 on 表1.列名 = 表2.列名

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
FULL JOIN
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

select 列名 from 表1 full join 表2 on 表1.列名 = 表2.列名

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 “Persons” 中的行在表 “Orders” 中没有匹配,或者如果 “Orders” 中的行在表 “Persons” 中没有匹配,这些行同样会列出。
UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

select 列名 from 表1
union
select 列名 from 表2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

select 列名 from 表1
union all
select 列名 from 表2

2019.10.21

CAST

CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。

// 语法
CAST (expression AS data_type) 
// 示例 
SELECT CAST('12.5' AS decimal(18,4)) from tablename

expression:任何有效的SQServer表达式。
AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

  • 二进制,同带binary前缀的效果 : BINARY
  • 字符型,可带参数 : CHAR()
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

原文链接:https://blog.csdn.net/qq_21101587/article/details/78642423

复制表:

create table table2 like table1

复制表数据:

insert into SINGLEVIEW_APP select * from SINGLEVIEW where xxx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值