MySQL 基础篇
1. 概述
数据库概念
名称 | 全称 | 简称 |
---|---|---|
数据库 | 存储数据的仓库,数据是有组织的进行存储 | DataBase(DB) |
数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System(DBMS) |
SQL | 操作关系型数据库的编程语言,定义了一套操作关系数据库的统一标准 | Structured Query Language |
主流关系型数据库
Oracle MySQL Microsoft SQL Server PostgreSQL MariaDB IBM Db2
SQl 为操作关系型数据库统一了标准
关系型数据库(RDBMS)
概念 : 建立在关系模型基础上,由多张互相连接的二维表组成的数据库。
特点
- 使用表存储数据,格式统一,便于维护。
- 使用SQL语言操作,标准统一,使用方便。
MySQL 数据模型
通过MySQL客户端连接数据库管理系统(DBMS)创建数据库。通过SQL语句在对应的数据库中创建表
在一个数据库服务器可以创建多个数据库。一个数据库可以创建多张表。
基于表进行数据存储的数据库 称为关系型数据库。
版本
官网 https://www.mysql.com/
社区版 MySQL Community Server 免费 MySQL不提供任何技术支持
商业版 MySQL Enterprise Edition 收费 可试用30天,官方提供技术支持
2. SQl语句
1. SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格/缩进来增强语句的可读性。
- MySQL数据的SQL语句不区分大小写,关键字建议大写。
- 注释
- 单行注释 – 或者 # 注释内容(MySQL特有)
- 多行注释 /* 注释内容 */
2. SQL分类
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言, 用来定义数据库对象(数据库,表,字段) |
DML | Date Manipulation Language | 数据操作语言, 用来对数据库库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言, 用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言, 用来创建数据库用户,控制数据库的访问权限 |
3. MySQL 数据类型
1. 数值类型
类型 | 大小 | 有符号范围 signed | 无符号范围unsigned |
---|---|---|---|
TINYINT | 1 bytes | (-128,127) | (0, 255) |
SMALLINT | 2 bytes | (- 32769,32767) | (0 ,65535) |
INT | 4 bytes | (-2147483648,2147483647) | (0, 4294967295) |
BIGINT | 8 bytes | (-263,-263-1) | (0,2^64-1) |
FLOAT | 4 bytes | 单进度 浮点型 | |
DOUBLE | 8 bytes | 双进度 浮点型 |
创建 age 字段 类型可以用无符号的TINYINT age tinyint unsigned
2. 字符创类型
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0 - 255 bytes | 定长字符串 |
VARCHAR | 0 - 65535 bytes | 变长字符创 |
TEXT | 0 - 65535 bytes | 长文本数据 |
BLOB | 0 - 65535 bytes | 二进制形式的长文本数据 |
MEDIUMTEXT | 0-16777215 bytes | 中等长度的文本数据 |
LONGTEXT | 0-4292969295 bytes | 极大的文本数据 |
- 定长 : char(10) 完全占10个字节大小的空间 性能高
- 变长 : varchar(10) 占用字节的大小取决于写入字符串的大小 性能较差
3. 日期时间类型
类型 | 大小 | 格式 | 描述 |
---|---|---|---|
DATE | 3 bytes | YYYY-MM-DD | 日期值 |
TIME | 3 bytes | HH:MM:SS | 时间或持续时间 |
YEAR | 1 bytes | YYYY | 年 |
DATETIME | 8 bytes | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 bytes | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
4. DDL
1. DDL 数据库操作
-- 查询所有数据库
SHOW DATABASES;
-- 查询当前数据库
SELECT DATABASE();
CREATE DATABASE[IF NOT EXISTS] 数据库名[ DEFAULT CHARSET 字符集] [COLLATE 排序规则];
-- 创建一个数据库为 test 字符集 为 utf8mb4 占4个字节 如果数据库不存在则创建
create datebase if ont exists test default charset utf8mb4;
create database test1
create schema test1;
DROP DATABASE[IF EXISTS] 数据库名;
DROP DATABASE if exists TEST; --删除test数据库 如果存在则删除
USE 数据库名;
use test; --进入数据库
2. DDl 表操作
1. 查询
SHOW TABLES; -- 需要先进入对应的库
DESC 表名; -- 查看表的字段
SHOW CREATE TABLE 表名; -- 查询建表语句
2. 创建
CREATE TABLE 表名 (
字段1 字段1类型[ COMMENT 字段1注释],
字段2 字段2类型[ COMMENT 字段2注释], -- 每个字段后面都有一个逗号 最后一个没有逗号。
....
字段n 字段n类型[ COMMENT 字段n注释]
)[COMMENT 表注释];
create table tb_user(
id int comment '用户id',
name varchar(50) comment '用户名称', -- mysql 数据 字符串 varchar 50指定字符串长度
age int comment '用户年龄',
gender varchar(1) comment '性别' --最后一个字段不加 逗号
) comment '用户表'; -- 表的注释
create table ok(
id int comment'ID',
name varchar(20) comment'姓名',
age int comment'年龄'
)comment'信息表';
DESC tb_user; --查看表的字段及类型
-----------------------
create table tem (
id int,
ygid varchar(10) comment'员工工号',
name varchar(10) comment '员工姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcader char(18) comment '身份证号',
sj date comment'入职时间'
)comment '员工表';
3. 修改
- 添加字段
ALTER TABLE表名 ADD 字段名 类型(长度)[comment 注释] [约束];
-- 为一个表 添加字段
alter table tem add addTB varchar(10) comment"这是注释";
-- 在表的某个字段后添加字段
alter table mod1 add xb varchar(20) after id;
-- 在表的第一个字段前添加字段
alter table mod1 add name1 varchar(20) first;
- 修改字段
--修改数据类型和注释
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度)[comment注释];
alter table tem modify addTB char(3) comment "新的注释";
--修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[comment 注释][约束];
alter table tem change addTB NetTB varchar(5) comment"修改了字段";
- 删除字段
-- 删除字段
ALTER TABLE 表名 DROP 字段名;
alter table tem drop sj;
- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
alter table tem rename ok123;
alter table ok123 rename to NewTB;
- 删除表
-- 直接删除表
DROP TABLE [IF EXISTS] 表名;
drop table if exists NewTB;
-- 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
truncate table t1234; -- 删除表并 重新创建表(数据被删除)
5. DML
1. 介绍
-
DML 全称是 Data Manipulation Language (数据操作语言),用来对数据库中的表的数据记录进行增删改操作。
-
添加关键字 INSERT
-
修改关键字 UPDATE
-
删除数据 DELETE
2. MDL添加数据
指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2,...);
insert into classTB(id,name,phone)values(2,"王海军",189342556);
给全部字段添加数据
INSERT INTO 表名 VALUES((值1,值2,...);
insert into classTB values(1,"小",001,"北京市丰台",1998493234);
批量添加数据
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2...),(值1,值2...),(值1,值2...);
insert into classTB (name,Phone)values("王浩平","19844350993"),("张伞","143536685643"),("李明坤","12897749646");
INSERT INTO 表名 VALUES(值1,值2...),(值1,值2...),(值1,值2...);
insert into classTB values (9,"张晓霞",004,"陕西省西安市","18450938832"),(23,"李鹏",05,"铜川市","1898823424");
注意
- 插入数据时, 指定的字段顺序需要与值的顺序是一一对应到的。
- 字符串和日期类型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内。
3. MDL修改数据
修改数据
UPDATE 表名 SET 字段名1 = 值1,字段名2=值2,... [WHERE 条件];
update classTB set name="张小名&