目录
1,数据库相关概念
1.1 数据库
1.2 数据库管理系统
1.3 常见的数据库管理系统
1.4 SQL
2,MySQL
2.1 MySQL安装
2.1.1 下载
2.2 MySQL卸载
2.3 MySQL配置
2.3.1 添加环境变量
2.3.2 新建配置文件
2.3.3 初始化MySQL
2.3.6 修改默认账户密码
2.4 MySQL登陆和退出
2.4.1 登陆
2.4.2 退出
2.5 MySQL数据模型
3,SQL概述
3.1 SQL简介
3.2 通用语法
3.3 SQL分类
4,DDL:操作数据库
4.1 查询
4.2 创建数据库
4.3 删除数据库
4.4 使用数据库
5,DDL:操作表
5.1 查询表
5.2 创建表
5.3 数据类型
5.4 删除表
5.5 修改表
6.3.1 建立和mysql服务的连接
6.3.2 操作
7,DML
7.1 添加数据
7.2 修改数据
7.3 删除数据
8,DQL
8.1 基础查询
8.2 条件查询
8.3 排序查询
8.4 聚合函数
8.4.1 概念
8.4.2 聚合函数分类
8.4.3 聚合函数语法
8.5 分组查询
8.6 分页查询
9,约束
9.1 概念
9.2 分类
9.3 非空约束
9.4 唯一约束
9.5 主键约束
9.6 默认约束
9.7 外键约束
9.8.1 概述
9.8.2 语法
10,数据库设计
2.1 数据库设计简介
2.2 表关系(一对多)
2.3 表关系(多对多)
2.4 表关系(一对一)
11,多表查询
11.1 内连接查询
11.2 外连接查询
11.3 子查询
存储和管理数据的仓库,数据是有组织的进行存储。
管理数据库的大型软件
Oracle:收费的大型数据库,Oracle 公司的产品
https://downloads.mysql.com/archives/community/
如果你想卸载MySQL,也很简单。
mysqld --initialize-insecure
2.3.4 注册MySQL服务
mysqld -install
2.3.5 启动MySQL服务
net start mysql // 启动mysql服务
mysqladmin -u root password 1234
mysql -uroot -p1234
格式:mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)
关系型数据库:
关系型数据库的优点:
都是使用表结构,格式一致,易于维护。
使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
英文:Structured Query Language,简称 SQL。
结构化查询语言,一门操作关系型数据库的编程语言。
定义操作所有关系型数据库的统一标准。
SQL 语句可以单行或多行书写,以分号结尾。
MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
查询所有的数据库:
SHOW DATABASES ;
CREATE DATABASE 数据库名称 ;
创建数据库(判断,如果不存在则创建):
CREATE DATABASE IF NOT EXISTS 数据库名称;
删除数据库:
DROP DATABASE 数据库名称 ;
删除数据库(判断,如果存在则删除):
DROP DATABASE IF EXISTS 数据库名称 ;
使用数据库:
USE 数据库名称 ;
查看当前使用的数据库:
SELECT DATABASE();
查询当前数据库下所有表名称
SHOW TABLES ;
查询表结构
DESC 表名称 ;
创建表
CREATE TABLE 表名 (字段名 1 数据类型 1,字段名 2 数据类型 2,…字段名 n 数据类型 n) ;
注意:最后一行末尾,不能加逗号。
创建表:
create table tb_user (
id int ,username varchar ( 20 ) ,password varchar ( 32 )) ;
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 个,那就数据字符个数是几就占几个的空间
删除表
DROP TABLE 表名 ;
删除表时判断表是否存在
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;
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,… ) …;
修改表数据
UPDATE 表名 SET 列名 1 = 值 1, 列名 2 = 值 2,… [ WHERE 条件 ] ;
DELETE FROM 表名 [ WHERE 条件 ] ;
SELECT 字段列表 FROM 表名 ;SELECT * FROM 表名 ; -- 查询所有数据
SELECT DISTINCT 字段列表 FROM 表名 ;
AS : AS 也可以省略
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
模糊查询
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
注意: 上述语句中的起始索引是从0开始。
起始索引计算公式:
起始索引 = ( 当前页码 - 1 ) * 每页显示的条数
注意: MySQL 不支持检查约束。
-- 创建表时添加非空约束CREATE TABLE 表名 (列名 数据类型 NOT NULL ,…) ;
-- 建完表后添加非空约束ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL ;
删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 ;
-- 创建表时添加唯一约束CREATE TABLE 表名 (列名 数据类型 UNIQUE [ AUTO_INCREMENT ] ,-- AUTO_INCREMENT: 当不指定值时自动增长…) ;CREATE TABLE 表名 (列名 数据类型 ,…[ CONSTRAINT ] [ 约束名称 ] UNIQUE ( 列名 )) ;
-- 建完表后添加唯一约束ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE ;
删除约束
ALTER TABLE 表名 DROP INDEX 字段名 ;
-- 创建表时添加主键约束CREATE TABLE 表名 (列名 数据类型 PRIMARY KEY [ AUTO_INCREMENT ] ,…) ;CREATE TABLE 表名 (列名 数据类型 ,[ CONSTRAINT ] [ 约束名称 ] PRIMARY KEY ( 列名 )) ;
-- 建完表后添加主键约束ALTER TABLE 表名 ADD PRIMARY KEY ( 字段名 ) ;
ALTER TABLE 表名 DROP PRIMARY KEY;
-- 创建表时添加默认约束CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值 ,…) ;
-- 建完表后添加默认约束ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值 ;
删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT ;
-- 创建表时添加外键约束CREATE TABLE 表名 (列名 数据类型 ,…[ CONSTRAINT ] [ 外键名称 ] FOREIGN KEY ( 外键列名 ) REFERENCES 主表 ( 主表列名 )) ;
-- 建完表后添加外键约束ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY ( 外键字段名称 ) REFERENCES 主表名称 ( 主表列名称 ) ;
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称 ;
-- 删除表
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)
);
查看表结构模型图:
建表语句如下:
-- 删除表
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);
查看表结构模型图:
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)
);
查看表结构模型图:
-- 隐式内连接SELECT 字段列表 FROM 表 1, 表 2… WHERE 条件 ;-- 显示内连接SELECT 字段列表 FROM 表 1 [ INNER ] JOIN 表 2 ON 条件 ;
内连接相当于查询 A B 交集数据
-- 左外连接SELECT 字段列表 FROM 表 1 LEFT [ OUTER ] JOIN 表 2 ON 条件 ;-- 右外连接SELECT 字段列表 FROM 表 1 RIGHT [ OUTER ] JOIN 表 2 ON 条件 ;