前置基础知识:
关系型数据库的基本要素是二维表。这些二维表可以被独立使用或者通过使用Join语句连接起来使用。主键(primary key)和外键(foreign key)是用来连接二维表之前的重要工具。
主键是用来唯一地标识一行数据。而且主键列必须包含唯一的值,并且不能包含空值(null)
主键可以建立在每张二维表中单列或者多列上。
一张二维表上的外键可以引用另一张二维表上对应的主键。
在SSMS中选中查询语句,按F5执行
基本的语法结构
SELECT <table fields list> //选出所需要的fields/列
FROM <table names list> //从**table里
WHERE <row constraints specification> //对行row做一些限制条件
GROUP BY <grouping specification> //指一些集合运算--比如取平均数
HAVING <grouping selection specification> //针对刚才的集合运算进行一些限制条件
ORDER BY <order rules specification> //结果进行排序--
1.SELECT...FROM...语句是必须的
2.WHERE,GROUP BY以及ORDER BY三个语句不是必须的
select相关语法
SELECT * FROM [Production].[Product] //* 星号表示所有列
SELECT Top 100 FROM [Production].[Product] //前100行
手动打库名表明可以不用加方括号[],
在SSMS中,也可以拖动表明进去语法区,默认有方括号
SELECT * FROM SALES.SALESORDERDETAIL
SELECT ProductID, Name, Number, Color, Size, ListPrice FROM Production.Product
//对于查询结果按照name关键字进行排序desc-倒序,asc正序
SELECT ProductID, Name, Number, Color, Size, ListPrice
FROM Production.Product
ORDER BY name desc
//对于查询结果按照name和color进行排序
SELECT ProductID, Name, Number, Color, Size, ListPrice
FROM Production.Product
ORDER BY name desc,color
//对于查询结果按照select的第二个条件,也就是name进行正序排列
SELECT ProductID, Name, Number, Color, Size, ListPrice
FROM Production.Product
ORDER BY 2
在SSMS中,同时选中两个select语句会产生两个相应的查询结果列表。
select相关语法2
//将查询出来的数据中,color列中为null的值替换为空,来显示。//color列的列名会变成No column name
SELECT ProductID, Name, Number, isnull(Color,’’), Size, ListPrice
FROM Production.Product
//Color列的列名变为Color123
SELECT ProductID, Name, Number, isnull(Color,’’) as Color123, Size, ListPrice
FROM Production.Product
SELECT ProductID, Name, Number, Color as Color123, Size
, rate*40*52 as newRate
, round(rate*40*52,1) as nowRate2 //小数点之后的四舍五入保留1位(就是个位)比如:153.10,121.30
, round(rate*40*52,0) as nowRate2 //小数点之后的四舍五入保留0位(就是个位)比如:153.00,121.00
FROM Production.Product
where相关语法2
SELECT * FROM Production.Product
WHERE ID=5 //其他写法:WHERE ID>5 WHERE name=’小明’
// =,>,<,>=,<=,<>, <>不等于的意思
SELECT * FROM Production.Product
WHERE ID=5 or name=’小红’ //ID等于5或者name为小红的数据
SELECT * FROM Production.Product
WHERE ID=5 and name=’小红’ //
SELECT * FROM Production.Product
WHERE ID=5 and name=’小红’ and Orderdate between ‘2005-01-05’ and ‘1/2/2006’ //between...and... 注意斜线的写法规则:月/日/年
SELECT * FROM Production.Product
WHERE name like ’aa’ //name字段为aa的数据
SELECT * FROM Production.Product
WHERE name like ’%aa%’ // 姓名里包含aa的数据 %符号 %aa%,表示在aa前可以有或没有任何字符,在aa后可以有可以没有任何字符
SELECT * FROM Production.Product
WHERE name like ’%aa’
SELECT * FROM Production.Product
WHERE name like ’_aa%’ //姓名里包含_aa的数据, _表示忘记这个位置是什么值了,且aa后可以有可以没有任何字符。
SELECT * FROM Production.Product
WHERE color in (’red’,’black’,’blue’)//找出color列里值为 red,black,blue的值
SELECT * FROM Production.Product
WHERE size in (’60’,’61’,’62’)
SELECT * FROM Production.Product
WHERE color not in (’red’) //找出color列里值不为 red的值
SELECT * FROM Production.Product
WHERE color is null //color列所有值为null的数据
SELECT * FROM Production.Product
WHERE color is not null //color列所有值不为null的数据
常用的语法
count() //数一下有多少行,输出一个数字
SELECT count(uuID)
FROM Production.Product
WHERE uuID is not null
distinct() //去重
SELECT distinct(color)
FROM Production.Product
WHERE color is not null
SELECT count(distinct(uuID)) //先去重,再查多少个
FROM Production.Product
WHERE uuID is not null
集合运算
SELECT Avg(payNumb) as payNumb2 //求平均数
FROM Production.Product
SELECT
Avg(payNumb) as payNumb2 //求平均数
,Min(payNumb) as minPay //最小值
,Max(payNumb) as maxPay //最大值
,Sum(payNumb) as sumPay //总和
FROM Production.Product
SELECT ppID,Max(payNumb) as payNumb2
FROM Production.Product
where ppID is not null
--group by ppID //--表示注释
order by ppID
网友评论