目录
1,数据库相关概念
1.1 数据库
存储和管理数据的仓库,数据是有组织的进行存储。
1.2 数据库管理系统
管理数据库的大型软件
1.3 常见的数据库管理系统
Oracle:收费的大型数据库,Oracle 公司的产品
1.4 SQL
2,MySQL
2.1 MySQL安装
2.1.1 下载
https://downloads.mysql.com/archives/community/
2.2 MySQL卸载
如果你想卸载MySQL,也很简单。
2.3 MySQL配置
2.3.1 添加环境变量
2.3.2 新建配置文件
2.3.3 初始化MySQL
mysqld --initialize-insecure
2.3.4 注册MySQL服务
mysqld -install
2.3.5 启动MySQL服务
net start mysql // 启动mysql服务
2.3.6 修改默认账户密码
mysqladmin -u root password 1234
2.4 MySQL登陆和退出
2.4.1 登陆
mysql -uroot -p1234
格式:mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)
2.4.2 退出
2.5 MySQL数据模型
关系型数据库:
关系型数据库的优点:
都是使用表结构,格式一致,易于维护。
使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
3,SQL概述
3.1 SQL简介
英文:Structured Query Language,简称 SQL。
结构化查询语言,一门操作关系型数据库的编程语言。
定义操作所有关系型数据库的统一标准。
3.2 通用语法
SQL 语句可以单行或多行书写,以分号结尾。
MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
3.3 SQL分类
4,DDL:操作数据库
4.1 查询
查询所有的数据库:
SHOW DATABASES ;
4.2 创建数据库
CREATE DATABASE 数据库名称 ;
创建数据库(判断,如果不存在则创建):
CREATE DATABASE IF NOT EXISTS 数据库名称;
4.3 删除数据库
删除数据库:
DROP DATABASE 数据库名称 ;
删除数据库(判断,如果存在则删除):
DROP DATABASE IF EXISTS 数据库名称 ;
4.4 使用数据库
使用数据库:
USE 数据库名称 ;
查看当前使用的数据库:
SELECT DATABASE();
5,DDL:操作表
5.1 查询表
查询当前数据库下所有表名称
SHOW TABLES ;
查询表结构
DESC 表名称 ;
5.2 创建表
创建表
CREATE TABLE 表名 (字段名 1 数据类型 1,字段名 2 数据类型 2,…字段名 n 数据类型 n) ;
注意:最后一行末尾,不能加逗号。
创建表:
create table tb_user (
id int ,username varchar ( 20 ) ,password varchar ( 32 )) ;
5.3 数据类型
MySQL 支持多种类型,可以分为三类:
数值:
tinyint : 小整数型,占一个字节
int : 大整数类型,占四个字节eg : age intdouble : 浮点类型使用格式: 字段名 double ( 总长度 , 小数点后保留的位数 )eg : score double ( 5 , 2 )
date : 日期值。只包含年月日eg : birthday date :datetime : 混合日期和时间值。包含年月日时分秒
char : 定长字符串。优点:存储性能高缺点:浪费空间eg : name char ( 10 ) 如果存储的数据字符个数不足 10 个,也会占 10 个的空间varchar : 变长字符串。优点:节约空间缺点:存储性能底eg : name varchar ( 10 ) 如果存储的数据字符个数不足 10 个,那就数据字符个数是几就占几个的空间
5.4 删除表
删除表
DROP TABLE 表名 ;
删除表时判断表是否存在
5.5 修改表
ALTER TABLE 表名 RENAME TO 新的表名 ;-- 将表名 student 修改为 stualter table student rename to stu;
ALTER TABLE 表名 ADD 列名 数据类型 ;-- 给 stu 表添加一列 address ,该字段类型是 varchar(50)alter table stu add address varchar ( 50 ) ;
ALTER TABLE 表名 MODIFY 列名 新数据类型 ;-- 将 stu 表中的 address 字段的类型改为 char(50)alter table stu modify address char ( 50 ) ;
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型 ;-- 将 stu 表中的 address 字段名改为 addr ,类型改为 varchar(50)alter table stu change address addr varchar ( 50 ) ;
ALTER TABLE 表名 DROP 列名 ;-- 将 stu 表中的 addr 字段 删除alter table stu drop addr;
6,navicat使用
6.1 navicat概述
6.2 navicat安装
6.3 navicat使用
6.3.1 建立和mysql服务的连接
第二步:填写连接数据库必要的信息
6.3.2 操作
7,DML
7.1 添加数据
INSERT INTO 表名 ( 列名 1, 列名 2,… ) VALUES ( 值 1, 值 2,… ) ;
给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,…);
批量添加数据
INSERT INTO 表名 ( 列名 1, 列名 2,… ) VALUES ( 值 1, 值 2,… ) , ( 值 1, 值 2,… ) , ( 值 1, 值 2,… ) …;INSERT INTO 表名 VALUES ( 值 1, 值 2,… ) , ( 值 1, 值 2,… ) , ( 值 1, 值 2,… ) …;
7.2 修改数据
修改表数据
UPDATE 表名 SET 列名 1 = 值 1, 列名 2 = 值 2,… [ WHERE 条件 ] ;
7.3 删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
8,DQL
8.1 基础查询
SELECT 字段列表 FROM 表名 ;SELECT * FROM 表名 ; -- 查询所有数据
SELECT DISTINCT 字段列表 FROM 表名 ;
AS : AS 也可以省略
8.2 条件查询
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
模糊查询
8.3 排序查询
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
8.4 聚合函数
8.4.1 概念
将一列数据作为一个整体,进行纵向计算。
8.4.2 聚合函数分类
8.4.3 聚合函数语法
注意: null 值不参与所有聚合函数运算。
8.5 分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
8.6 分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数 ;
注意: 上述语句中的起始索引是从0开始。
起始索引计算公式:
起始索引 = ( 当前页码 - 1 ) * 每页显示的条数
9,约束
9.1 概念
9.2 分类
注意: MySQL 不支持检查约束。
9.3 非空约束
-- 创建表时添加非空约束CREATE TABLE 表名 (列名 数据类型 NOT NULL ,…) ;
-- 建完表后添加非空约束ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL ;
删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 ;
9.4 唯一约束
-- 创建表时添加唯一约束CREATE TABLE 表名 (列名 数据类型 UNIQUE [ AUTO_INCREMENT ] ,-- AUTO_INCREMENT: 当不指定值时自动增长…) ;CREATE TABLE 表名 (列名 数据类型 ,…[ CONSTRAINT ] [ 约束名称 ] UNIQUE ( 列名 )) ;
-- 建完表后添加唯一约束ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE ;
删除约束
ALTER TABLE 表名 DROP INDEX 字段名 ;
9.5 主键约束
-- 创建表时添加主键约束CREATE TABLE 表名 (列名 数据类型 PRIMARY KEY [ AUTO_INCREMENT ] ,…) ;CREATE TABLE 表名 (列名 数据类型 ,[ CONSTRAINT ] [ 约束名称 ] PRIMARY KEY ( 列名 )) ;
-- 建完表后添加主键约束ALTER TABLE 表名 ADD PRIMARY KEY ( 字段名 ) ;
ALTER TABLE 表名 DROP PRIMARY KEY;
9.6 默认约束
-- 创建表时添加默认约束CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值 ,…) ;
-- 建完表后添加默认约束ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值 ;
删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT ;
9.7 外键约束
9.8.1 概述
9.8.2 语法
-- 创建表时添加外键约束CREATE TABLE 表名 (列名 数据类型 ,…[ CONSTRAINT ] [ 外键名称 ] FOREIGN KEY ( 外键列名 ) REFERENCES 主表 ( 主表列名 )) ;
-- 建完表后添加外键约束ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY ( 外键字段名称 ) REFERENCES 主表名称 ( 主表列名称 ) ;
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称 ;
10,数据库设计
2.1 数据库设计简介
2.2 表关系(一对多)
-- 删除表
DROP TABLE IF EXISTS tb_emp;
DROP TABLE IF EXISTS tb_dept;
-- 部门表
CREATE TABLE tb_dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE tb_emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
-- 添加外键 dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES tb_dept(id)
);
查看表结构模型图:
2.3 表关系(多对多)
建表语句如下:
-- 删除表
DROP TABLE IF EXISTS tb_order_goods;
DROP TABLE IF EXISTS tb_order;
DROP TABLE IF EXISTS tb_goods;
-- 订单表
CREATE TABLE tb_order(
id int primary key auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id int primary key auto_increment,
title varchar(100),
price double(10,2)
);
-- 订单商品中间表
CREATE TABLE tb_order_goods(
id int primary key auto_increment,
order_id int,
goods_id int,
count int
);
-- 建完表后,添加外键
alter table tb_order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES tb_order(id);
alter table tb_order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES tb_goods(id);
查看表结构模型图:
2.4 表关系(一对一)
create table tb_user_desc (
id int primary key auto_increment,
city varchar(20),
edu varchar(10),
income int,
status char(2),
des varchar(100)
);、
create table tb_user (
id int primary key auto_increment,
photo varchar(100),
nickname varchar(50),
age int,
gender char(1),
desc_id int unique,
-- 添加外键
CONSTRAINT fk_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id)
);
查看表结构模型图:
11,多表查询
11.1 内连接查询
-- 隐式内连接SELECT 字段列表 FROM 表 1, 表 2… WHERE 条件 ;-- 显示内连接SELECT 字段列表 FROM 表 1 [ INNER ] JOIN 表 2 ON 条件 ;
内连接相当于查询 A B 交集数据
11.2 外连接查询
-- 左外连接SELECT 字段列表 FROM 表 1 LEFT [ OUTER ] JOIN 表 2 ON 条件 ;-- 右外连接SELECT 字段列表 FROM 表 1 RIGHT [ OUTER ] JOIN 表 2 ON 条件 ;