SQL 笔记(深入篇)

查询数据库表名为: Websites
拥有字段: id、name、url、alexa、country

1.SELECT TOP
select top 子句用于规定要返回的记录的数目。
注意:并非所有的数据库系统都支持 select top 语句。MySQL 中有 limit 语句来选取指定的条数数据,Oracle 中则可以使用 Rownum 来选取。
语法:Select top 选取数量 * from 表名
例子
1) SELECT TOP 50 PERCENT * FROM Websites ;
2) MySQL: SELECT * FROM Websites id LIMIT 2 ;

2.LIKE
like 操作符用于在 where 子句中搜索列中的指定模式。简单的来讲就是模糊查询。
语法:Select * from 表名 where 字段名 like '%内容%'。
注意:like 后方的内容必须用单双引号进行包含。
例子
SELECT * FROM Websites WHERE name LIKE '%oo%' ;

3.通配符
通配符可用于代替字符串中的任何其他字符。
在 SQL 中,通配符通常与 LIKE 操作符一起使用。
SQL 中,有以下几种通配符:
  • %:代替 0 个或者多个字符。
  • _:代替一个字符。
最常用的为上述两种。
注意:因为查询的是字符,所以需要使用单双引号进行包含。

4.IN
in 操作符允许在 where 子句中规定多个值。
语法:Select * from 表名 where 字段名 in (value,value,...)
注意:如果是字符串类型,需要使用单双引号进行包含,否则则不需要。
例子
SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程')

5.BETWEEN
Between 操作符用于选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期
语法:Select * from 表名 where 字段名 between value1 And value2。
例子
SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20

6.AS(别名)
通过使用 SQL,可以为表名称或列名称指定别名。基本上别名是为了让列名称的可读性更强。
语法:
1)列的别名:Select 字段名 AS 别名 from 表名。
2)表的别名:Select 字段名 from 表名 AS 别名。
例子
列别名:SELECT name AS m FROM Websites
表别名:SELECT name FROM Websites AS w where w.name = 'Google'
注意:表别名一般使用在多表查询的时候。

7.JOIN(连接)
Join 用于吧两个或多个表的行结合起来。基于这些表之间的共同字段。
常用的 Join 类型有:
  • Inner Join:如果表中有至少一个匹配,则返回行。【通常使用】
  • Left Join:即使右表中没有匹配,也从左表返回所有的行。【不常用】
  • Right Join:即使左表没有匹配,也从右表中返回所有的行。【不常用】
  • Full Join:只要其中一个表存在匹配,则返回行。【不常用】
例子
1)Inner Join:
Select w.id,w.name,a.count,a.date
From Websites AS w
INNER JOIN access_log AS a
ON w.id = a.site_id
# where 条件
2)Left Join:
Select w.id,w.name,a.count,a.date
From Websites AS w
Left JOIN access_log AS a
ON w.id = a.site_id
# where 条件
Right Join 和 Full Join 同上述两个例子相同。

8.Union
Union 操作符合并两个或多个 Select 语句的结果。
注意:Union 内部的每个 Select 语句必须拥有相同数量的列。列也必须有相似的数据类型。同时每个 Select 语句中的列的顺序必须相同。
默认的 Union 操作符选取不同的值。如果允许重复的值,请使用 Union all。
语法:
Select 字段名 from 表名
Union
Select 字段名 from 表名
例子
Select country,name from Websites where country = 'CN'
union all
Select country,app_name from apps where country = 'CN'
# order by country 排序
注意:在这里 order by 排序添加在最后,无需在每个 select 里面进行添加。

9.Select Into
Select Into 语句是复制一个表的数据,然后把复制的数据插入到另一个新表中。
注:MySQL 数据库不支持 Select Into,但是支持 Insert Into...Select。
语法:Select * Into 新表 from 旧表
例子
Select * Into WebsitesBackup from Websites
# 通常该语句是用来备份表用的。

10.Create DataBase(创建库)
用于创建数据库。
语法:Create DATABASE 库名。
例子
Create DATABASE my_db

11.Create table(创建表)
用于创建数据库中的表。
表由行和列组成,每个表都必须有个表名。
语法:Create TABLE 表名 (字段名 字段类型(长度),字段名 字段类型(长度),....);
例子
Create TABLE Persion
( PersionID int,
Name varchar(255),
address varchar(255),
sex varchar(255),
age int
);

12.约束
约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定,或者在表创建之后规定。
SQL 中 约束如下:
  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。一般用于主键的定义。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值得参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值的默认值。
注:具体约束的创建不做详细解释。一般用图形界面话工具可以进行直接定义。

13.Create Index(索引)
Create Index 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
用户无法看到索引,它们只能被用来加速搜索/查询。
注:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想做法是仅仅在常常被搜索的列(以及表)上面创建索引。
语法:Create Index 索引名称 ON 表名称 (字段名称)

14.DROP 【慎用】
删除索引、表、数据库。
注:最好不要使用 Drop 来进行删除。因为删除后数据库数据是不可恢复的。

15.ALTER
alter 语句用于在已有的表中添加、删除或修改。
语法:
1)添加列:alert table 表名 add 字段名 字段类型
2)删除列:alert table 表名 drop column 字段名。
3)修改列:alert table 表名 alter column 字段名 字段类型。
例子
1)添加列:alert table Persion add DateOfBirth date。
2)删除列:alert table Persion drop column DateOfBirth。
3)修改列:alert table Persion alter DateOfBirth int。

16.Auto Increment
Auto Increment 会在新记录插入表中时生成一个唯一的数字。
我们通常希望在每次插入新记录时,自动地创建主键字段的值。
例子
MySQL:
Create Table Persion
id int not null auto_increment,
name varchar(255) not null,
age int,
sex varchar(255)not null,
primary key(id)
注:这里具体就举例 MySQL 数据库实例。

17.Views(视图)
视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
向视图添加 SQL 函数、where、以及 Join 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。
语法:
新建视图:Create view 视图名 AS Select 字段名 From 表名 Where 条件 # 可省略。
更新视图:Create or replace 视图名 AS Select 字段名 From 表名 Where 条件 # 可省略。
删除视图:Drop view 视图名。
查询视图:Select * from 视图名。
例子
新建视图 :Create view dw_user_view AS Select * from dw_user。
更新视图 :Create or replace view dw_user_view AS Select * from dw_user。
删除视图 :Drop view dw_user_view。
查询视图 :Select * from dw_user_view。

18.Null
Null 值代表遗漏的未知数据。默认的,表的列可以存放 null 值。
如果表中的某个列是可选的,那么我们可以在不向该列添加值得情况下插入新记录或更新已有的记录。但是这意味着该字段将以 null 值保存。
这里主要讲 is null 和 is not null 两种操作符。
1)is null
用于搜索列中带有 null 值得记录。
语法:Select * from 表名 where 字段名 is null。
例子Select * from dw_user_view where age is null。
2)is not null
用于搜索列中不带有 null 值得记录。
语法:Select * from 表名 where 字段名 is not null。
例子Select * from dw_user_view where age is not null。

文章笔记摘录于:http://www.runoob.com/sql/sql-tutorial.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值