您的位置:首页 > 数据库

SQL学习重点概述

2013-06-23 20:13 274 查看

SQL总结

 

第一章:数据库Database

 

到目前为止,主要学习的数据库是MySQL
的简单SQL操作,同时是时间库中的关系型数据库(RDBMS)

 

数据库的优点是:减少数据的冗余

                                    
保证数据的有效性

                                    
数据的一致性

                                    
数据的共享

                                    
维护的完整性

                                    
数据的安全性

 

主要的数据模型有:层状模型

                                      
网状模型

                                      
关系型模型

                                      
对象模型

 

现在广泛运用的是关系型数据库,它已经能解决我们的大多数的问题,往后发展会越来越多的运用对象模型。

 

SQL的语句有:

                            DDL
数据定义语言        创建定义,删除定义等

                            DML
数据操作语言       增、删、改

                            DQL
数据查询语言

                            DCL
数据控制语言         grant、revak等

 

DDL—数据定义语句

 

Create 创建   database
数据库

Create database 名字; 
————创建数据库

 

Table 表

Create table 名字;      
————创建表

 

Drop 删除

Create table/database
表名/数据库;        
————删除表/数据库

 

一般定义表用 t_xxx  
一般定义主键用 pk_xxx    一般定义列用 f_xxx或c_xxx

一般外键用 fk_xxx

 

注意:数据库中只有字符串,SQL可以使用引擎,innodb只有这个引擎才支持外键。

Frm数据包文件。

 

 

第二章:数据库数据类型

 

整数型

TINYINT   1字节     
短小整数型

SMALLINT  2字节 
小整数值

MEDIUMINT  3字节 
小整数型

INT  4字节 
整数值

BIGINT  8字节 
大整数值

 

浮点型

FLOAT  4字节 
单精度

DOUBLE  8字节 
双精度

DECIMAL(M.D)  17字节 
大浮点数

NUMERIC  --同上(DECIMAL)

 

字符串型

CHAR(N)    N   0-255     字符型   
定长

VARCHAR(N)    N   0-65535  
字符型    变长

变长节约磁盘空间,查询时定长给好。

 

日期

YEAR   1字节   YYYY                       1901-2155

DATE   3字节   YYYY-MM-DD          1000-01-01 9999-12-31

TIMESAMP  4
4000
字节   YYYY-MM-DD

                                               HH:MM:SS                 1970-01-01 00:00:01-2038

DATETIME   8字节   YYYY-MM-DD                    1000-01-01 9999-12-31

                                               HH:MM:SS                 00:00:00-23:59:59

 

以上为常用数据类型,除了以上的数据类型以外还有二进制型、逻辑性。

 

 

简单的数据定义操作:

Create 创建   database
数据库

Create database 名字; 
————创建数据库

 

Table 表

Create table 名字;      
————创建表

 

Drop 删除

Create table/database
表名/数据库;        
————删除表/数据库

 

增加列                                                                             
修改列

Alter table 表名                                                              alter table
表名

Add 列名类型;                                                          change
原列名现列名类型;

 

删除列

Alter table 表名

         Drop column
原名;

 

索引

创建 Create index
索引名 on 表名(列一,列二,…);

删除 alter table
表名 drop index 索引名;

 

约束

Primary key 主键(一张表中有且只有一个隐含非空,隐含一个主键索引)

Unique 唯一(一张表中有多个,但是包含一个空)

Default 默认

No null 非空

Foreign key 外键

Auto_increment 自动增长

 

外键

普通列→外键列

Alter table 当前表名

         Add constraint
新外键名 foreign key 当前指向列 references
指向表(指向表主键);

 

主键

主键列自动创建一个约束。

 

数据完整性

1.      
实体完整性,保证这一行的有效

2.      
域完整性,一列数据有效

3.      
引用完整性,引用编号有效

4.      
用户自定义完整性,保证自定义规则

 

 

 

第三章:DML数据操作语言

 

Insert 添加   update
修改    delete 删除

 

Insert into 表名(列名) values(值);————添加列的数据

 

Select * from 表名;     
————查询表

 

表的复制

Insert into 新表名 select * from
旧表名;  ————保存前表存在

 

Create into 新表名 select * from
旧表名;  ————复制列名,数据类型,非空,默认约束

 

。。。。。where 1=2;————不带数据复制

 

更改

Update 更改

Update 表名 set
列名=新值,列名2=新值2

         …..条件;                                                                        
————修改表里列的值

 

删除

Delete (表中的数据)

Delete from 表名;————删除表中的数据

 

清空表

Truncate table 表名;

 

投影

Select * from 表名;   
————只用于DQL

投影时可以取别名,更加简化,国际化。

 

去掉重复数据

Select distinct _from_;

 

Limit (限制,用于分页)

Select_from_timit 开始序号,返回的行数;

 

选择

Where 条件;————查询时的条件

多条件: and与   or或

Between 执行范围测试  

Between 上限and
下限;

 

in或not。。。 
列举

 

模糊查询

Like 像什么什么

通配符:

‘%’表示0个或多个字符

‘_’任何一个字符

 

Select _from 表 where _like
模式;

 

空值数据

。。。where
。。。is null;

 

排序:

默认的顺序为自然顺序从小到大,也可以从大到小

顺序 asc(一般不用写出,系统默认)              
倒叙 desc

 

Select * from 表 order by
列 desc;

 

批量插入

Insert into _

         Select * from _;

Create into _

         Select * from _;

 

第四章:聚合函数

Count 列数量    sum列的合    avg
列的平均值    max最大   min最小

 

Select Count(计算模式)from
表名;————计算所有列如有NULL忽略,如果要NULL值可以用ALL

 

Select sum(计算模式)from
表名;

          Avg

Sum 、 avg
都是数值列

 

Select max(计算模式)from
表名;

          Min

 

数据分组

凡是select子句里的聚合函数,并且有非聚合函数的列,就需要进行分组

Group by

 

Select 列A
聚合函数() from 表名

         Where 条件

                   Group by
列A;

 

Having 相当于 where

Select 列
aa1a
A
函数() from 表名

         Group by 列A

                   Having
函数()关系式值;

 

Where 列值进行比较

Having 必须有聚合结果进行匹配选择

 

 

SQL执行顺序

1.      
from

2.      
where

3.      
group by

4.      
select

5.      
having

6.      
order by

 

 

 

第五章:子查询和组合函数

Select  columnA (子查询) as  column  from 
表名;

 

子查询中有相关和非相关

相关:一个查询语句,不能单独运行,而且一般有多少行记录就返回多少次记录

非相关:得到一个结果,单独运行,并且一般只执行一次

 

运算符:in   not in   all   any   eists

All:结果逐一比较,必须满足时表达式的值才为真

Any:结果进行逐一比较,其中一条满足则表达式值为真

Exists:判断子查询是否存在数据,如果存在表达式为真,如果不存在表达式为否

 

Exists()跟在where后面()里面写条件,通常为非相关子查询,如果没结果相当于false反之执行。

 

用子查询写多重查询,首先写要显示的那个条件语句,之后关键字相关联,有关建子的地方选择子查询 where后面多个结果使用 in

 

组合查询

Select 列1,列2
表1          

Union

Select 列3,列4
表2;

 

多个select
结果组合在一起显示,组合和显示的列名就是第一个查询的名,组合必须有同样的数目的结果列,列数不同不能组合,列的类型也要相同或相似

 

联接

Join   数据来自多张表,多个表联接在一起实现查询结果

笛卡尔乘积:数据自由组合

Select 列A,列B from
表1 join 表2

On 表1,列=表2,列;

 

分类

内联接: inner join     inner可以省略     
内联仅显示相关联的信息

外联接

自联接:来自同一张表,自己和自己作联接

 

自联接:内联和外联的一个特例,主外建在一张表里面。

 

外联接

左联接    右联接  
全联(mysql不支持)

左外联:left onter join on

右外联:right outer join on

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: