SQL学习整理_2

字符串处理,字符串函数不会改变存储在表中的数据内容,他们只是把函数结果当成查询结果返回。

1. SELECT right(name,2) FROM my_list   --从my_list列表中取出name列前两个字符,同理可使用left()

    SELECT right(name,len(name)-charindex(',',name)) FROM my_list  --取出逗号前的所有字符

2. SELECT substring(name,1,2) FROM tablename  --取出从第一个字符开始截取两个两个字符

3. 大小写转换 upper()  lower()

4. 反转字符串顺序  reverse()

5. 清除左边或右边空格  ltrim()  rtrim()

5. 返回字符串长度  len()

 

 

Case when then:

use test1
select stuid,stuname,
(case when stuid=1 then '11' when stuid=2 then '22' else '33' end) as temp
from dbo.Student

 

排序:order by

默认情况下,SQL按升序排列。如要按降序排序需加DESC。

可以指定两列作为排序依据,也可以指定两列按不同的排序,例如第一列升序,第二列降序

order by title ASC,name DESC

 

 SUM/AVG/min/max/count

Distinct 选取不重复的数值,是SQL中的一个关键字,不是函数,所以不用加() -- Select Distinct id from table

top 限制返回结果的数量, top 3 返回最上3条数据

mysql中为 limit 3

插入外键列的值必须已存在于父表的来源列中,这是引用完整性。 外键不一定必须是父表的主键,但必须具有唯一性。add constraint 约束名 foreign key() reference ()

 

范式规则:

第一范式1NF:

数据列只包含原子性的值,没有重复数据。

第二范式2NF:

已符合第一范式的表只有所有列都是主键的一部分,没有部分函数依赖。

第三范式3NF:

符合2NF,无传递依赖。

 

部分依赖就是非主属性对部分主键依赖

完全依赖就是非主属性必须全部依赖于组合主键

传递依赖就是非主列对非主列一列,随着另一列数据的改变而改变。

存在部分依赖则不满足2NF

存在传递依赖则不满足3NF

 

闭包:属性集的闭包就是属性集的每个子集以及根据每个属性可推导出的属性集。

 

创建新表是如需要对数据进行检测,可加check约束

create table a

sex char(2) check (sex in ('男‘,’女‘))

 

SQL是一种声明式语言,声明想要的数据是什么样的,而不是关注计算机怎么得到数据。

SQL的语句执行顺序不按你书写顺序执行,第一步是执行from字句,将数据从硬盘加载到数据缓冲区。

SQL的核心是对数据的引用,对表的引用。

 

---发于12/14/2016 11:13AM

posted @ 2016-12-14 11:14  闪耀的学士帽  阅读(142)  评论(0)    收藏  举报