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
相关文章推荐
- MySQL学习---->第二练:语句初步(SQL概述、数据定义、查询)
- Sql学习第二天――SQL DML与CTE概述
- Sql学习第二天――SQL DML与CTE概述
- PL/SQL程序语言的学习---概述
- UML总结(一)----学习主要重点概述
- WAP(wml)开发教程2--WML学习之概述
- Spring学习【Spring概述】
- 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
- 学习DBMS (一) DBMS_SQL
- sql日期时间戳数据类型巩固学习
- SQL学习----关键词搜索
- Spark学习总结三 SparkSql操作elasticsearch
- Mybatis学习记录(五)----Mybatis的动态SQL
- 人工智能学习笔记一(人工智能概述)
- [导入]Sql Server2005 Transact-SQL 新兵器学习总结之-PIVOT和UNPIVOT运算符
- 【疯狂Java学习笔记】【第一章:Java语言概述】
- PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述
- [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套
- PGM:图模型学习概述
- 【JavaEE学习笔记】XML_概述,DOM4J解析器,Pull解析器,DOM4J增删改,xPath