初始MySQL

1、数据库

概念:数据库,英文名称为Database,简称DB。从专业角度解释为存储在计算机磁盘上的有组织,可共享的大量数据的集合。

1.1、数据库的类型

数据库分为关系型数据库非关系数据库 两大类。常见的关系型数据库由MySQL 、 Oracle 、 SQL 、Server 、 SQLite 、 DB2等。

数据库管理系统,英文名称为Database Management System,简称DBMS。主要用于科学组织和存储数据、高效的获取和维护数据。

2、结构化查询语言

2.1、SQL分类

名称 描述 命令
数据定义语言(DDL) 数据库、数据表的创建、修改和删除 CREATE、ALTER、DROP
数据操作语言( DML ) 数据的增加、修改和删除 INSERT、UPDATE、DELETE
数据查询语言( DQL ) 数据的查询 SELECT
数据控制语言( DCL ) 用户授权、事务的提交和回滚 GRANT、COMMIT、ROLLBACK

2.2、数据库操作

2.2.1、创建数据库的语法

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;

示例:创建数据库lesson,并指定字符集为 GBK,排序规则为 GBK_CHINESE_CI

sql 复制代码
CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;

2.2.2、修改数据库的语法

sql 复制代码
ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则;

示例:修改数据库lesson的字符集为 UTF8,排序规则为 UTF8_GENERAL_CI

sql 复制代码
ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

2.2.3、删除数据库的语法

sql 复制代码
DROP DATABASE [IF EXISTS] 数据库名称;

示例:删除数据库lesson

sql 复制代码
DROP DATABASE IF EXISTS lesson;

2.2.4、查看数据库语法

sql 复制代码
SHOW DATABASES;

2.2.5、查看数据库语法

sql 复制代码
USE 数据库名称;

示例:使用数据库lesson

sql 复制代码
USE lesson;

3、列类型

在 MySQL中,常用列类型主要分为数值类型、日期时间类型、字符串类型。

3.1 数值类型

类型 说明 存储需求
tinyint 非常小的数据 1字节
smallint 较小的数据 2字节
mediumint 中等大小的数据 3字节
int 标准整数 4字节
bigint 较大的整数 8字节
float 单精度浮点数 4字节
double 双精度浮点数 8字节
decimal 字符串形式的浮点数 m个字节

3.2、日期时间类型

类型 说明
DATE YYYY-MM-dd,日期格式
TIME HH:mm:ss,时间格式
DATETIME YY-MM-dd HH:mm:ss
TIMESTAMP YYYY-MM-dd HH:mm:ss格式表示的时间戳
YEAR YYYY格式的年份值

3.3、字符串类型

类型 说明
char (M) 固定长字符串,检索快但费空间, 0 <= M <= 255
varchar (M) 可变字符串0 <= M <= 65535
text 文本串

3.4、列类型修饰属性

属性名 示例
UNSIGNED INT(4) UNSIGNED,表示只能为4位大于等于0的整数
ZEROFILL INT(4) ZEROFILL,如果给定的值为10,此时只有2位,而该列需要4位,不足的2位由0来填充,最终值为0010
NOT NULL VARCHAR (20) NOT NULL,表示该列数据不能为空值
DEFAULT INT(4) DEFAULT 0,表示该列不赋值时默认为0
AUTO_INCREMENT INT(11) AUTO_INCREMENT NOT NULLPRIMARY KEY。第一次为该列中插入值时为1,第二次为2

4、数据表操作

4.1、 数据表类型

MySQL中的数据表类型有许多,如 MyISAM、InnoDB、HEAP、BOB、CSV等。其中最常用的就是MyISAM和 InnoDB

4.2、MyISAM与 InnoDB的区别

InnoDB 支持事务、行锁、外键,适合业务核心表;MyISAM 无事务、表锁,适合读多写少的静态表。

4.3、创建数据表

sql 复制代码
CREATE TABLE [IF NOT EXISTS] 数据表名称(
    字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
    字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
    字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
    ......
    字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];

示例:创建学生表,表中有字段学号、姓名、性别、年龄和成绩

sql 复制代码
CREATE TABLE IF NOT EXISTS student(
    `number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键',    name VARCHAR(30) NOT NULL COMMENT '姓名',
    sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他',    age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
    score DOUBLE(5, 2) UNSIGNED COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';

4.4、修改数据表

  • 修改表名
sql 复制代码
ALTER TABLE 表名 RENAME AS 新表名;

示例:将student表名称修改为 stu

sql 复制代码
ALTER TABLE student RENAME AS stu;
  • 增加字段
sql 复制代码
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];

示例:在 stu表中添加字段联系电话(phone),类型为字符串,长度为11,非空

sql 复制代码
ALTER TABLE stu ADD phone VARCHAR(11) NOT NULL COMMENT '联系电话';
  • 查看表结构
sql 复制代码
DESC 表名; -- 查看表结构
  • 修改字段
sql 复制代码
-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];

示例: 将 stu表中的 sex字段的类型设置为 VARCHAR,长度为2,默认值为'男',注释为 "性别,男,女,其他"

sql 复制代码
ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男,女,其他';

示例:将 stu表中 phone字段修改为 mobile,属性保持不变

sql 复制代码
ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';
  • 删除字段
sql 复制代码
ALTER TABLE 表名 DROP 字段名;

示例:将 stu表中的 mobile字段删除

sql 复制代码
ALTER TABLE  stu DROP mobile;

4.5、删除数据表

sql 复制代码
DROP TABLE [IF EXISTS] 表名;

示例:删除数据表 stu

sql 复制代码
DROP TABLE IF EXISTS stu;
相关推荐
Demon1_Coder8 小时前
Day4-微服务-Seata默认事务
java·数据库·微服务
疯狂热爱代码的00后8 小时前
入门必看! MySQL增删改查全套示例SQL 直接复制运行
mysql
我是大猴子8 小时前
Redis为什么不适合做持久化和DB的区别在哪里
数据库·redis·缓存
huipeng9268 小时前
企业级微服务开发实战(二):微服务基础设施搭建与中间件部署
java·redis·mysql·spring cloud·微服务·nacos·rabbitmq
mN9B2uk178 小时前
数据库锁总结
数据库·oracle
闪电悠米8 小时前
黑马点评-秒杀优化-04_lua_and_db_fallback
服务器·开发语言·网络·数据库·缓存·junit·lua
可乐ea8 小时前
【知识获取与分享社区项目 | 项目日记第 24 天】终章总结:从认证、发布、计数、Feed、搜索到 RAG:完整复盘一个知识社区后端系统
java·spring boot·redis·mysql·elasticsearch·ai·kafka
Jun6268 小时前
QT(5)-第三方日志系统
开发语言·数据库·qt
骄马之死8 小时前
Redis 核心知识点总结
数据库·redis·缓存
basketball6168 小时前
Redis基础:6. 哨兵模式
数据库·redis·bootstrap