第6讲 SQL语言概述
2016-04-24 18:30
344 查看
1.SQL语言是集DDL,DML,DCL为一体的语言。它主要由9个单词操作构成:
1)DDL : Create (建立),Alter(删除),Drop(撤销)。
模式的定义和删除。包括 Database,Table,View,Index.以及完整性约束条件等。
2)DML : Insert, Delete, Update, Select
各种问题的更新以及检索操作,比如插入一条记录,连接查找,模糊查找等。还有各种”聚集操作“,求平均,求和等。
3)DCL : Grant ,Revoke
安全控制:授权和不授权。
2.利用数据库语言建立数据库:在数据库SCT中,有以下Table
Student ( Snumber char(8), Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).
Dept ( Dnumber char(2) , Dname char(10) , Dean char(10)) ;
Course ( Cnumber char(3), Cname char(12) , Chourse int , Credit float(1) , Tnumber char(3) );
Theacher ( Tnumber char(3) , Tname char(10) , Dnumber char(2) , Salary float(2) );
Sc ( Snumber char(8) , Cnumber char(3) , Score float(1) );
建立数据库:包括两件事,定义数据库和表(使用DDL),向表中添加元组(使用 DML)
语法:创建数据库SCT: Create database SCT ; //表示建立数据库SCT
通用: Create database 数据库名
接下来可以定义表了:Create table 表明 (属性 数据类型[Primary key |Unique ] ,....)
例如建立表Student : Create table Student ( Snumber char(8) not null, Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).
其中:Primary key 表示为表的主键,每个表只有一个 。Unique:唯一性约束(即是候选键),可以有多个。
not null :非空约束,约束某一列不可为空。
表格里面涉及到的标准SQL语言的数据类型:
char (n) :固定长度为 n 的字符串。
Varchar (n):最大长度为 n 的字符串。
int :整数
numeric(p,q):固定精度数字,表示数字总长度为 p,小数点右边有q位。比如numeric(3,1)可以精确保存 45.3,但是不能保存4.53或者456.3这样的数字。
real ;浮点数
float(n) :精度至少为 n位的浮点数
定义了表格之后就可以向表中添加元素了;使用DML的insert语句:
语法: insert into 表名 (属性1,属性2....)
Values (值1,值2...)
需要注意的是,Values 后面值得排列与into 后面的属性名顺序是一致的。若是表后面的属性名省略,则Values后面的值得排列需要与表实际存储的属性顺序一致。
如;向学生表中插入一条信息:
insert into Student (‘98030101’ ,‘ 张三’ ,'男' ,20,‘03’,‘9803127’);
3.利用SQL语言进行简单的查询:
Select 语法形式:
Select name1 , name2,...
From 表名
Where 查询条件
语义解释:从表面给出的表中,查询出满足检索条件的元组。并按照给定的列名进行投影显示。
示列: 检索学生表中的所有信息。
Select Snumber ,Sname ,Ssex , Sage , Sclass , Dnumber
From Student ;
这种情况也可以写为:
Select * From Student ; 其中 * 表示了Student中所有的属性名 。
示例:检索学生表中所有学生的姓名及年龄 。
Select Sname , Sage
From Student ;
示例:检索学生表中所有的年龄小于19岁的学生的年龄和姓名 。
Select Sage , Sname
From Student
Where Sage < 19 ;
检索条件的书写:需要注意关系逻辑运算符的优先顺序,not,and,of。有时候要使用括号。
示例:检索教师表中所有工资小于1500或者工资大于2000元并且是03系的教师姓名。
Select Tname
From Theacher
Where (Salary<1500 or Salary > 2000 ) and Tnumber='03' ;
检索结果的唯一性:在检索结果中,有的时候要求无重复的元组是通过DISTINCT来实现的。
示例:在课程表中,检索成绩大于80分的所有学号 。
Select Snumber
From SC
Where Score>80 ;
//以上可能会有重复元组出现,比如有的同学不止一门成绩大于 80 。
Select DISTINCT Snumber
From SC
Where Score >80 ;
//这时候,如果有重复的元祖,就会被 DISTINCT过滤掉。
对结果进行排序:Select的语句中的结果的排序是通过 Order by 语句来实现。Order by 属性名 ;
含义为:对检索结果按照指定的熟悉名进行排序。后面跟asc 或者省略则为升序。后面跟 desc则为降序 。
示例:按照学号从小到大的顺序显示出所有学生的姓名以及学号 。
Select Sname ,Snumber
From Student
Order by Snumber (ASC); //括号里面表示可以省略
示例:检索002号课程成绩大于80的所有学生学号,并按照成绩又高到低的顺序显示 。
Select Snumber
From SC
Where Cnumber='002' and Score>80
Order by Score DESC ;
模糊查询问题:比如查询姓张的学生,检查张某某等。这类查询语句,Select是通过在检索条件中运用运算符 Like 来实现的。含有Like的表达式: 属性名 [not] Like "字符串 "。其中给定的字符串只可以出现 "%"或者"_ " 的匹配字符,规则如下:
"%" : 可以匹配0个或者多个字符
“_” :只可以匹配一个字符
“\” : 转义字符,用于去掉一些特殊字符 ,使其变为普通字符。比如用"\%"可以去匹配字符%,而“\_”是去匹配字符“_”.
示例:检索所有姓张的学生的学号和姓名 。
Select Snumber ,Sname
From Student
Where Sname Like '张%' ;
示例:检索姓名为张某某的所有同学姓名:
Select Sname
From Student
Where Sname Like '张__' ;
多表联合查询问题;
select 属性列
From 表1,表2,....
where 查询条件
上面表示的是一般的多表查询,他们表示的是一个广义的笛卡尔积。
更新操作:
insert 插入
Updata 更新
Delete 删除
插入语句: insert into 表名
Values (值1,值2,值3,...) --分别与表的属性对应
删除语句: Delete From 表名
where 删除条件 --删除满足删除条件的元组
Delete From 表名 ; --删除所有元组,但是关系还存在
更新语句 : Updata 表名
Set 列名=表达式(子查询)
where 更新条件; --更新满足更新条件的列
例如:将所有教师工资上调 10%
Updata teacher
Set salary=1.1*salary;
修正与撤销操作: alter table 表名
[add {cloname datatype}] //增加列属性
[drop (完整性约束名)] //删除完整性约束条件
[Modify {cloname datatype}] //修改列定义
例如:在学生表student中加上属性saddr ,PID
alter table student
add saddr char(40),PID char[30];
例如:将student表中的PID属性增加两个字符;
alter table student
Modify PID char[32];
撤销表:drop table 表名 ; //将表中数据和表的结构都删除
撤销数据库: drop database 数据库名; //将数据库删除
指定使用当前数据库: use 数据库名
关闭当期前数据库: close 数据库名
SQL Server基本知识:
SQL Server的系统数据库:
Master: 是SQL Server 中最重要的数据库,存储了SQL Server 中的元数据
Model : 模板数据库。在创建新的数据库的时候,SQL Server会复制此数据库作为新数据库的基础。
Masdb:代理服务数据库,提供一个存储空间Tempdb存储临时的数据库或表。断开连接后后都会被删除。
文件的三种扩产名: .mdf , .ndf ,.ldf
主数据库文件: .mdf .存储的数据库的启动信息,部分或者全部的数据。一个数据库只有一个主数据库文件。
辅助数据库文件: .ndf . 用于放置主数据库中其他的数据,可有多个。
日志文件: ldf .每个数据库至少有一个日志文件。
页面: SQL Server存储的最小单元,一页为8K
空间(extent):表示8个连续的页面64K,是数据库空间的一种单位。
数据库授权: 语法 grant 权限 on 表名 to 用户名
权限包括: select ,Updata,insert,delete,exec,dri.
1)DDL : Create (建立),Alter(删除),Drop(撤销)。
模式的定义和删除。包括 Database,Table,View,Index.以及完整性约束条件等。
2)DML : Insert, Delete, Update, Select
各种问题的更新以及检索操作,比如插入一条记录,连接查找,模糊查找等。还有各种”聚集操作“,求平均,求和等。
3)DCL : Grant ,Revoke
安全控制:授权和不授权。
2.利用数据库语言建立数据库:在数据库SCT中,有以下Table
Student ( Snumber char(8), Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).
Dept ( Dnumber char(2) , Dname char(10) , Dean char(10)) ;
Course ( Cnumber char(3), Cname char(12) , Chourse int , Credit float(1) , Tnumber char(3) );
Theacher ( Tnumber char(3) , Tname char(10) , Dnumber char(2) , Salary float(2) );
Sc ( Snumber char(8) , Cnumber char(3) , Score float(1) );
建立数据库:包括两件事,定义数据库和表(使用DDL),向表中添加元组(使用 DML)
语法:创建数据库SCT: Create database SCT ; //表示建立数据库SCT
通用: Create database 数据库名
接下来可以定义表了:Create table 表明 (属性 数据类型[Primary key |Unique ] ,....)
例如建立表Student : Create table Student ( Snumber char(8) not null, Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).
其中:Primary key 表示为表的主键,每个表只有一个 。Unique:唯一性约束(即是候选键),可以有多个。
not null :非空约束,约束某一列不可为空。
表格里面涉及到的标准SQL语言的数据类型:
char (n) :固定长度为 n 的字符串。
Varchar (n):最大长度为 n 的字符串。
int :整数
numeric(p,q):固定精度数字,表示数字总长度为 p,小数点右边有q位。比如numeric(3,1)可以精确保存 45.3,但是不能保存4.53或者456.3这样的数字。
real ;浮点数
float(n) :精度至少为 n位的浮点数
定义了表格之后就可以向表中添加元素了;使用DML的insert语句:
语法: insert into 表名 (属性1,属性2....)
Values (值1,值2...)
需要注意的是,Values 后面值得排列与into 后面的属性名顺序是一致的。若是表后面的属性名省略,则Values后面的值得排列需要与表实际存储的属性顺序一致。
如;向学生表中插入一条信息:
insert into Student (‘98030101’ ,‘ 张三’ ,'男' ,20,‘03’,‘9803127’);
3.利用SQL语言进行简单的查询:
Select 语法形式:
Select name1 , name2,...
From 表名
Where 查询条件
语义解释:从表面给出的表中,查询出满足检索条件的元组。并按照给定的列名进行投影显示。
示列: 检索学生表中的所有信息。
Select Snumber ,Sname ,Ssex , Sage , Sclass , Dnumber
From Student ;
这种情况也可以写为:
Select * From Student ; 其中 * 表示了Student中所有的属性名 。
示例:检索学生表中所有学生的姓名及年龄 。
Select Sname , Sage
From Student ;
示例:检索学生表中所有的年龄小于19岁的学生的年龄和姓名 。
Select Sage , Sname
From Student
Where Sage < 19 ;
检索条件的书写:需要注意关系逻辑运算符的优先顺序,not,and,of。有时候要使用括号。
示例:检索教师表中所有工资小于1500或者工资大于2000元并且是03系的教师姓名。
Select Tname
From Theacher
Where (Salary<1500 or Salary > 2000 ) and Tnumber='03' ;
检索结果的唯一性:在检索结果中,有的时候要求无重复的元组是通过DISTINCT来实现的。
示例:在课程表中,检索成绩大于80分的所有学号 。
Select Snumber
From SC
Where Score>80 ;
//以上可能会有重复元组出现,比如有的同学不止一门成绩大于 80 。
Select DISTINCT Snumber
From SC
Where Score >80 ;
//这时候,如果有重复的元祖,就会被 DISTINCT过滤掉。
对结果进行排序:Select的语句中的结果的排序是通过 Order by 语句来实现。Order by 属性名 ;
含义为:对检索结果按照指定的熟悉名进行排序。后面跟asc 或者省略则为升序。后面跟 desc则为降序 。
示例:按照学号从小到大的顺序显示出所有学生的姓名以及学号 。
Select Sname ,Snumber
From Student
Order by Snumber (ASC); //括号里面表示可以省略
示例:检索002号课程成绩大于80的所有学生学号,并按照成绩又高到低的顺序显示 。
Select Snumber
From SC
Where Cnumber='002' and Score>80
Order by Score DESC ;
模糊查询问题:比如查询姓张的学生,检查张某某等。这类查询语句,Select是通过在检索条件中运用运算符 Like 来实现的。含有Like的表达式: 属性名 [not] Like "字符串 "。其中给定的字符串只可以出现 "%"或者"_ " 的匹配字符,规则如下:
"%" : 可以匹配0个或者多个字符
“_” :只可以匹配一个字符
“\” : 转义字符,用于去掉一些特殊字符 ,使其变为普通字符。比如用"\%"可以去匹配字符%,而“\_”是去匹配字符“_”.
示例:检索所有姓张的学生的学号和姓名 。
Select Snumber ,Sname
From Student
Where Sname Like '张%' ;
示例:检索姓名为张某某的所有同学姓名:
Select Sname
From Student
Where Sname Like '张__' ;
多表联合查询问题;
select 属性列
From 表1,表2,....
where 查询条件
上面表示的是一般的多表查询,他们表示的是一个广义的笛卡尔积。
更新操作:
insert 插入
Updata 更新
Delete 删除
插入语句: insert into 表名
Values (值1,值2,值3,...) --分别与表的属性对应
删除语句: Delete From 表名
where 删除条件 --删除满足删除条件的元组
Delete From 表名 ; --删除所有元组,但是关系还存在
更新语句 : Updata 表名
Set 列名=表达式(子查询)
where 更新条件; --更新满足更新条件的列
例如:将所有教师工资上调 10%
Updata teacher
Set salary=1.1*salary;
修正与撤销操作: alter table 表名
[add {cloname datatype}] //增加列属性
[drop (完整性约束名)] //删除完整性约束条件
[Modify {cloname datatype}] //修改列定义
例如:在学生表student中加上属性saddr ,PID
alter table student
add saddr char(40),PID char[30];
例如:将student表中的PID属性增加两个字符;
alter table student
Modify PID char[32];
撤销表:drop table 表名 ; //将表中数据和表的结构都删除
撤销数据库: drop database 数据库名; //将数据库删除
指定使用当前数据库: use 数据库名
关闭当期前数据库: close 数据库名
SQL Server基本知识:
SQL Server的系统数据库:
Master: 是SQL Server 中最重要的数据库,存储了SQL Server 中的元数据
Model : 模板数据库。在创建新的数据库的时候,SQL Server会复制此数据库作为新数据库的基础。
Masdb:代理服务数据库,提供一个存储空间Tempdb存储临时的数据库或表。断开连接后后都会被删除。
文件的三种扩产名: .mdf , .ndf ,.ldf
主数据库文件: .mdf .存储的数据库的启动信息,部分或者全部的数据。一个数据库只有一个主数据库文件。
辅助数据库文件: .ndf . 用于放置主数据库中其他的数据,可有多个。
日志文件: ldf .每个数据库至少有一个日志文件。
页面: SQL Server存储的最小单元,一页为8K
空间(extent):表示8个连续的页面64K,是数据库空间的一种单位。
数据库授权: 语法 grant 权限 on 表名 to 用户名
权限包括: select ,Updata,insert,delete,exec,dri.
相关文章推荐
- 最全的MySQL基础【燕十八传世】
- coredata简单使用,插删改查
- 心碎的Basic SQL&Assignment
- mysql注入 4个参数
- Mysql学习
- Mysql 设置utf-8 真正一劳永逸的方法
- mysql简单操作(实时更新)
- 通过手动创建统计信息优化sql查询性能案例
- mysql 中主键和索引的关系和说明
- mysql表的字符集gbk转换成utf8测试
- MongoDB 3.0创建用户
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- 安装SQL2008的时候 出现System.Configuration.ConfigurationErrorsException: 创建 userSettings/Microsoft.SqlServe
- 数据库学习(1)--索引Index
- MySQL命令行操作复习
- Postgresql中的表id自增的方式的设置
- 一些小点------mysql 中文问题
- Redis——Redis与Log4Net完成了分布式日志记录
- Redis——Redis与Log4Net完成了分布式日志记录
- Ubuntu12.04中weka的使用