Mysql入门01
一、什么是数据库?
- 数据库:
Data Base (DB)
,是存储和管理数据的仓库。 - 数据库管理系统:
Data Base Management System (DBMS)
,操纵和管理数据库的大型软件。 - SQL:
Structured Query Language
,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。
二、Mysql数据模型
- 关系型数据库
(RDBMS)
:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
特点:
- 使用表存储数据,格式统一,便于维护。
- 使用SQL语言操作,标准统一,使用方便,可用于复杂查询。
三、SQL简介
- SQL :一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。
1、通用语法:
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格 / 缩进来增强语句的可读性。
- Mysql数据库的SQL语句不区分大小写。
- 注释:
- 单行注释:
-- 注释内容
或# 注释内容
- 多行注释:
/* 注释内容 */
- 单行注释:
2、SQL语句通常被分为四大类:
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
四、SQL语句
1、DDL
DDL英文全称是Data Definition Language
,数据定义语言,用来定义数据库对象(数据库、表)。
1.1数据库操作
1.11查询
- 查询所有数据库:
show databases;
- 查询当前数据库:
select database();
1.12使用
- 使用数据库:
use 数据库名;
1.13创建
- 创建数据库:
create database [ if not exists ] 数据库名;
1.14删除
- 删除数据库:
drop database [ if exists ] 数据库名;
1.15注意事项
- 上述语法中的
database
,也可以替换成schema
1.2表的操作
1.21创建
mysql
create table 表名(
字段1 字段类型 [约束] [comment 字段1注释],
......
字段n 字段类型 [约束] [comment 字段n注释]
) [comment 表注释];
1.22约束
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
- 目的:保证数据库中的数据的正确性、有效性和完整性。
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key (auto_ increment自增) |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
1.3三种数据类型
Mysql中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
1.31. 数值类型
用于存储数字,包括整数和浮点数。常见的数值类型有:
- 整数类型 :如
tinyint
、Int
、smallint
、bigint
,用于存储没有小数的整数。 - 浮点数类型 :如
float
、double
、decimal
,用于存储包含小数的数值。
1.32. 字符串类型
用于存储文本数据,包括定长和变长字符串。常见的字符串类型有:
- 定长字符串 :如
char
,用于存储固定长度的字符串。 - 变长字符串 :例如
varchar
,用于仓储可变长度的字符串。 - 大文本 :如
text
,用于存储大量文本数据。
1.33. 日期时间类型
用于存储日期和时间信息。常见的日期时间类型有:
- 日期 :例如
date
,只存储日期(年月日)。 - 时间 :如
time
,仅存储时间。 - 年份值 :如
year
,仅存储年份值。 - 日期时间 :如
datetime
、timestamp
,同时存储日期和时间。
1.4DDL的表操作
1.41查询
- 查询当前数据库所有表:
show tables;
- 查询表结构:
desc 表名;
- 查询建表语句:
show create table 表名;
1.42修改
- 添加字段:
alter table 表名 add 字段名 类型(长度)[comment 注释] [约束];
- 修改字段类型:
alter table 表名 modify 字段名 新数据类型(长度);
- 修改字段名和字段类型:
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
- 删除字段:
alter table 表名 drop column 字段名;
- 修改表名:
rename table 表名 to 新表名;
2、DML
DML英文全称是Data Manipulation Language(数据操作语言)
,用来对数据库中表的数据记录进行增、删、改操作。
2.1添加数据(insert)
- 指定字段添加数据:
insert into 表名(字段名1,字段名2) values (值1,值2);
- 全部字段添加数据:
insert into 表名values (值1,值2, ...);
- 批量添加数据 (指定字段) :
insert into 表名(字段名1,字段名2) values (值1,值2), (值1,值2);
- 批量添加数据 (全部字段) :
insert into表名values (值1,值2, ... (值1,值2...);
mysql
-- DML : 插入数据 - insert
-- 1、 为 tb_emp 表的username, name, gender 字段插入值
insert into tb_emp(username, name, gender, create_time, update_time) values ('wuji', '张无忌', 1, now(), now());
-- 2、 为 tb_emp 的所有字段插入值
insert into tb_emp(id, Username, password, name, gender, image, job, entrydata, create_time, update_time)
values (null, 'zhiruo', '123', '周芷若', 2, '1.jpg', 1, '2024-10-03', now(), now());
insert into tb_emp values (null, 'zhiruo01', '123', '周芷若', 2, '1.jpg', 1, '2024-10-03', now(), now());
-- 3、 批量为 tb_emp 的username, name, gender 字段插入数据
insert into tb_emp (username, name, gender, create_time, update_time) values ('guojing', '郭靖', 1, now(), now()),
('yangguo', '杨过', 1, now(), now());
注意事项:
- 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内。
2.2修改数据(update)
修改数据语法: update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , ...[where 条件];
mysql
-- DML : 更新数据 - update
-- 1、 将 tb_emp 表的ID为1的员工 姓名name修改为'张三'
update tb_emp set name = '张三', update_time = now() where id = 1;
-- 2、 将 tb_emp 表的所有员工入职时间更新为 '2023-10-03'
update tb_emp set entrydata = '2023-10-03', update_time = now();
注意事项:
- 修改语句的条件可有可无,如果没有条件,则会修改整张表的所有数据。
2.3删除数据(delete)
删除数据语法: delete from 表名 [ where 条件];
mysql
-- DML : 删除数据 - delete
-- 1、 删除 tb_emp 表中 ID为5的员工
delete from tb_emp where id = 5;
-- 2、 删除 tb_emp 表中的所有员工
delete from tb_emp;