关系型数据库:
关系型数据库是建立在关系模型基础上的数据库,简单来说,关系型数据库是有多张能互相联系起来的二维表组成的数据库
优点:
1、都是使用表的结构,格式一致,易于维护。
2、使用通用的SQL语言操作,使用方便,可用于复杂查询。
3、数据储存在磁盘中,安全。
SQL简介:
英文:Structured Query Language 简称SQL
结构化查询语言,一门操作类型关系库的编程语言
定义操作所有关系型数据库的统一标准
对于同一需求,每种数据库操作方式可能会存在一些不一样的地方,我们称之为’方言‘
SQL通用语法:
SQL语句可以单行或多行书写,以分号结尾
MySQL数据库中的SQL语句不区分大小写,关键字建议使用大写
注释:单行注释:-- 注释内容 或#注释内容(MySQL特有)
多行注释:/*注释*/
SQL分类:
DDL:(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
DML:(Data Manipulation Language)数据库操作语言,用来对数据库中的表的数据进行增删改
DQL:(Data Query Language)数据库查询语言,用来查询数据库中表的记录(数据)
DCL:(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别及建立用户
DDL:
创建数据库:create database +数据库名称;/或先判断后创建:create database if not exists 数据库名称
查找数据库:show database;
删除数据库:drop database 数据库名称;/或先判断是否存在: drop database if exists 数据库名
使用数据库:use 数据库名称
查看当前的数据库:select database();
查询当前数据库所建的表:show tables;
查询某个表的整体结构信息:desc 表名;
创建表:create table 表名(字段1 数据类型1,
字段2 数据类型2,字段3 数据类型3...
)
修改表:alter table 表名 rename to 新名;
增加一列:alter add 字段 数据类型;
修改数据类型:alter table 表名 modify 列名 数据类型
删除表:drop table 表名;/或者先判断是否存在:drop table if exists 表名
修改列名 数据类型:alter table 表名 change 列表名 新数据类型
删除列:alter table 表名 drop 列名;
图形化客户端工具:Navicat
DML:
1、对指定列添加数据:insert into 表名(列名1,列名2...)values(值1,值2...);
2、修改数据:update 表名 set 列名1=值1,列名2=值2...[where 条件];
如果update语句没有加where条件,则会将表中所有数据全部修改
3、删除数据:delete from 表名 [where 条件]
DQL:
1、基础查询:
查询多个字段 select 字段列表 from 表名
去除重复记录 select distinct 字段列表 from 表名
起别名 as as可省略
2、条件查询
select 字段列表 from 表名 where 条件列表
注意:null值的比较时,不能使用!=,=需用is is not
模糊查询:like 占位符 _单个字符 %任意多个字符
3、排序查询
select 字段列表 from 表名 order by 排序字段名1 [排序方式1], 排序字段名2 [排序方式2]...
排序方式:ASC 升序(默认值),desc 降序
如果有多个排序条件,当前边的条件值一样时,会根据第二个条件值进行排序。
4、聚合函数
将一列数据作为一个整体,进行纵向计算
select 聚合函数名(列名) from 表;
null值不参与所有聚合运算
5、分组查询函数
select 字段列表 from 表名 [ where 分组前条件限定] group by 分组字段名 [ having 分组条件过滤]
分组后之后,查询字段为聚合函数和分组字段,查询其他字段无任何意义
where和having的区别
- 执行时机不一样:where是分组前进行,不满足where条件,则不参与分组。而having是分组后对结果进行过滤。
- 可判断条件不一样:where不能对聚合函数进行判断,having可以执行顺序。where>聚合函数>having
6、分页查询
select 字段列表 from 表名 limit 起始索引,查询条目数
计算公式:起始索引=(当前页码数-1)*每页显示的条目数
tips:
- 分页查询limit是MySQL的数据库方言
- Oracle分页查询rownumber
- SQL server分页查询时使用top