mysql21天自学通_SQL21天自学通

出自:http://blog.csdn.net/greatverve/archive/2008/11/13/3289732.aspx

SQL21自学通

P18

第一周

第一天

1.SQL函数,联合查询及子查询(嵌于查询中的查询)

Structured Query Language(结构化查询语言)

RDBMS(关系型数据库管理系统)

2.非过程性语言,即与具体过程无关.

SQL只描述如何对数据进入检索,插入,删除.

并不说明如何进行这样的操作,如何操作是sql server的事.

P20

1.十二条规则

P23

设计数据库的结构

第二天

P32

1.sql语句大小写不敏感,但查询条件,即数据项是区分大小写的.

2.select 列1 列2 from table --排序

3.select distinct amount from table

4.select 与 select all是等价的.

第三天  表达式,条件语句与运算

P42

1.where name = 'tree' --根据=号来返回值true或false

2.where 工资 > 2000

3.select price price+10 from table

允许创建一个虚拟列或对已有的列进行组合或修改后产生的派生列.

4.select (price+10) newPrice from table

别名,

5.减号的作用,可以取负,也可以减去.

6.空值与空白值区分.

select * from table where name = null;

7.select state < 'la'

结果st:co//il

8.<>不等于!=

9.where name like '%tree%'

10.where like '张_强'

11.select firstname || lastname 全名 from table

12.select day1 day2 合并后 from table where day1 - day2 > 10

13.or not and

集合

1.union从两个表中查询,并且返回不重复的.

select name from table1

union

select name from table2

2.union all包括重复的.

3.交集intersect

select name from table1

intersect

select name from table2

4.存在于第一个表,不在第二个表(minus)

select name from table1

minus

select name from table2

5.范围in  between

select name from table

where

name in('tree','crane','zhpch');

6.

select * from table

where

age between 20 and 30;

第四天

对数据的进一步处理

P62

1.count,sum,avg,max,min基于列的运算.

2.方差variance(price)

3.日期操作

select add_months(ddate,6) from table

where

add_months(ddate,5) > enddate;

4.last_day(enddate)指定月份的最后一天.

5.闰年

select last_day('2008-01-02') non_leap,last_day('2008-01-02') leap from table

6.

select name months between(startDate,endDate) 之间 from table;

7.nextday,sysdate

8.数学函数,正弦,余弦.

select abs(price) 绝对值 from table;

9.字符操作函数,转换大小写

select upper(name) from table

10.扩充或取消lpad,rpad

select lpad(name,20,'*') from table

11.剪除ltrim,rtrim左剪右剪

ltrim(name,'*')剪除name左边的*

12.replace替换

select replace(name,'e','*') replaceName from table;

13.substr部分输出

select substr(name,2,3) from table;

14.translate(目标字符串,源字符串,目的字符串)

select name,translate(name,123abc,nnnaaa) from table;

这样,数字被替换为n,字母被替换为a

15.满足特定内容的位置instr

select name , instr(name,'e',2,1) from table;

16.length(name)

转换函数

1.数字转字符

select to_char(age) from table;

2.字符转数字to_number

其他函数

1.select user from table;

第五天SQL中的子句

P97

1.where , starting with ,order by ,group by,having

2.starting with与like相似

where name starting with('tr');

3.group by

select name sum(amount) from table group by name

先分组,再汇总。

select name sum(amount),count(payee) from table group by payee,remarks;

4.分组,没有清晰的概念,再研究吧。

5.having

由于用于计算的函数,不能放在where子句中。所以有了having

select team,avg(salary) from table group by team having salary<38000;

having里可以使用运算符,比如逻辑运算。

第六天:表的联合

P121

1.select * from table1,table2

2.如果往表里添加字段,是麻烦的事。所以可以再建一个表,关联起来。

3.select o.orderID,o.Name,p.partNum,p.Description from orders o,part p

4.等值联合

select * from t1,t2 where t1.id=t2.id

5.联合查询如果没有条件限制,则成了笛卡尔积,非常庞大。

6.根据给定的条件返回行数最少的表会作为驱动表--也就是基表。

除基表以外,其它表通常是向基表联合以便更有效地获得数据。

7.不等值联合

where o.num>p.num

8.外部联合与内部联合。

内部:个表内的行与本表内的数据相互进行联合。

没有where语句。

select p.num,p.description,o.name,o.num

from part p join orders o on orders.num=54

外部:表间的联合。

右联合

from part p right outer join orders o on orders.num=54

返回右边表集内的全部记录,左边没有值则补以空值。

用+号

where e.id = ep.id(+) and e.name like '%mith'

ep.id将会全部显示。

内连接,即交叉连接。外连接,相当于并集吧。大概意思。

http://topic.csdn.net/t/20050514/17/4006860.html

9.表的自我联合

select a.num,a.description,b.num,b.description

from tabel1 a,table2 b

where a.num=b.num and a.description <> b.description

第七天:子查询:内嵌的sql子句

P138

1.子查询是把一种查询的结果作为参数,返回给另一个查询的一种查询。

2.exist,any和all

3.

select * from table1 where table1.someNum =

(select someOtherNum from table2

where someOtherNum = someValue)

4.在子查询中使用汇总函数

select o.name from orders 0 part p

where

o.num=p.num and

o.quantity * p.price >

(select avg(o.quantity*p.price)from

orders o,part p where o.num=p.num)

5.子查询,嵌套

select c.name .. from customer c

where c.name in

(select o.name from orders o,part p

where o.num=p.num

and

o.quantity*p.price>(select..)

)

6.exist

select name from orders where

exits

(select * from orders where name='')

7.any与子查询中的每一行与主查询进行比较,并对子查询中的每一行返回一个true值。

where name>any()

总结

select * from 表A where exists(select * from 表B where 表B.id=表A.id)

这句相当于

select * from 表A where id in (select id from 表B)

对于表A的每一条数据,都执行select * from 表B where 表B.id=表A.id的存在性判断,如果表B中存在表A

当前行相同的id,则exists为真,该行显示,否则不显示

exits适合内小外大的查询,in适合内大外小的查询

P157第二周

第八天,操作数据

1.insert into table valuse ('1','2','3')

或insert into table(item1,item2,item3)

values('1','2','3')

2.空值和零或者空格不是一回事。

3.避免重复列的方法

if not exists(select * from collection where name='tree')

insert into collection values('tree',50,'');

3.insert select

insert into table1

select * from table2

4.外部数据的导入导出

几乎所有的数据库系统都可以导入或导出ASCLL码的文本文件。

第九天

P176创建和操作表

1.create database my#db

2.建立数据字典

大多数提供数据字典的工具包。

3.主关键字和外关键字

主关键字保证每一条记录都是唯一的。

外关键字,是在其它关系中可用作匹配字段的一种关键字。

P179不好的数据库设计与好的数据库设计

1.有一点,就是重复数据过多。

2.create table tablename(name char(30),amount number,account_id number);

create table bills(

name char(30) not null)

3.alert table

4.drop table

第十天

P193创建视图和索引

create view

create index

都是通过对数据预排序和预定义显著提高表的工作性能。

1.create view envelope(company,mailing_address)as

select name,address+''+city+','+state

from company

2.创建了视图,还可以对视图应用查询。

select * from my_view1 where count>500

3.视图限制

不能使用union操作

不能使用order by但有相同的操作。

4.对于单表视图,可以执行update或delete操作

5.多表不可以执行delete操作。

除非底层表的所有非空列都已经在视图中出现,否则你不能使用insert语句。

6.create view view1 as

select * from table1 where name in

(select * from table2)

7.索引

使用unique关键字时强制性地保证数据的完整性

可以容易地用索引字段或其他字段进行排序

提高查询的执行速度

8.

create index index_name

on

table(column1,column2);

9.索引与order by的区别

order by每次都要排序

索引是建立在数据库中的物理对象

10.复合索引

11.避免重复

create unique index unique_id_name

on

bills(account_id,name)

go

select * from bills

go

12.create index desc_amount

on

bills(amount desc);

13.索引与归并

14.群集(簇)的使用

第十一天

P223事件处理控制

事务是指在逻辑上必须完成的一命令序列的单位。

整个过程,要么全部终止,要么每件事都是正确的。

set transaction read only --锁定记录集

select * from customers

where name='Bill';

commit;

select

lock table

set role

alter session

alter system

Sybase语法

begin transaction new_account

insert customers values('tee','eee')

if exist(select * from customers where name='tree')

begin

begin transaction

insert balances values(123.3,34)

end

else

rollback transaction

if exists(select * from balances where account_id=8)

begin

begin transaction

insert accounts values(8,6)

end

else

rollback transaction

if exists(select * from account where account_id=8 and customer_id=6)

commit transaction

else

rollback transaction

go

上面是事务的嵌套

默认情况下set autocommit on命令自动运行。

它告诉sql自动确认你所运行的所有语句。

如果不想让这个命令自动运行,将它的参数设为no

set autocommit off

结束事务处理

保存点。

save transaction save_it

...

rollback transaction save_it

commit transaction

P238数据库安全

谁应该得到数据库管理员权限

有多少个用户需要访问数据库系统

每个用户应该得到什么析的权限与角色

当一个用户不再访问数据库时应该如何去删除它

1.用户,角色,权限

create user username identified by password

alter user username identified by newpwd

alter user username default tablespace users

drop user username

2.创建角色

角色是允许用户在数据库中执行特定功能的一个或一组权限。

grant role to user [with admin option]

revoke role from user;

orcle三种角色

Connect,Resource,DBA

grant connect to username

connect允许创建表,更新数据。等正常操作。

Resource允许创建过程,触发机制和索引。

3.用户权限

grant system_privilege to {username}

grant create view to public

grant select on table1 to username

select * from username.table1

略读

P255高级SQL

第十三天

grant授权,revoke废除,identifier标识符

P267存储过程

1.执行带参数的存储过程

create procedure pro1

@pname char(40),

@psummary char(30) output

as

select @psummary=summary from mytalbe where pname=@pname

go

执行方法

declare @return_summary char(30)

exec pro1,@return_name=@name output

print @pname

go

存储过程的嵌套,即可以互相调用。

2.创建虚表

P274触发器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
轻轻松松学数据库!!SQL Server 2008是微软的SQL Server数据库中的最新版本,在该版本的数据库产品中融入了更多商业智能的内容。本书中也使用了一篇专门讲解了与商业智能有关的一些内容。 本书总分为5篇,共21章。第一篇主要讲解数据库的基础,包括数据库的概念及安装。第二篇讲解数据库管理的常用知识,包括数据库的管理、表的管理、确保数据的完整性及用户权限的设置等内容。第三篇主要讲解SQL的编程,包括T-SQL语言、存储过程及触发器。第四篇讲解与商业智能有关的内容,包括集成服务、报表服务和分析服务。最后一篇是综合案例篇,分别使用.NET和Java语言实现了与SQL Server 2008的连接,并完成了图书管理系统和在线订餐系统。 第一篇 SQL Server 2008基础篇 第1章 学习数据库的准备 ( 教学视频:58分钟) 15 1.1 认识数据库 15 1.1.1 为什么要使用数据库 15 1.1.2 认识数据库产品 15 1.2 了解数据库对象 17 1.2.1 表 17 1.2.2 视图 17 1.2.3 索引 18 1.2.4 存储过程 18 1.2.5 触发器 18 1.3 认识SQL语言 18 1.3.1 什么是SQL 18 1.3.2 SQL语言的分类 19 1.4 绘制E-R图设计数据库 20 1.4.1 绘制E-R图的基本要素 20 1.4.2 E-R图绘制实例 22 1.5 小结 24 1.6 习题 24 第2章 数据库的安装 ( 教学视频:26分钟) 26 2.1 SQL Server 2008版本介绍 26 2.1.1 SQL Server 2008服务器版 26 2.1.2 SQL Server 2008专业版 26 2.2 SQL Server 2008环境需求 27 2.2.1 SQL Server 2008 Enterprise的 软硬件要求 27 2.2.2 SQL Server 2008 Enterprise Evaluation的软硬件要求 28 2.3 安装SQL Server 2008 29 2.3.1 自己动手安装SQL Server 2008 29 2.3.2 安装示例数据库 39 2.4 认识SQL Server Management Studio (企业管理器) 40 2.4.1 访问SQL Server Management Studio 40 2.4.2 SQL Server Management Studio 菜单简介 42 2.4.3 查询编辑器窗口 43 2.4.4 对象资源管理器 44 2.4.5 SQL编辑器 44 2.5 小结 45 2.6 习题 45 第二篇 SQL Server 2008管理篇 第3章 数据库操作 ( 教学视频:43分钟) 47 3.1 在SSMS中创建数据库 47 3.1.1 数据库命名需要注意的问题 47 3.1.2 数据库的所有者与权限 48 3.1.3 创建数据库 48 3.2 在SSMS中修改数据库配置 52 3.2.1 使用SSMS修改数据库配置的 用步骤 52 3.2.2 在SSMS中添加数据库文件 53 3.2.3 在SSMS中删除数据库文件 53 3.2.4 修改数据库的所有者 55 3.2.5 限制用户的访问 56 3.2.6 设置用户对数据库的使用权限 57 3.2.7 修改数据库名称 59 3.3 使用SQL语句创建、修改、 删除数据库 59 3.3.1 用CREATE DATABASE语句 创建数据库 59 3.3.2 用ALTER DATABASE语句 修改数据库 60 3.3.3 用DROP DATABASE语句 删除数据库 62 3.4 附加与分离数据库 63 3.4.1 分离数据库 63 3.4.2 附加数据库 64 3.5 编写数据库脚本文件 66 3.6 综合练习 67 3.7 小结 69 3.8 习题 69 第4章 数据表操作 ( 教学视频:39分钟) 71 4.1 认识数据类型 71 4.1.1 字符型数据类型 71 4.1.2 数值型数据类型 72 4.1.3 日期和时间数据类型 73 4.1.4 其他数据类型 73 4.2 创建数据表 74 4.2.1 创建数据表的语法 74 4.2.2 创建主键 75 4.2.3 使用SSMS创建表 76 4.2.4 创建标识列 78 4.3 修改表结构 79 4.3.1 修改表结构的语法 80 4.3.2 在SSMS中修改表结构 82 4.4 表的删除、截断与重命名 82 4.4.1 使用SSMS删除和重命名表 83 4.4.2 使用DROP TABLE语句删除表 83 4.4.3 截断表 84 4.4.4 重命名表 85 4.5 小结 85 4.6 习题 85 第5章 确保数据完整性 ( 教学视频:89分钟) 87 5.1 认识约束 87 5.1.1 什么是约束 87 5.1.2 约束的类型 88 5.1.3 约束的语法 89 5.2 使用约束 90 5.2.1 利用SSMS创建主键约束 90 5.2.2 利用T-SQL增加主键约束 91 5.2.3 利用SSMS创建外键约束 92 5.2.4 利用T-SQL增加外键约束 93 5.2.5 利用SSMS工具创建CHECK 约束 94 5.2.6 利用T-SQL增加CHECK约束 95 5.2.7 利用SSMS工具删除约束 96 5.3 事务的使用 96 5.3.1 什么是事务 96 5.3.2 事务的特性 97 5.3.3 事务的模式类型 97 5.3.4 事务的保存点 99 5.4 并发控制 100 5.4.1 并发访问的问题 100 5.4.2 SQL Server中的锁 101 5.4.3 查看活跃事务 102 5.4.4 事务隔离级别 104 5.4.5 事务隔离级别的设置 104 5.5 事务的阻塞 105 5.6 死锁 107 5.6.1 死锁的产生 107 5.6.2 处理死锁 108 5.6.3 预防死锁 109 5.7 索引 109 5.7.1 认识索引 110 5.7.2 索引的创建 111 5.7.3 索引的管理 113 5.8 小结 115 5.9 习题 116 第6章 用户和权限管理 ( 教学视频:37分钟) 117 6.1 用户管理 117 6.1.1 创建使用Windows身份验证的 SQL Server 登录名 117 6.1.2 创建使用SQL Server身份验证的 SQL Server登录名 120 6.1.3 利用Transact-SQL创建 登录账号 121 6.1.4 创建数据库用户 122 6.1.5 使用Transact-SQL创建 数据库用户 123 6.1.6 登录账号和数据库用户的关系 124 6.2 认识角色 125 6.2.1 角色的划分 125 6.2.2 创建角色 127 6.2.3 给用户授予角色 128 6.3 认识权限 129 6.3.1 数据控制语言语法 129 6.3.2 给用户授予权限 131 6.4 架构 131 6.4.1 认识架构 132 6.4.2 架构的创建使用 133 6.4.3 架构的修改删除 134 6.5 小结 134 6.6 习题 135 第7章 数据的导入/导出与备份/恢复 ( 教学视频:27分钟) 136 7.1 了解SQL Server导入和导出向导 136 7.2 导入/导出数据 138 7.2.1 数据的导出 138 7.2.2 数据的导入 142 7.3 数据备份 145 7.3.1 认识数据备份 145 7.3.2 使用SSMS工具备份数据库 146 7.3.3 使用SSMS工具差异备份数据库 147 7.4 恢复数据 148 7.4.1 认识恢复数据 148 7.4.2 如何修改恢复模式 149 7.4.3 使用SSMS恢复数据库 150 7.5 小结 151 7.6 习题 151 第8章 使用SQL Server 2008中 自动化管理功能 ( 教学视频:20分钟) 153 8.1 认识SQL Server代理 153 8.1.1 什么是SQL Server 代理 153 8.1.2 使用SQL Server代理 154 8.2 认识作业 155 8.2.1 什么是作业 155 8.2.2 创建作业 156 8.2.3 管理作业 160 8.3 认识警报 163 8.3.1 创建警报 164 8.3.2 在警报中触发作业 165 8.3.3 管理警报 166 8.4 认识操作员 166 8.4.1 创建操作员 167 8.4.2 管理操作员 169 8.5 小结 169 8.6 习题 170 第9章 查询数据 ( 教学视频:64分钟) 171 9.1 在SSMS中查看数据 171 9.2 使用简单SELECT语句查询数据 171 9.2.1 查询表中所有数据 171 9.2.2 查询表中指定字段的数据 172 9.2.3 查询结果中去除重复信息 174 9.2.4 根据现有列值计算新列值 174 9.2.5 命名新列 175 9.2.6 将查询结果保存为新表 176 9.2.7 连接字段 177 9.3 使用SELECT语句获取满足查询 条件的数据 178 9.3.1 指针与字段变量的概念 178 9.3.2 条件表达式 179 9.3.3 WHERE子句用法 181 9.3.4 根据条件查询数值数据 182 9.3.5 根据条件查询字符数据 183 9.3.6 根据条件查询日期数据 184 9.3.7 按范围查询数据 185 9.3.8 查询NULL值 186 9.4 排序查询数据 186 9.4.1 按单列排序 187 9.4.2 设置排序方向 187 9.4.3 按多列排序 188 9.4.4 按字段位置排序 188 9.4.5 查询前5行数据 189 9.4.6 WHERE与ORDER BY的 结合使用 189 9.5 高级条件查询 190 9.5.1 AND运算符 190 9.5.2 OR运算符 191 9.5.3 AND与OR的优先顺序问题 192 9.5.4 NOT运算符 193 9.5.5 IN运算符 193 9.5.6 LIKE运算符与“%”配符 195 9.5.7 “_”配符的使用 197 9.5.8 “[]”配符的使用 197 9.5.9 定义转义字符 198 9.6 小结 199 9.7 习题 199 第10章 函数与分组查询数据 ( 教学视频:42分钟) 201 10.1 系统函数 201 10.1.1 聚合函数 201 10.1.2 类型转换函数 202 10.1.3 日期函数 204 10.1.4 数学函数 206 10.1.5 字符函数 207 10.1.6 其他几个系统函数 208 10.2 分组查询 212 10.2.1 将表内容按列分组 212 10.2.2 聚合函数与分组配合使用 214 10.2.3 查询数据的直方图 215 10.2.4 排序分组结果 215 10.2.5 反转查询结果 216 10.2.6 使用HAVING子句设置 分组查询条件 217 10.3 小结 218 10.4 习题 218 第11章 多表连接查询和子查询 ( 教学视频:79分钟) 220 11.1 连接查询 220 11.1.1 使用无连接规则连接两表 220 11.1.2 使用有连接规则连接两表 221 11.1.3 使用多表连接查询数据 222 11.1.4 使用表别名简化语句 223 11.1.5 使用INNER JOIN连接查询 223 11.1.6 连接查询实例 224 11.2 高级连接查询 226 11.2.1 自连接查询 226 11.2.2 内连接查询 227 11.2.3 左外连接查询 229 11.2.4 右外连接 230 11.2.5 全外连接 230 11.2.6 交叉连接查询 230 11.2.7 连接查询中使用聚合函数 232 11.2.8 高级连接查询实例 233 11.3 组合查询 235 11.3.1 使用组合查询 236 11.3.2 使用UNION的规则 237 11.3.3 使用UNION得到复杂的统计 汇总样式 238 11.3.4 排序组合查询的结果 238 11.3.5 组合查询的实例 239 11.4 子查询 240 11.4.1 使用返回单值的子查询 240 11.4.2 子查询与聚合函数的配合使用 241 11.4.3 子查询的实例 241 11.5 在SSMS查询设计器中设计查询 242 11.6 综合练习 245 11.7 小结 246 11.8 习题 246 第12章 插入、更新和删除数据 ( 教学视频:39分钟) 248 12.1 在SSMS中插入、更新、删除数据 248 12.1.1 插入数据 248 12.1.2 更新数据 249 12.1.3 删除数据 249 12.2 使用INSERT语句插入数据 250 12.2.1 插入完整的行 250 12.2.2 向日期时间型字段插入数据 251 12.2.3 将数据插入到指定字段 251 12.2.4 将查询结果插入表 252 12.3 使用UPDATE语句更新数据 254 12.3.1 更新单个字段的数据 254 12.3.2 更新多个字段的数据 255 12.3.3 使用表连接更新数据 256 12.3.4 使用UPDATE语句删除 指定字段的数据 256 12.4 使用DELETE语句删除数据 257 12.4.1 使用DELETE语句删除 指定记录 257 12.4.2 在DELETE语句中使用 多表连接 258 12.4.3 使用DELETE语句删除 所有记录 259 12.5 使用TRUNCATE语句删除 所有记录 260 12.6 综合练习 260 12.7 小结 262 12.8 习题 263 第13章 视图 ( 教学视频:38分钟) 264 13.1 视图基础 264 13.2 视图的创建 266 13.2.1 在SSMS中创建视图 266 13.2.2 使用CREATE VIEW语句 创建视图 268 13.2.3 用别名命名视图字段 269 13.2.4 创建视图时的注意事项 270 13.2.5 创建加密视图 271 13.3 查看与修改视图 272 13.3.1 查看视图内容 272 13.3.2 在SSMS中修改视图 272 13.3.3 用ALTER VIEW修改视图 272 13.4 使用视图操作表数据 274 13.4.1 在SSMS中操作 视图中的数据 274 13.4.2 使用INSERT语句插入数据 274

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值