1、关于数据库
数据库就是存放数据的仓库,是长期储存在计算内、有组织有机构的、可共享的数据集合
数据库的数据结构形式,叫数据模型,数据模型是数据库管理系统的核心和基础,常见数据模型有:网状模型、层次模型、关系模型(主流)、面向对象模型 。当今流行的数据库管理系统有Oracle、Mysql、MongDB、SQL Server、DB2、Redis。
2、SQL语言
2.1 SQL的概念
SQL是一个通用的、功能极强的关系数据库语言,由数据查询、数据操作、数据定义、数据控制语言组成。有面向集合的操作方式和既是自含式语言,又是嵌入式语言,以同一种语法结构提供两种使用方式
2.2 SQL语句的使用
1)创建数据库
语句:create database 数据库名 ;
例如,要创建名为mydb的数据库,请使用以下语句:
create database mydb;
2)查看数据库
语句 :show databases;
查看指定数据库
语句 :show create database 数据库名;
3) 选择数据库
语句: use 数据库名称;
4) 删除数据库
语句:drop database 数据库名称;
5)创建表
create table 表名(
列名1 数据类型 [列/行级约束]
列名2 数据类型 [列/行级约束]
);
6)查看数据表
语句:show tables[like 匹配模式];
7) 删除数据表
语句:drop tables;
8)修改表结构
语句: alter table;
9)插入数据
语句: insert into 表名(字段名1,字段名2....)values(值1, 值2...);
10)修改数据
语句:update 表名 set 字段名=值1
where[条件表达式];
11)删除数据
语句:delete from 表名 where [条件表达式]
2.3 查询
2.3.1 单表查询
select完整语句格式
select [distinct] * (字段名1,字段名2...) from 表名
group by 字段名 [having 条件表达式2 ]
where 条件表达式1
order by 字段名[asc|desc]
limit,记录数;
说明:
排序:order by ,asc:升序,desc:降序;
分组:group by
2.3.2 多表查询
1)链接查询
常用于用于查询字段来自与多张表,分内连接(inner join)、左连接(left join)、右链接(right join)、交叉连接(cross join);
内链接查询语法:select 查询列表 from 表1
inner join 表2 on 表 2.公共列= 表 1.公共列
inner join 表3 on 表 3.公共列= 表 1|2.公共列
2)子查询
SQL语句中嵌套select语句,又称嵌套查询。
1.标量子查询:子查询返回的结果是单个值(数字、字符串、日期等),即一行一列。
语法:select主查询WHERE字段名=(标量子查询)
#常用操作符:=
例如:
子查询
select MAX(PageCount) from TBL_BookInfo主查询
select BookName, PageCount from TBL_Booklnfo
where PageCount=(select MAX(PageCount) from TBL_Booklnfo);
2.列子查询:子查询返回的结果为一列(可以是多行),即一列多行。
语法:select主查询 where 字段名in(列子查询)
#常用操作符:in、not in、any、some、all
例如:
子查询
select userid from TBL_user WHERE class ='计算机应用技术1班’and sex=1
主查询
select bookid,borrowdate from TBL_borrowinfo
where userid in (select userid from TBL_user where class='计算机应用技术1
班’ and sex =1);
3.行子查询*:子查询返回的结果是一行(可以是多列),即一行多列。
语法:select主查询 where(字段名1,字段名2….)=(行子查询)
#常用操作符:=、<>、in、not in
4.表子查询*:子查询返回的结果是多行多列。
语法:select主查询 where(指定字段名1,指定字段名2,…)in(表子查询)
2.4 视图
1)视图的 本质
1.视图是一种虚拟表,不占用物理存储空间(用于存储数据),
2.视图具有将预定义的select查询作为对象保存在数据库的能力,以备后
用,为查询结果的再输出、再利用提供极大的方便.
3.可以将任何一个预定义的select查询语句作为视图进行命名和存储。
4.视图中的数据内容取自一个简单或复杂的select语句的查询输出。
5.视图只不过是一个有名称且存储在SQL中的select语句。
2)创建视图基本语法
基本语法:create view数据库名]视图名
as
select语句 [with check option];
视图命名常以v_或view_开头,_v或_view结尾。
例:建立一个名为v_book_1的视图,功能是从图书表中查询书名中
包含有“工程数学”的所有记录
create view v_book_1
as
select * from TBL_BookInfo
where BookName like '%工程数学%;
3)修改视图
基本语法: alter view[数据库名.]视图名
as
select语句
4)删除视图
基本语法 :
drop view [if exists [数据库名.]视图名1[视图名2....]
示例:
drop view v book_ class;
2.5 函数
1)聚合函数
函数名称 | 描述 |
count() | 返回参数字段的数量,不统计为NULL的记录 |
sun() | 返回参数字段之和 |
avg() | 返回参数字段的平均值返回参数字段的最大值返回参数字段的最小值 |
max() | 返回参数字段的最大值 |
min() | 返回参数字段的最小值 |
2)创建自定义函数语句
delimiter 新语句结束符号 (推荐使用$$,//,##,.非系统内置的符号)
create function 函数名([参数名 数据类型[参数名 数据类型…]])
returns 返回值类型
begin
SQL语句
return返回值;
end
新语句结束符号
delimiter;
例: 创建函数GetBookNameByID,实现输入索书号(bookid),返回图书(bookname)
delimiter$$
create function GetBookNameByID(v_bookid char(15)) returns varchar(50)
begin
return (select bookname from tbl_bookinfo where bookid=v_bookid);
end
$$
delimiter;
3)函数调用、删除和查看
函数调用 | 函数名(实际参数列表) |
函数删除 | drop function 函数名 |
函数查看 | show create function 函数名 |
3、数据完整性
3.1 数据完整性类型
1)表的约束
约束类型 | 约束关键字 | 说明 |
域完整性 | not null | 非空约束 |
default | 默认值约束 | |
实体完整性 | primary key | 主键约束(用于唯一标识行) |
unique | 唯一约束 | |
auto_increment | 自增约束(由系统实现唯一性) | |
参照完整性 | foreign key | 外键约束 |
3. 2 实体完整性
1)主键约束
每个数据表中最多只能有一个主键约束;
定义为主键的字段不允许有重复值,也不允许出现NULL值;
主键约束相当于唯一约束和非空约束的组合。
单字段主键
由一个字段构成的主键。
多字段主键
由多个字段组合而成的主键,或称复合或组合或联合主键,
注:所有组合字段的值完全相同才被认为是重复值。
2) 使用SQL语句创建主键
语法 :
单字段主键
primary key
单/多字段主键
primary key(字段名1,字段名2,….)
3. 3 参照完整
1)外键约束(foreign key)
外键:特指两张表的公共列,在一张表是主键或唯一键,在另一张表则可以定义为外键。
外键表两个表之间的相关联系。
定义外键的表称为从表,也称为参照表、引用表、子表、外键表。
希被引用的表称为主表,也称为被参照表、被引用表、父表、外表。
作用:保证数据的一致性和完整性,主要目的是控制存储在外键表中的数据。
2)使用SQL语句创建外键
语法:foreig key(外键列名)references主表名(被引用列名)