初始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;
相关推荐
YOU OU2 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_4 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森5 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_5 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白6 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面6 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧6 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈6 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy7 小时前
log4net 数据库存日志正确配置
数据库