Mysql入门

Mysql入门01

一、什么是数据库?

  • 数据库: Data Base (DB),是存储和管理数据的仓库。
  • 数据库管理系统: Data Base Management System (DBMS),操纵和管理数据库的大型软件。
  • SQL: Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

二、Mysql数据模型

  • 关系型数据库(RDBMS) :建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:

  • 使用表存储数据,格式统一,便于维护。
  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询。

三、SQL简介

  • SQL :一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

1、通用语法:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格 / 缩进来增强语句的可读性。
  • Mysql数据库的SQL语句不区分大小写。
  • 注释:
    1. 单行注释:-- 注释内容# 注释内容
    2. 多行注释:/* 注释内容 */

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. 数值类型

用于存储数字,包括整数和浮点数。常见的数值类型有:

  • 整数类型 :如tinyintIntsmallintbigint,用于存储没有小数的整数。
  • 浮点数类型 :如floatdoubledecimal,用于存储包含小数的数值。
1.32. 字符串类型

用于存储文本数据,包括定长和变长字符串。常见的字符串类型有:

  • 定长字符串 :如char,用于存储固定长度的字符串。
  • 变长字符串 :例如varchar,用于仓储可变长度的字符串。
  • 大文本 :如text,用于存储大量文本数据。
1.33. 日期时间类型

用于存储日期和时间信息。常见的日期时间类型有:

  • 日期 :例如date,只存储日期(年月日)。
  • 时间 :如time,仅存储时间。
  • 年份值 :如year,仅存储年份值。
  • 日期时间 :如datetimetimestamp,同时存储日期和时间。
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;
相关推荐
i道i5 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
Oak Zhang6 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
久醉不在酒7 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
WindFutrue7 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis
一只爱撸猫的程序猿9 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
计算机毕设源码qq-38365310419 小时前
(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)
java·开发语言·spring boot·mysql·课程设计
袁庭新9 小时前
Cannal实现MySQL主从同步环境搭建
java·数据库·mysql·计算机·java程序员·袁庭新
爱学习的白杨树9 小时前
MySQL中有哪几种锁?
数据库·mysql
惜.己10 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
Stara051112 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi