学习目标:
学习MySQL学习内容:
1、 数据库概述 2、 sql 3、 DDL 4、 DML 5、 DQL-基础查询学习时间:
2021年7月2日 2021年7月5日学习产出:
提示:
1、 技术笔记 1 遍
2、CSDN 技术博客 1 篇
数据库概述
为什么学习数据库:
实现数据持久化到本地;
使用完整的管理系统统一管理,可以实现结构化查询,方便管理;
数据库(DataBase)
为了方便数据的存储和管理,它将数据按照特定的
规则存储在磁盘上,就是一个存储数据的仓库。通过数据库管理系统,可
以有效的组织和管理存储在数据库中的数据。
数据库相关概念:
DB:数据库(DateBase)
存储数据的容器,它保存了一系列有组织的数据
DBMS:数据关系系统(DateBase Management System)
又称为数据库软件或数据库产品,用于创建或管理DB
SQL:结构化查询语言(Structure Query Language)
用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据、库软件通用的语言。
根据不同的存储类型可以分为
关系型数据库
关系型数据库管理系统称为RDBMS,R指Relation
Oracle:功能强大,收费
MySQL 快捷、可靠 开源、免费
SQL Server(微软): 只能安装在Windows操作系统
DB2 (IBM):适合处理海量数据,收费
非关系型数据库
MongdoDB
Redis
Mysql数据库
MySQL是一个关系型数据库管理系统,具有快速、可靠和易于使用的特点。使用标准的sql语言,并且支持多种操作系统,支持多种语言。
MySQL语法规范 :
不区分大小写,建议关键字大写,表名、列名小写
每句话用;
注释 :
单行注释:#注释文字
单行注释:-- 注释文字(要有空格)
多行注释:/* 注释文字 */
sql
结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL优点:
不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL
简单易学
实际上强有力的语言,灵活使用可以进行非常复杂和高级的数据库操作
DDL
数据库存储数据的特点
将数据放到表中,表再放到库中 。
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名 具有 唯一性。
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的 设计。
表由列组成,我们也称列为字段。所有表都是由一个或多个列组成的,每一列 类似java中的”属性” 。
表中的数据是按行存储的,每一行类似于Java中的“对象”。
数据库表的基本概念
1、数据表
表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。美美格尔表都有一个表头和表体,表头定义表名和列名。表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
2、记录
记录也被称为一行数据,是表里的一行,在关系型数据库的表里,一行数据是指一条完整的记录。
3、字段
字段是表里的一列,用于保存每条记录的特定信息。数据表的一列包含了特定字段的全部信息。
设计表(数据类型)
char(n) 长度为n的定长字符串
varchar(n) 最大长度为n的可变长字符串
date 日期, 包含年月日
datetime 年月日 时分秒
整数
浮点
BLOB是一个二进制大对象,可以容纳可变数量的数据,用于存储图片视 频信息
/*
SELECT * FROM student;
*/
-- 脚本语言 不需要编译, 直接通过某种解释器解释执行
SELECT * FROM USER;
-- sql脚本
-- 创建数据库
CREATE DATABASE school_db;
CREATE DATABASE IF NOT EXISTS school_db;
-- 创建数据库并设置编码格式
CREATE DATABASE IF NOT EXISTS school_db CHARSET utf8;
-- 删除数据库
DROP DATABASE schoole_db;
-- mysql不能修改数据库名称
-- 修改字符集
ALTER DATABASE school_db CHARSET utf8;
-- 先创建一个基本的表 不涉及约束
-- 学生基本信息表 学号,姓名,性别,生日,身高,电话,登记时间
-- 用户表,角色,... sys_user sys_role hr_ cw
CREATE TABLE t_student(
num INT,
NAME VARCHAR(4),
sex CHAR(1),
birthday DATE,
height FLOAT(4,1),
phone CHAR(11),
register_time DATETIME
)
-- 删除表
DROP TABLE t_student
-- 学生基本信息表 学号,姓名,性别,生日,身高,电话,登记时间
/*
PRIMARY KEY 主键约束 不能为空,不能重复,一个表中只有一个唯一约束
AUTO_INCREMENT mysql主键自增(选填) 自增列是主键,类型是整数
NOT NULL 不能为空
UNIQUE 唯一约束
CHECK(height>100.0) 检查约束
default 默认值
comment 字段注释
*/
CREATE TABLE t_student(
num INT PRIMARY KEY AUTO_INCREMENT COMMENT'学号 主键',
NAME VARCHAR(4) NOT NULL COMMENT'姓名',
sex CHAR(1) DEFAULT '男' COMMENT'性别',
birthday DATE NOT NULL,
height FLOAT(4,1) CHECK(height>100.0),
phone CHAR(11) NOT NULL UNIQUE,
reg_time DATETIME
)
-- 删除表
DROP TABLE IF EXISTS t_student;
-- 修改表名 旧表名 新表名
RENAME TABLE student TO t_student;
-- 复制表 例如对某张表进行操作时,备份数据
CREATE TABLE stu LIKE t_student;
-- 添加,删除主键约束
ALTER TABLE t_student ADD PRIMARY KEY(num)
ALTER TABLE t_student DROP PRIMARY KEY
-- 设置主键自增,删除主键自增
ALTER TABLE t_student MODIFY num INT AUTO_INCREMENT;
ALTER TABLE t_student MODIFY num INT
-- 设置列不能为空,可以为空
ALTER TABLE t_student MODIFY NAME VARCHAR(4) NOT NULL;
ALTER TABLE t_student MODIFY NAME VARCHAR(4) NULL;
-- 添加唯一约束,删除唯一约束
ALTER TABLE t_student ADD CONSTRAINT uni_phone UNIQUE(phone)
ALTER TABLE t_student DROP INDEX uni_phone
-- 添加检查约束,删除检查约束
ALTER TABLE t_student ADD CONSTRAINT check_height CHECK(height>100)
ALTER TABLE t_student DROP CHECK check_height
-- 修改表结构 添加列,删除列,修改列的名称,类型
ALTER TABLE t_student ADD weight FLOAT(5,2)
ALTER TABLE t_student ADD weight FLOAT(5,2) AFTER height
ALTER TABLE t_student DROP weight
ALTER TABLE t_student CHANGE phone mobile CHAR(11)
ALTER TABLE t_student MODIFY mobile VARCHAR(11)
-- alter table 表名 add/drop/change/modify
DML
DML 数据操作语言(Data Manipulation Language)
常用操作:
insert(插入数据)
delete(删除数据)
update(修改数据)
-- now() 获取数据库所在系统的当前时间
-- 插入数据
INSERT INTO t_student(NAME,sex,birthday,height,mobile,reg_time)
VALUES('张三','男','2000-1-1',170.1,'13333333333',NOW())
INSERT INTO t_student SET NAME='李四',sex='女',birthday='2001-1-1',mobile='135555555',
reg_time=NOW()
INSERT INTO t_student(NAME,sex,birthday,height,mobile,reg_time)
VALUES('张三1','男','2000-1-1',170.1,'13333333331',NOW()),
('李四1','男','2000-1-1',170.1,'13333333332',NOW())
DROP TABLE stu
-- 复制表结构
CREATE TABLE stu LIKE t_student
-- 复制表数据
INSERT INTO stu(NAME,sex,birthday,height,mobile,reg_time)
SELECT NAME,sex,birthday,height,mobile,reg_time FROM t_student
-- 修改语句
UPDATE t_student SET NAME='王五'
-- 修改时需要注意条件
UPDATE t_student SET NAME='张三',sex='女' WHERE num = 1
-- 删除语句 删除注意删除条件
DELETE FROM t_student WHERE num = 1
DQL-基础查询
DQL(Data Query Language)数据查询语言查询是使用频率最高的一个操作, 可以从一个表中查询数据,也可以从多个表中查询数据
基础查询
语法:
select 查询列表 from 表名;
特点:
查询列表可以是:表中的字段、常量、表达式、函数
查询的结果是一个虚拟的表格
-- 查询语句 DQL 使用频率最高的语句
-- select 查询列表(结果) from 表名;
-- select 结果 from 表名 where 条件 排序 分组 行数限制 子查询
-- 多表 关联查询
-- 查询结果进行处理
-- 常量
SELECT 100,NAME FROM t_student
-- 表达式
SELECT 10*10,NAME FROM t_student
SELECT height+5,NAME FROM t_student
-- 函数
SELECT VERSION()
SELECT CHAR_LENGTH(NAME) FROM t_student
-- * 所有列
SELECT * FROM t_student
-- 查询特定列(建议使用的)
SELECT num,NAME,sex FROM t_student
-- 去除重复数据, 针对查询出来的结果, 要求是所有列都是相同
SELECT DISTINCT * FROM t_student
SELECT DISTINCT NAME,sex FROM t_student