SQL常用实列

SQL UNION 实例

表中选取所有不同的country(只有不同的值):

select country from webs
union
select country from apps
order by country;

SQL UNION ALL 实例

表中选取所有的country(也有重复的值):
select country from webs
union all
select country from apps
order by country;

SQL SELECT INTO 实例

复制多个表中的数据插入到新表中:

select webs.name,access.count,access.date
into web2016
from webs
left join access
on webs.id=access.id;

SQL 约束

create table if not exsits per(
id bigint auto_increment comment '主键',
name varchar(20) not null comment '人员姓名',
work_id bigint not null comment'工作id',
create_time date default '2021-04-02',
primary key(id),
foreign key(work_id) references work(id)
)

create table if not exsits work(
  id bigint auto_increment comment '主键',
  name varchar(20) not null comment '工作名称',
  create_time date default '2021-04-02',
  primary key(id)
)

SQL SELECT TOP PERCENT 实例

表中选取前面百分之 50 的记录:

select top 50 percent *from Webs

MySQL SELECT LIMIT 实例

表中选取头两条记录:

select * from Webs limit 2;

CREATE INDEX 实例

create index PIndex 
on Persons(LastName,FirstName)

TRUNCATE TABLE 语句

仅仅需要删除表内的数据,但并不删除表本身:

truncate table  Webs

SQL ALTER TABLE 实例

“Persons” 表中添加一个名为 “DateOfBirth” 的列:

ALTER TABLE Persons
ADD DateOfBirth date

DROP COLUMN 实例

删除 “Person” 表中的 “DateOfBirth” 列:

alter table persons
drop column DateOfBirth

SQL CREATE VIEW 实例⭐

样本数据库 Northwind 拥有一些被默认安装的视图。

视图 “Current Product List” 会从 “Products” 表列出所有正在使用的产品(未停产的产品)。这个视图使用下面的 SQL 创建:

create view [Current Product  List] AS
select ProductID,ProductName
from Products
where Discontinued=No
select * from [Current Product List]

SQL 更新视图

视图添加 “Category” 列:

create view [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No

SQL 撤销视图

DROP VIEW 命令来删除视图:

DROP VIEW [Current Product List]

SQL Date 数据类型

MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

DATE - 格式:YYYY-MM-DD
DATETIME - 格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
YEAR - 格式:YYYY 或 YY

SQL 通用数据类型

CHARACTER(n)	字符/字符串。固定长度 n。
VARCHAR(n)    字符/字符串。可变长度。最大长度 n。
BINARY(n)	  二进制串。固定长度 n。
BOOLEAN	     存储 TRUEFALSEVARBINARY(n) 二进制串。可变长度。最大长度 n。
INTEGER(p)	整数值(没有小数点)。精度 p。
SMALLINT	整数值(没有小数点)。精度 5INTEGER	整数值(没有小数点)。精度 10BIGINT	整数值(没有小数点)。精度 19DECIMAL(p,s)	精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。
NUMERIC(p,s)	精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
FLOAT(p)	近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
REAL	近似数值,尾数精度 7FLOAT	近似数值,尾数精度 16DOUBLE PRECISION	近似数值,尾数精度 16DATE	存储年、月、日的值。
TIME	存储小时、分、秒的值。
TIMESTAMP	存储年、月、日、小时、分、秒的值。
INTERVAL	由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY	    元素的固定长度的有序集合
MULTISET	元素的可变长度的无序集合
XML	         存储 XML 数据

SQL Aggregate 函数⭐

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和

SQL Scalar 函数⭐

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式

GROUP BY 简单应用⭐

统计 access_log 各个 site_id 的访问量:

select site_id,sum(access_log.count) AS nums
from access_logs
group by site_id;

SQL GROUP BY 多表连接

下面的 SQL 语句统计有记录的网站的记录数量:

select Webs.name,count(access_log.aid) AS nums
from access_log
left join Webs
ON access_log.site_id=Webs.id
group by Webs.name;

嵌套查询

SQL HAVING 实例⭐

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。

想要查找总访问量大于 200 的网站:

SELECT Webs.name, Webs.url, SUM(access_log.count) AS nums 
FROM 
(access_log INNER JOIN Webs
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

SQL EXISTS 实例⭐

想要查找总访问量(count 字段)大于 200 的网站是否存在:

SELECT Webs.name, Webs.url 
FROM Webs
WHERE EXISTS 
(SELECT count FROM access_log WHERE Webs.id = access_log.site_id AND count > 200);

SQL Server 大小写用 UPPER() 和 LOWER()

大写:

SELECT UPPER(name) AS site_title, url FROM Webs;
小写:

SELECT LOWER (name) AS site_title, url FROM Webs;

SQL MID() 实例

SELECT MID(name,1,4) AS ShortTitle
FROM Webs;

SQL LEN() 实例

LEN() 函数返回文本字段中值的长度。

SELECT name, LENGTH(url) as LengthOfURL
FROM Websites;

SQL ROUND() 实例

ROUND() 函数用于把数值字段舍入为指定的小数位数。

select Round(1.298,1);

mysql> SELECT ROUND(1.298, 0);
        -> 1

SQL NOW() 实例

表中选取 name,url,及当天日期:

select name,url,Now() AS date
from Webs;

SQL FORMAT() 实例

用于对字段的显示进行格式化。

select name,url,Date_format(Now(),'%y-%m-%d')
AS date
from Webs
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gary jie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值