目录
1、数据库的基础知识
1.1数据库的含义:
数据库就是存放数据的仓库,保存和管理书库是数据库最基本的功能。
- 数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。
1.2数据库技术的发展阶段:
人工管理阶段(20世纪50年代之前)
文件管理阶段(20世纪50年代末-60年代中)
数据库管理阶段(20世纪60年代末-现在)
1.3什么是SQL:
是结构化查询语言
(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。
1.4数据库的优点:
1.整体数据结构化:在数据库系统中,记录的结构和记录之间的联系有数据库管理系统进行维护,从而减轻了程序员的工作量,提高了工作效率。
2.数据的共享性高、冗余度低且易扩充:数据共享包括多个用户、多个应用可以同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库中的数据。同时,数据库实现数据共享大大减少了数据冗余,还能够避免数据之间的不相容性和不一致性。(数据的不一致性:指同一数据不同副本的值不一样)
3.数据独立性高:数据独立性包括数据的物理独立性和逻辑独立性,即用户的应用程序与数据库中数据的物理存储和数据的逻辑结构均相互独立。
4.数据由数据库管理系统统一管理和控制:利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系,同时数据库管理系统提供了以下几个方面的数据控制功能,以解决数据共享带来的安全隐患。
2.安装与配置MySQL
2.1MySQL的安装:
①进入官网后,点击"Dowload",然后页面往下拉。
②进来看到的页面是这样的,黄色记号笔框起来的链接就是mysql社区版,是免费的mysql版本,然后我们点击这个框框的链接:↓
③接下来跳转到这个页面,我们只要下载黄色记号笔框起来的社区版的Server就可以了:
④下载框选起来免安装版本:
*/安装的目录应放在指定位置,其次,绝对路径中避免出现中文,推荐首选英文为命名条件!/*
2.2MySQL的配置:
①点击"我的电脑"–>“属性”–>‘‘高级系统设置’’–>‘‘环境变量’’,这一步是配置MySQL的全局变量
②把新建的mysql变量添加到Path路径变量中,点击确定,即完成:
2.3MySQL常用命令:
3.数据库操作:
1.启动MySQL:net start mysql
2.连接和断开服务器: mysql -h地址 -p端口 -u用户名 -p密码
3.查看当前数据库:select database();
4.显示当前时间、用户名、数据库版本:select now(),use(),version();
5.创建数据库:create database 数据库名;
6.查看已创建数据库:show create database 数据库名;
7.修改数据库的选项信息: alter database 数据库名 选项信息;
8.打开使用数据库: use 数据库名;
9.删除数据库:drop database 数据库名;(同时删除该数据库相关的目录以及目录内容)
4.数据表操作:
1.创建表:create table 表名(表的结构定义:列名 数据类型 Not NuLl/NuLL)
2.查看所有表:show tables from 表名;
3.查看表结构:show create table 表名;
4.修改表:
修改表本身的选项:alter table 表名 表的选项;
表的重名名:rename table 原表名 to 新表名;
修改标的字段结构:alter table 表名 操作名;
操作名:add 增加字段;after 表示增加在该字段名后面; add primary key 创建主键;
add unique 创建唯一索引;add inedx 创建普通索引; drop [column] 删除字段;
add primary key auto_increment 主键自增;drop primary key 删除主键;
drop index 删除索引;drop foreign key 删除外键;
5.删除表:delete from 表名 【where 条件表达式】;
6.清空表数据:truncate 表名;
7.复制表结构:create table 表名 like 要复制的表名
8.复制表结构和数据:create table 表名 【AS】 select * from 要复制的表名;
9.插入数据:insert into 表名【(字段名1,字段名2,...)】values (值1,值2,....);
10.修改数据:update v表名 set 字段名1 = 值1 【where 条件表达式】
11.消除select distinct 列名1
4.查询语句:
1.全表查询: select * from 表名;
2.查询指定字段:select 字段1,字段2,字段3….from 表名;
3.where条件查询:select 字段1,字段2,字段3 frome 表名 where 条件表达式;
例:select * from t_studect where id=1;
select * from t_student where age>22;
4.带between and的范围查询:select 字段1,字段2 from 表名 where 字段 [not]between 取值1 and 取值2;
例:select * frome t_student where age between 21 and 29;
6.带like的模糊查询:select 字段1,字段2… frome 表名 where 字段 [not] like ‘字符串’;
“%”代表任意字符;
“_”代表单个字符;
7.空值查询:select 字段1,字段2…from 表名 where 字段 is[not] null;
8.带and的多条件查询:
select 字段1,字段2…from 表名 where 条件表达式1 and 条件表达式2 [and 条件表达式n]
例:select * from t_student where gradeName=’一年级’ and age=23;
9.distinct去重复查询:select distinct 字段名 from 表名;
10.对查询结果排序order by:select 字段1,字段2…from 表名 order by 属性名
[升序asc|降序desc]
11.分组查询group by:group by 属性名 [having 条件表达式]
/*单独使用(毫无意义,不能单独使用);*/
12.limit 指定行查询:select 字段1,字段2,…from 表名 limit 初始位置,记录数;
13.联合查询:UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
代码:select_statement
UNION [ALL] selectstatement [UNION [ALL] selectstatement][…n]
14.内连接:FROM join_table join_type join_table [ON (join_condition)]
15.外连接分为:左外连接(left outer join或left join )、右外连接(right outer join或right join)
5.函数
5.1汇总函数
count | 求某列的行数 |
sum | 对某列数据求和 |
avg | 求某列数据的平均值 |
max | 求某列数据的最大值 |
min | 求某列数据的最小值 |
①求某列的行数
select 列名 from 表名;
②求所有列的行数
select count(*)from 表名;
③求某列数据之和
select sum(列名) from 表名;
④求某列数据的平均值
select avg(列名) from 表名;
⑤求某列数据的最大值和最小值
select max(列名),min(列名) from 表名;
5.2数学函数
-
and():获取随机数
SELECT RAND();
2.round():四舍五入
SELECT ROUND();
5.3日期函数
- now(): 返回当前系统的日期+时间
- curdate(): 返回当前系统的日期,不包含时间
- curtime(): 返回当前时间
5.4流程控制函数
- if 函数
- case函数(case可以搭配select充当表达式,也可以单独作为语句。)
6.视图
6.1视图的概述:
(1)在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。
(2)视图是一种不存在的虚拟表: 类似表但是不是表。
(3)视图中的字段是来自一个或多个数据库中的真实的表中的字段。
(4)我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
6.2视图的操作:
1.创建视图:
create view [数据库名]视图名 as select [where check option]
2.查看视图的三种语法:
语法1:describe 视图名; DESC 视图名;
语法2:show table status like '视图名';
语法3:show create view 视图名;
3.修改视图:
alter view [数据库名]视图名 AS select [with check option]
4.删除视图:
DROP VIEW [IF EXISTS] [数据库名]视图名1
7.数据库的三大范式:
1.第一范式(确保每列保持原子性)
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
2.第二范式(确保表中的每列都和主键相关)
第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
3.第三范式(确保每列都和主键列直接相关,而不是间接相关)
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
8.WHERE的筛选:
在where后面,我们可以跟上所要设置的查询条件。那么如何描述查询条件呢?
1.带关系运算符和逻辑运算符的表达式;
2.带 BETWEEN AND 关键字的条件查询;
3.带 IS NULL 关键字的条件查询;
4.带 IN 关键字的条件查询;
5.带 LIKE 关键字的条件查询。
9.常用的数据类型
1.整型(int)
整数类型 | 字节 |
TINYINT | 1 |
SMALLNT | 2 |
MEDIUMINT | 3 |
INT、INTEGER | 4 |
BIGINT | 8 |
2.位类型(bit)
BIT数据类型可用来保存位字段值。
3.浮点型(float和double)
在MySQL中单精度值使用4个字节,双精度值使用8个字节。
4.日期时间类型(date,time,datetime,year,timestamp)
类型 | 说明 |
date | 日期 |
time | 时间 |
datetime | 日期时间 |
year | 年份类型 |
timestamp | 时间戳 |
5.字符串(char,varchar,text)
类型 | 说明 |
char | 定长字符串 |
varchar | 变长字符串 |
text | 文本字符串 |
6.枚举(enum)
MySql中的ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值:
可以插入空字符串""和NULL(如果运行NULL的话)。
7. 集合(set)
(1)SET和ENUM类型非常类似,也是一个字符串对象,里面包含0~64个成员。
(2)SET和ENUM存储上有所不同,SET是根据成员的个数决定存储的字节数。
(3)SET和ENUM最主要的区别在于SET类型一次可以选择多个成员,而ENUM则只能选择一个。
8.特殊的NULL类型
(1)所有的类型的值都可以是null,包括int、float等数据类型。
(2)空字符串,不等于null,0也不等于null,false也不等于null。
(3)任何运算符,判断符碰到NULL,都得NULL。
(4)NULL的判断只能用is null,is not null。
(5)NULL 影响查询速度,一般避免使值为NULL。
9.1常见数据类型的属性
关键字 | 含义 |
NULL | 数据列可以包含NULL值 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 自增主键,适用于整数类型 |