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 NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
AUTO INCREMENT - 会在新记录插入表中时生成一个唯一的数字