初始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;
相关推荐
i220818 Faiz Ul20 分钟前
动漫商城|基于springboot + vue动漫商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·动漫商城系统
iNgs IMAC28 分钟前
redis 使用
数据库·redis·缓存
bearpping1 小时前
MySQL压缩版安装详细图解
android·mysql·adb
TDengine (老段)2 小时前
TDengine IDMP 可视化 —— 面板
大数据·数据库·人工智能·物联网·ai·时序数据库·tdengine
卓怡学长2 小时前
m315基于java的水果网上商城的开发与设计
java·数据库·spring·tomcat·maven·intellij-idea
刘~浪地球2 小时前
Redis 从入门到精通(八):有序集合操作详解
数据库·chrome·redis
fe7tQnVan3 小时前
MyBatis-动态sql与高级映射
数据库·sql·mybatis
计算机安禾3 小时前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio
道清茗4 小时前
【MySQL知识点问答题】高级复制技术
数据库·mysql
IT邦德4 小时前
Oracle备份恢复概览
数据库·oracle