sql语言复习2
一、查询
select 字段列表 from 表名列表 [where 条件表达式][group by 字段列表[having 条件表达式]] [order by 字段列表[asc|desc]]
含义:在from后面给出的表中,按照where给定的条件,select出规定的字段列表。如何有group by 字段列表,则结果集按照group by 后面的字段列表排序,having 后面的条件表达式是分组时结果输出条件。order by 表示结果集按照其后面的字段列表进行升序或者降序排列。各个字段列表与表名列表之间用,逗号隔开。
单表查询:
select * from mag_emp
select EmpName,sexinfo,empage from mag_emp
select depname 部门名称, deptel as 联系电话 from mag_dept
select distinct emprole from mag_emp 去除重复
where字句的使用:
select empname, emprole from mag_emp where emprole='编辑'
select empname,emprole,empage,sexinfo from mag_emp where sexinfo ='男' and empage >=30
select empname,emprole,empage form mag_emp where empage ( not )between 25 and 40 (empage >=25 and empage <=40 )
select magid,designername from mag_info where designername in ('小樱','清泉','小米') equal (dn='*' or dn='*' or dn='*')
模糊查询:
% 代表匹配0个或多个字符 _ 代表一个字符 [ ] 匹配某区间的数据
select empage from mag_emp where empname like '张%'
select empname , permister from emp_mag where permister like '%核稿%'
select empname,depmanager ,deptel from mag_dept where deptel like '______2__'
select magid,designername from mag_info where magname='北京信息周报' and magid like '____20040[1-5]'
order by 子句的使用:(默认是升序 asc)
select * from mag_emp order by empage desc
select* from mag_emp order by empname
select * from mag_emp order by depid, empage desc (首先按第一排序字段排序,若第一字段相同,则按照第二字段排序)
多表查询:
select depname from mag_dept, mag_emp where mag_dept.depid=mag_emp.depid and empname='张斌'
select magname,designername,empage,emprole from mag_info i , mag_emp, mag_doc d where i.magid = d.magid and designername=empname and doctitle ='xxx'
以上通过采用别名的方法,将表分别命名为 i 和 d。然后引用命名后的变量进行条件的筛选。
查询聚合数据:
avg() sum() max() min() count() count(*)
select avg(empage),count(empid) from mag_emp
select avg(empage) '平均年龄' , count(empid) as '员工人数' from mag_emp
select sexinfo, avg(empage) '平均年龄' , count(empid) from mag_emp group by sexinfo
select depname,avg(empage) '平均年龄' from mag_emp, mag_dept where mag_dept.depid=mag_mag.depid and mag_emp.depid =2 group by depname,mag_emp.depid
嵌套查询:
嵌套查询可以解决多表查询问题,但要求主查询输出的字段必须来自于同一个表,可以嵌套多层
select empname,empage from mag_emp where empage>(select avg(empage) from mag_emp)
select depname from mag_dept where depid=(select depid from mag_emp where dmpname='xxx')
保存查询结果:
只需要在select与from中间加上into + 表名即可。
select Doctitle into #temp_title from mag_doc where wordssum > (select avg(wordssum) from mag_doc)
select * from #temp_title
二、数据更新
输入数据:
insert into 表名[字段] values ()
输入单个元组:
insert into mag_info values ('xxx','xxx','xxx','xxx','xxx','xxx')
insert into mag_emp(empname,sexinfo,empage,depid) values('chen','woman',23,1)
输入多个元组:
注意:下面的语句省略了into,因为我们这里输入的是多个元组,所以格式有所变化
insert dept_bak(depname,depmanger) select depname,depmanger from mag_dept
更改数据:
update 表名 set 列名=值[,列名=值,] [where 条件表达式]
update dept_bak set deptel='ssssss'
update dept_bak set deptel='11111' ,depmanager='xxxx' where depid=2
update stu set age = age + 4
删除数据:
delete from dept_bak
三、视图
视图是一种逻辑结构,是表示数据的一种形式。
用户可以通过视图对数据进行的操作将直接作用于数据表,但删除一个视图,则不会影响数据表中的任何数据
create view 视图名[(列名组)] [with encryption] as 子查询 [with check option]
其中,子查询可以说select语句,with encryption 表示对视图进行加密。with check option 表示对视图进行数据更新操作时,要保证其条件满足子查询。
还有就是,只能在当前数据库中使用视图,如果视图被删除,则当前视图不可用,需要重新创建新的视图或者基表。
create view 部门1 as select * form mag_dept where depid = 1
create view 中文排版人员信息 with encryption as select empid,empname,sexinfo,empage,emprole from mag_emp e, mag_dep d where e.depid=d.depid and depname='xxx' with check option
修改视图:
将create 变成alter即可。
alter view 部门1 (部门编号,部门名称,部门负责人,电话) as select * from mag_dept where depid = 1
使用视图:
将其当做表即可。
select * from 部门1
update 部门1 set 部门名称='中文编辑部' where 部门编号=1
删除视图:
drop view 视图名
drop view 部门1
其优点: 简化用户操作,不同视角看待数据,对数据提供安全保护
四、规则与默认值
规则与默认值同样可以实现数据完整性,但在定义与使用上却与约束不相同。
规则:
create rule 规则名 as 规则表达式
表达式中参数前需要加 @ 符号。
create rule age_rule as @age>=1 and @age <=100
create rule sex_rule as @sex in ('woman','man')
使用规则,前需要先绑定规则。
sp_bindrule 规则名,'表名.列名' 其中,sp_bindrule是一次存储过程。
sp_bindrule age_rule , 'mag_emp.empage'
insert into mag_emp(empname,sexinfo,empage,edpid) values('xxx','woman',321,1)
以上语句会报错,因为与我们定义的规则不符合。
查看规则: sp_helptext 规则名
sp_helptext sex_rule
解除规则:sp_unbindrule
sp_unbindrule 'mag_emp.empage', age_rule
删除规则:drop rule 规则名组
drop rule age_rule,sex_rule
创建与管理默认值:
create default 默认名 as 表达式
create default sex_default as 'woman'
使用默认值:
sp_binddefault sex_default ,'mag_emp.sexinfo'
查看默认值:
sp_helpconstraint mag_emp
解除默认值:
sp_unbinddefault '表名.列名','默认值'
sp_unbinddefault 'mag_emp.sexinfo',sex_default
删除默认值:
drop default sex_default
两种实现数据完整性方法的比较:
1、对象等级不同 数据库对象vs数据表对象
2、定义方法不同 创建的语句不一样,这节所用的方法更灵活
3、使用方法不同 本节所用方法,一次定义,多次使用。
sql语言复习2的更多相关文章
- Sql语言复习
一.创建数据库 创建和打开数据库 注意一点:在新建数据库的时候,一般放置数据文件与日志文件的位置,需要提前建立文件夹,不然会报错. 一般主数据文件,我们以.mdf结尾,次数据文件用.ndf结尾.对于日 ...
- sql语言不经常用,复习
sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) ...
- SQL基础复习1
一.概述 SQL语言组成:DDL,DCL,DML 二.数据定义 1.模式定义(Schema) Schema这个东西一直感觉不大明白,一直以为就是对表的字段定义则被称为Schema,在复习数据库理论中才 ...
- SQL语句复习【专题三】
SQL语句复习[专题三] DML 数据操作语言[insert into update delete]创建表 简单的方式[使用查询的结果集来创建一张表]create table temp as sele ...
- sql期末复习(二)
1.概念模式是对dba所看到的全局数据逻辑结构和特征的描述 概念模式是对数据整体的逻辑结构的描述 2.数据库网状模型应满足的条件是允许一个以上的结点无父结点,其余结点都只有一个父结点 3.sql语言中 ...
- 2016 - 3 - 12 SQLite的学习之SQL语言入门
1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...
- SQL 语言 - 数据库系统原理
SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...
- SQL语言
SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...
- SQL语言分类
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...
随机推荐
- DS博客作业05——树
1.本周学习总结 1.1思维导图 1.2学习体会 学习:相比于之前的数据结构,树多了很多性质,相应的也多了很多计算题,不得不说,专有名词也是颇多.觉得树最独特的地方就是它的兄弟.孩子结点,用以组成了它 ...
- iOS学习笔记46-Swift(六)扩展
一.Swift扩展 扩展就是向一个已有的类.结构体或枚举类型添加新功能,这包括在没有权限获取原始源代码的情况下扩展类型的能力.扩展和 Objective-C中的分类(category)类似,但是它要比 ...
- 网络编程之IO复用:select or epoll
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接.同时处理 ...
- 配置 MySQL 服务器容器
本文介绍在单一宿主机上如何配置自动备份.建议使用两个容器,其中一个容器作为 MySQL 的服务器,用来处理数据:另一个容器用于自动备份.这样保证隔离,避免备份的容器影响到 MySQL Server 的 ...
- BZOJ3507 [Cqoi2014]通配符匹配 【哈希 + 贪心】
题目 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个 是星号(""'),可以匹配0个及以上的任意字符:另一个是问号(&quo ...
- for语句执行顺序
for语句的结构如下所示: for(初始化;条件;调整) { 示例语句; } 第一次顺序:初始化 ->条件->示例语句 第二次顺序:调整->条件->示例语句 第三次顺序:调整- ...
- 关于C++的new是否会对内存初始化的问题
先把结论放上来: C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化:如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的 ...
- udp 多播2
11.3 多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信.单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信.实际情况下,经常 ...
- Devexpress控件中gridcontrol Drag a column header here to group by that column 更换
参照网站:http://documentation.devexpress.com/#WPF/DevExpressXpfGridDataViewBase_RuntimeLocalizationStrin ...
- Babel6.x的安装过程
1.首先安装babel-cli(用于在终端使用babel) npm install -g babel-cli 2.然后安装babel-preset-es2015插件 npm install --sav ...