sql高级知识点(1)

limit :用于规定要返回的记录数目

不同数据库系统(规定要返回的记录数目)不同:

mysql:支持limit
oracle:支持rownum
SQL Server / MS Access:支持select top

limit怎么用:

SELECT*FROM websites
LIMIT 3

在这里插入图片描述

select top怎么用:

SELECT TOP 3 *FROM websites//选取前面3个记录
SELECT TOP 50 PERCENT *FROM websites//选取前面百分之50的记录

rownum怎么用:

SELECT *FROM websites WHERE ROWNUM <=3

like操作符:

%:替代多个字符或0个
_:替代一个字符

查询name以’G’开头的:

SELECT * FROM websites
WHERE NAME LIKE 'G%'

在这里插入图片描述
查询name包含’oo’的:

SELECT*FROM websites
WHERE NAME LIKE '%oo%'

在这里插入图片描述
查询name不包含’oo’的:

SELECT* FROM websites
WHERE NAME NOT LIKE '%oo%'

在这里插入图片描述
查询name第一个位置任意,后面跟’oogle’的:

SELECT*FROM websites 
WHERE NAME LIKE '_oogle'

在这里插入图片描述

使用用正则表达式查询

查询以’G’,'s’开头的name:

SELECT* FROM websites
WHERE NAME REGEXP '^[Gs]'
//关键词:regexp,可用rlike替换
SELECT *FROM websites
WHERE NAME RLIKE '^[Gs]'

在这里插入图片描述
查询开头是’A’到’Z’(包括了小写a-z)的name:

SELECT* FROM websites 
WHERE NAME REGEXP '^[A-Z]'

在这里插入图片描述
查询开头不是’A’到’H’的name:

SELECT* FROM websites
WHERE NAME NOT REGEXP '^[A-H]'
//
SELECT* FROM websites
WHERE NAME REGEXP '^[^A-H]'

在这里插入图片描述
in的使用(可在where语句中规定多个值):

SELECT* FROM websites
WHERE NAME IN('Google','菜鸟教程')

between的使用:

SELECT* FROM websites
WHERE alexa BETWEEN 1 AND 20

选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:

SELECT* FROM websites
WHERE country NOT IN('USA','IND')
AND (alexa BETWEEN 1 AND 20)

查询name’A’到’H’的网站:

SELECT *FROM websites
WHERE NAME BETWEEN 'A' AND 'H'
#下面是不在这个范围的
SELECT *FROM websites 
WHERE NAME NOT BETWEEN 'A' AND 'H'

表与列取别名(用as):

#w替代websites
select *from websites as w

表的连接:

inner join:如果表中有至少一个匹配,则返回行
在这里插入图片描述

#括号中的可以省略
SELECT websites.name,websites.url,access_log.count,access_log.date
FROM websites (INNER) JOIN access_log
ON websites.id = access_log.site_id

left join:即使右表中没有匹配,也从左表返回所有的行
在这里插入图片描述

SELECT*FROM websites 
LEFT (OUTER) JOIN access_log
ON websites.`id`= access_log.`site_id`

right join:即使左表中没有匹配,也从右表返回所有的行
在这里插入图片描述

SELECT*FROM websites
RIGHT (OUTER) JOIN access_log 
ON access_log.`site_id` = websites.`id`

full join(mysql不支持):只要其中一个表中存在匹配,则返回行
在这里插入图片描述
union:合并两个或多个select语句

SELECT id,country FROM websites
UNION
SELECT country,id FROM apps
#允许重复值用UNION ALL
SELECT country FROM websites
UNION ALL 
SELECT country FROM apps

注意:每个select语句查询的列数量需要相同,其次数据类型顺序一致虽然可以实现,但是显示会有问题,如下

SELECT NAME,country FROM websites
UNION ALL
SELECT country,app_name FROM apps

在这里插入图片描述
把表复制到另一个表中:
在这里插入图片描述

建表的一些约束:

NOT NULL - 指示某列不能存储 NULL 值。

UNIQUE - 保证某列的每行必须有唯一的值。

PRIMARY KEY - NOT NULLUNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

CHECK - 保证列中的值符合指定的条件。

DEFAULT - 规定没有给列赋值时的默认值。

AUTO INCREMENT - 会在新记录插入表中时生成一个唯一的数字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值