数据库:
数据库管理系统:
SQL
官网 mysql数据库下载
下载完成后解压到文件夹
配置环境变量:
path中增加:
在文件根目录中增加my.ini文件
文件中写入内容:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
管理员运行cmd,并输入:
mysqld --initialize-insecure
mysqld --initialize
cmd中输入启动mysql服务:
net start mysql
停止服务:
net stop mysql
dll修复工具下载
mysqladmin -u root password 1234
mysql -uroot -p1234
关系型数据库时建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库
优点
1.都是使用表结构,格式一致,易于维护
2. 使用通用SQL语言操作,使用方便,可用于复杂查询
3.数据存储在磁盘中,安全
1.SQL语句可以单行也可以多行,以分号结尾
2.Mysql数据库的SQL语句不区分大小写,关键字建议使用大写
3.注释:
show databases;
创建数据库
create database 数据库名称;
创建数据库(判断,如果不存在则创建)
create database if not exists 数据库名称;
删除数据库
drop database 数据库名称;
删除数据库(判断,如果存在着删除)
drop database if exists 数据库名称;
查看当前使用的数据库
select database();
使用数据库
use 数据库名称
查询当前数据库下所有表名称
show tables;
查询表结构
desc 表名称;
create table 表名 (
字段名1 数据类型1,
字段名2 数据类型2,
.....
字段名n 数据类型n
);
注意:最后一行末尾,不能加逗号
常用:
int类型
double类型
score double(总长度,小数点后保留的位数)
date类型(日期型,存储年月日)
char类型(字符串类型,定多长就有多长)
name char(长度)
varchar类型(字符串型,可以根据内容长度调整存储空间)
1.删除表
drop table 表名;
2.删除表时判断表是否存在
drop table if exists 表名;
1.修改表名
alter table 表名 rename to 新的表名;
2.添加一列
alter table 表名 add 列名 数据类型;
3.修改数据类型
alter table 表名 modify 列名 新数据类型;
4.修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;
5.删除列
alter table 表名 drop 列名;
1.给指定列添加数据
insert into 表名(列名1,列名2,....) values(值1,值2,.....);
2.给全部列添加数据
insert into 表名 values(值1,值2,....);
3.批量添加数据
insert into 表名(列名1,列名2,...) values(值1,值2,....),(值1,值2,....),(值1,值2,....)...;
insert into 表名 values(值1,值2,....),(值1,值2,....),(值1,值2,....)...;
update 表名 set 列名1=值1,列名2=值2,....[where 条件];
注意:修改语句中如果不加条件,则将所有数据都修改
delete from 表名 [where 条件]
注意:删除语句中如果不加条件,则将所有数据都删除
基础语法:
select
字段列表
from
表名列表
// 条件查询
where
条件列表、
//分组查询
group by
分组字段
having
分组后条件
//排序查询
order by
排序字段
//分页查询
limit
分页限定
1.查询多个字段
select 字段列表 from 表名;
select * from 表名; -- 查询所有数据
2.去除重复记录
select distinct 字段列表 from 表名;
3.起别名(给字段)
as: as也可以省略
1.条件查询语法
select 字段列表 from 表名 where 条件列表
2.条件
1.排序查询语法
select 字段列表 from 表名 order by 排序字段名1[排序方式1],排序字段名2[排序方式2]...;
排序方式:
注意:如果有多个排序条件,当前变的条件值一样时,才会根据第二条件进行排序
1.概念
将一列数据作为一个整体,进行纵向计算
2.聚合函数分类
函数名 | 功能 |
count(列名) | 它统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
3.聚合函数语法:
select 聚合函数名(列名) from 表;
注意:null值不参与所有聚合函数运算
1.分组查询语法
select 字段列表 from 表名 [where 分组前条件限定] group by [having 分组后条件筛选];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where 和 having 区别
执行顺序:where > 聚合函数 >having
1.分页查询语法
select 字段列表 from 表名 limit 起始索引 ,查询条目数;
计算公式:起始索引= (当前页码-1)*每页显示条目数
tips:
概念:
分类
约束名称 | 描述 | 关键字 |
非空约束 | 保证列中所有数据不能有null值 | not null |
唯一约束 | 保证列中所有数据各不相同 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 (auto_increment 实现主键自增长) |
primary key |
检查约束 | 保证列中的值满足某一条件 | check |
默认约束 | 保存数据时,未指定的值则采用默认值 | default |
外键约束 | 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 | foreign key |
tips:MySQL不支持检测约束
外键约束
概念:
外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
语法:
(1)添加约束
-- 创建表时添加外键约束
create table 表名(
列名 数据列表,
......
[constraint] [外键名称] foreign key(外键列名) references 主表(主表列名)
);
-- 建完表后添加外键约束
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称);
(2)删除约束
alter table 表名 drop foreign key 外键名称
一对一
一对多
多对多
笛卡尔积:取A,B集合所有组合情况
多表查询:从多张表查询数据
连接查询:
内连接:相当于查询A B交集数据
外连接:
左外连接:相当于查询A表所有数据和交集部分
右外连接:相当于查询B表所有数据和交集部分数据
子查询
1.内连接查询语法
-- 隐式内连接
select 字段列表 from 表1,表2.... where 条件;
-- 显示内连接
select 字段列表 from 表1 [inner] join 表2 on 条件;
内连接相当于查询AB交集数据
1.外连接查询语法
-- 左外连接
select 字段列表 from 表1 left [outer] join 表2 on 条件;
-- 右外连接
select 字段列表 from 表1 right [outer] join 表2 on 条件;
左外连接:相对于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交集部分数据
1.子查询根据查询结果不同,作用不同
select 字段列表 from where 字段名 = (子查询)
select 字段列表 from 表 where 字段名 in (子查询)
select 字段列表 from (子查询) where 条件