Mysql 基础(一)
Mysql 基础(一)
数据库
- 数据库 DataBase ( DB ):储存数据的仓库,数据有组织的进行存储
- 数据库管理系统 DataBase Management System ( DBMS ): 操纵和管理数据库的大型软件
- Structured Query Language ( SQL ): 操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准
Mysql 数据库
关系型数据库:建立在关系模型的基础上,由多张表相互连接的二维表组成的数据库
特点:
- 使用表存储数据,格式统一,便于维护
- 使用 SQL 语言操作,标准统一,方便使用
数据模型
客户端 连接 DBMS, 一个DBMS 可以创建多个数据库,每个数据库可以创建多张表
SQL
通用语法
- SQL 语句可以单行或多行书写,以分号结尾
- SQL 语句可以使用空格或缩进来增加可读性
- MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写
- 注释
- 单行注释:
--
或#
- 多行注释
/* 注释内容 */
- 单行注释:
SQL 分类
- DDL (Data Definition Language) 数据定义语言,用来定义数据库对象(数据库,表,字段)
- DML(Data Manipulation Language) 数据操作语言,用来对数据库表中数据进行增删改
- DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录
- DCL(Data Control Language) 数据控制语言,用来创建数据库用户,控制数据库访问权限
DDL
数据库操作
查询所有数据库
1
SHOW DATABASES;
查询当前数据库
1
SELECT DATABASE();
创建数据库
1
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
删除数据库
1
DROP DATABASE [IF EXISTS]数据库名;
使用数据库
1
USE 数据库名;
查看数据库默认编码格式
1
show variables like '%char%';
修改数据库默认编码格式
1
2set character_set_server=utf8;
set character_set_database=utf8;
表操作
查询
查询当前数据库所有表
1
SHOW TABLES;
查询表结构
1
DESC 表名;
查询指定表的建表语句
1
SHOW CREATE TABLE 表名;
创建
创建表
1
2
3
4
5
6CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
...
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
修改
向表中添加字段
1
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
修改表中字段
修改数据类型
1
ALTER TABLE MODIFY 字段名 新字段类型(长度);
修改字段名和数据类型
1
ALTER TABLE CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束];
删除字段
1
ALTER TABLE 表名 DROP 字段名;
修改表名
1
ALTER TABLE 表名 RENAME TO 新表名;
删除
删除表
1
DROP TABLE [IF EXISTS] 表名;
删除指定表并重新创建表
1
TUNRNCATE TABLE 表名;
数据类型
数值类型
类型 | 大小 | 有符号范围(SIGNED) | 无符号范围(UNSIGNED) | 描述 |
---|---|---|---|---|
TINYINT | 1 byte | (-128, 127) | (0, 255) | 小整数 |
SMALLINT | 2 bytes | (-32768, 32767) | (0, 65535) | 大整数 |
MEDIUMINT | 3 bytes | (-8388608, 8388607) | (0, 16777215) | 大整数 |
INT或INTEGER | 4 bytes | (-2147483648, 2147483647) | (0,4294967295) | 大整数 |
BIGINT | 8 bytes | (-2^63, 2^63-1) | (0, 2^64 -1) | 大整数 |
FLOAT | 4 bytes | 单精度浮点数 | ||
DOUBLE | 8 bytes | 双精度浮点数 | ||
DECIMAL | 依赖于D和M | 依赖于D和M | 小数值(精确定点数) |
示例
age TINYINT UNSIGNED;
无符号小整数score DOUBLE(4,1);
4位数字,1位小数
字符串
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过255字节的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65535 bytes | 二进制形式长文本数据 |
TEXT | 0-65535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16777215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXTONGBLOB | 0-16777215 bytes | 中等长度文本数据 |
LONBLOB | 0-4294967295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4294967295 bytes | 极大文本数据 |
示例
- CHAR(10) 十字节定长字符串,空白用空格代替
- VARCHAR(10) 最长十字节变长字符串,根据实际动态选取长度
时间日期
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
DATE | 3 | 1000-01-01至 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或连续时间 |
YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期时间值 |
DATESTAMP | 4 | 1000-01-01 00:00:00 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期时间值,时间戳 |
Mysql 基础(一)
http://mrzzzz1.github.io/2023/03/21/mysql1/