MySQL手册

这篇博客详细介绍了MySQL数据库的各个方面,包括登录、数据类型、DDL、DML、DQL,以及表的关系、多表查询、子查询、约束、索引、视图、函数、触发程序、事务、日志、锁定语句、数据导入导出、备份、同步、报表、表结构、三大范式、存储引擎、字符集、排序规则、位、字节、字符和编码关系、模型结构设计和服务器参数配置等,同时涵盖了用户、权限和角色管理。
摘要由CSDN通过智能技术生成

1.登录

# 本地登录
mysql -uroot –p  //隐藏密码
mysql -u root -p
mysql -uroot -proot  //明文密码(注意:-p后没有空格)
mysql -u root -proot
# 远程登录
mysql -h127.0.0.1 -P3306 -uroot -p
mysql -h 127.0.0.1 -P 3306 -u root -p
mysql -h127.0.0.1 -P3306 -uroot -proot
mysql -h 127.0.0.1 -P 3306 -u root -proot
mysql -h 127.0.0.1 -P 3306 --user=root --password=root

2.数据类型

数值类型

类型 存储大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte(字节) (-128,127) (0,255) 小整数值
SMALLINT 2 byte(字节) (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 byte(字节) (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 byte(字节) (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 byte(字节) (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

布尔类型

类型 存储大小 说明 用途
BOOL - MySQL 不存在 BOOL,但是是TINYINT(1)的同义词 布尔值
BOOLEAN - MySQL 不存在 BOOLEAN,但是是TINYINT(1)的同义词 布尔值
TINYINT(1) 1 byte(字节) zero(0)值被视为假。非zero(0)值视为真。 布尔值

浮点类型

UNSIGNED:无符号、ZEROFILL:0填充

类型 存储大小 说明 用途
FLOAT 4 byte(字节) FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
M是小数总位数,D是小数点后面的位数。
如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。
单精度
浮点数值
DOUBLE 8 byte(字节) DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
M是小数总位数,D是小数点后面的位数。
如果M和D被省略,根据硬件允许的限制来保存值。双精度浮点数精确到大约15位小数位。
双精度
浮点数值
DECIMAL(M,D) 对DECIMAL(M,D)
如果M>D,为M+2
否则为D+2
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
压缩的“严格”定点数。M是小数位数(精度)的总数,D是小数点(标度)后面的位数。
小数点和(负数)的‘-’符号不包括在M中。
如果D是0,则值没有小数点或分数部分。
DECIMAL整数最大位数(M)为65。
支持的十进制数的最大位数(D)是30。
如果D被省略, 默认是0。如果M被省略, 默认是10。
定点
小数值

日期和时间类型

类型 存储大小 范围 格式 用途
DATE 3 byte(字节) 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 byte(字节) ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值
YEAR 1 byte(字节) 1901/2155 YYYY 年份值
DATETIME 8 byte(字节) 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日期和时间
TIMESTAMP 4 byte(字节) 1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒
北京时间为:2038-1-19 11:14:07
格林尼治时间为: 2038年1月19日 凌晨 03:14:07
YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

类型 说明 用途
CHAR(n) n:表示要存储的最大字符数
长度范围:0-255 byte(字节)
定长字符串
VARCHAR(n) n:表示要存储的最大字符数
长度范围:0-65535 byte(字节)
VARCHAR值保存时不进行填充。
当值保存和检索时尾部的空格仍保留,符合标准SQL。
变长字符串
TINYBLOB 长度范围:0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 长度范围:0-255 bytes 短文本字符串
BLOB 长度范围:0-65 535 bytes 二进制形式的长文本数据
TEXT 长度范围:0-65 535 bytes 长文本数据
MEDIUMBLOB 长度范围:0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 长度范围:0-16 777 215 bytes 中等长度文本数据
LONGBLOB 长度范围:0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 长度范围:0-4 294 967 295 bytes 极大文本数据
枚举类型 其值是从允许值的列表中选择的 -
SET类型 ET由多个set成员组成的列值用用逗号(,)分隔的成员指定。
这样的结果是 SET成员值本身不应包含逗号。
-

3.DDL:数据定义语言

--查看所有数据库		
show databases;
--查看某个数据库的定义的信息	
show create database `数据库名`;
--创建数据库
CREATE {
  DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name;
CREATE DATABASE IF NOT EXISTS `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
--删除数据库		
DROP DATABASE [IF EXISTS] `数据库名`;
--查看正在使用的数据库	
select database();
--使用某个数据库		
use `数据库名`;


-- 创建表
CREATE TABLE IF NOT EXISTS `表名` (
	`id` BIGINT(20) PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
	`字段名` 类型(长度) 是否为空 默认值 约束 注释,
	`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
	`update_time` timestamp NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '表注释' ROW_FORMAT = Dynamic;
--查看所有表		
show tables;  
--查看表结构		
desc `表名`;  
--删除表			
drop table `表名`;  


--修改表:修改表名			
RENAME TABLE 表名 to 新表名;
ALTER TABLE 表名 RENAME TO 新表名;
--修改表:修改表注释			
ALTER TABLE 表名  COMMENT '新的注释';

--修改表:删除字段			
ALTER TABLE 表名  DROP 字段名;
--修改表:添加字段			
ALTER TABLE 表名 ADD 字段名 类型(长度) [约束] COMMENT '字段注释';   //自动添加到表字段的末尾
ALTER TABLE 表名 ADD 字段名 类型(长度) [约束] COMMENT '字段注释' FIRST;   //设定位第一列
ALTER TABLE 表名 ADD 字段名 类型(长度) [约束] COMMENT '字段注释' AFTER 字段名;   //设定位于某个字段之后

--修改表:修改字段类型		
ALTER TABLE 表名 MODIFY 字段名 类型(长度) [约束];
--修改表:修改字段注释		
ALTER TABLE 表名 MODIFY 字段名 类型(长度) [约束] COMMENT '新的注释';
--修改表:修改字段类型、字段名、注释	
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) [约束] 默认值 注释;
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) NULL DEFAULT NULL COMMENT '注释' FIRST;
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) NULL DEFAULT NULL COMMENT '注释' AFTER `字段名`;

4.DML:数据操作语言

-- 插入表记录
insert into(字段1,字段2,字段3..) values  (1,2,3..);  --向表中插入某些字段
insert intovalues (1,2,3..);  --向表中插入所有字段,字段的顺序为创建表时的顺序

-- 更新表记录
update 表名 set 字段名=,字段名=,...;  --更新所有记录的指定字段
update 表名 set 字段名=,字段名=,... where 条件;  --更新符合条件记录的指定字段

-- 删除记录
DELETE FROM 表名称 WHERE 列名称 =;  --如果删除表中的部分数据
DELETE 别名 FROM 表名称 别名 WHERE 列名称 =;  --如果删除表中的部分数据
delete from 表名称;  --是从表中把数据一条一条的删除,所以这样删除大表数据的时候一条一条删会很慢
truncate table 表名称;  --它不管表中有多少记录,它会先摧毁这个表结构,然后重建表结构,所以这样在删除大表数据的时候就会很快;

5.DQL:数据查询语言

语法:select [distinct]  * | 列名,列名 fromwhere 条件;

-- 简单查询
	select * from 表名;  --查全表
	select 字段1,字段2,…… from 表名;  --按字段查找
	-- 别名查询.使用的关键字是as(as可以省略的)
	select 表别名.字段1,表别名.字段2,…… from 表名 表别名;  --表别名
	select 字段1 别名,字段2 别名,…… from 表名;  --列别名(1.更清楚的标记这一列是什么 2.简化列名)
	-- 去掉重复值
	select distinct 字段 from 表名;
	-- 查询结果是表达式(运算查询)
	select 名称,价格 旧,(价格+10)from 表名;
	
-- 条件查询
	-- 查询指定字段 = 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 =;
	-- 查询指定字段 != 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 !=;
	-- 查询指定字段 > 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 >;
	-- 查询指定字段 在指定范围内 的所有信息
	SELECT * FROM product WHERE price >= 2000 AND price <=10000;  --标准写法
	SELECT * FROM product WHERE price BETWEEN 2000 AND 10000;  --简易写法 效果一样
	-- 查询指定字段<指定值 或 指定字段>指定值 的所有信息
	select * from 表名 where 字段名 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值