数据库初级SQL语句

                        * 

数据库初级SQL语言

*

1、SQL查询语言预览

(1)数据定义语言(DDL):SQL DDL定义关系模式、删除关系、修改关系模式
(2)数据操纵语言(DML):SQL DML数据库的增删改查
(3)完整性:SQL DDL保存在数据库中的数据必须满足所定义的完整性约束
(4)视图定义:SQL DDL包括定义视图的命令
(5)事务控制:SQL包括定义事务开始和结束的命令
(6)嵌入式SQL与动态SQL
(7)授权:SQL DDL包括定义视图和关系访问的权限

2 、SQL数据定义

2.1基本类型

char 定长 最多8000个字符(非unicode编码)
char(10) 如“小小” 前四个字符存放“小小” 后面用六个空格补全
varchar 变长 最多8000个字符(非unicode编码)
varchar(10) 如“小小” sql server会自动给它分配四个字符,这样可以节省空间
ntext(unicode编码)变长 最大长度为2的30次方-1个字符
text(非unicode编码)变长 最大长度为2的31次方-1个字符
nchar(unicode编码)定长 最多4000个字符
nvarchar(unicode编码)变长 最多4000个字符
Numeric(p,d) 如numeric(3,1) 可以精确的存储44.5

2.2基本模式定义

CREATE TABLE nihao
(
id int ,
name VARCHAR(10) not NULL,
sex VARCHAR(10) not NULL,
primary key (id),
FOREIGN key (name) REFERENCES student
);

3查询语句的基本结构

3.1(单表查询)

SELECT *
from nihao
WHERE nihao.id=1

3.2(多表查询)

SELECT *
from nihao,student
WHERE nihao.name=student.name 注:先from ,再where ,然后select

3.3(自然连接)

SELECT *
from nihao NATURAL JOIN student
where nihao.id=1

4附加的基本运算

4.1更名运算(AS)

SELECT A.id
from nihao as A, student as B
where A.id=B.id

4.2字符串运算(like)

百分号%:匹配任意子串
下划线_ :匹配任意一个字符
如:_ _ _ 表示只含三个字符的字符串
_ _ _%表示至少含有三个字符串

4.3 select子句的说明

Nihao.*表示Nihao的所有属性
Select *表示from的所有属性

4.4 显示次序(order by)

Select * from nihao where id>8 order by id desc

4.5where子句谓语

Select nihao.*
From niaho
Where id>8 and sex=男

5 集合运算(union,intersect,except)(并,交,差)

例如:
(Select nihao1.id from nihao1) union (Select nihao2.id from nihao2)

6.空值(null)的处理 略

7.聚集函数(avg min max sum count )

7.1 基本聚集(avg min max sum count )

Select count(*) from nihao where sex=男

7.2分组聚集 (group by)

Select nihao.id, count(*) from nihao where sex =男 group by name

7.3 having子句

Having 子句的谓词在形成分组后才起作用
Selecct dept_name ,avg(salary)as avg_salary
From instructor
Where year=2015
Group by dept_name
Having avg(salary)>4200
操作的次序:
(1)根据from计算出一个关系
(2)如果出现了where,那么where 谓词将作用到from子句的关系之上
(3)如果出现了group by,满足where谓词的元组通过group by 形成分组,如果没有出现group by ,那么将满足where的整个集合当成一个分组
(4)如果出现了having,他将作用到每个分组上,不满足的分组将被抛弃
(5)最后是select

7.4 对空值和布尔值的聚集

8嵌套子查询

8.1 集合成员资格 (in /not in)

例如:
Select course_id
From sectoin
Where semester =‘Fall’ and course in ( select course from section where semester=”Spring” )

例如:
Select name from instructor where name not in( “kg”,”ni”)

8.2 集合的比较

例如:(至少比某一个大)
Select name from instructor where salary > some ( select salary from instructor where dept_name =”English”)
(比所有的都大)
Select name from instructor where salary > all ( select salary from instructor where dept_name =”English”)

8.3 空关系的测试(exists)

Exists结构在作为参数的子查询非空时返回true
找出在2009年秋季和2010年春季同时开课的所有课程:
Select course_id from section as s where semester =”Fall ” and year=2009 and
Exists ( select * from section as T where
semester =”Spring ” and year=2010 and
S.course_id=T.course_id)

找出选修了生物Biology系所开设的所有课程的学生
Select S.ID,S.name from student as S where not exists (
Select course_id from course where dept_name=”Biology”
Except
Select T.course_id from task as T where S.ID=T.ID
)

8.4重复元组的存在性(unique)

找出所有在2009年最多开设一次的课程
Select T.course_id from course as T where unique (
Select R.course_id from section as R where T.course_id = R.course and R.year=2009
)

9数据库的修改

9.1 删除
9.2插入
9.3更新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值