Mysql笔记
1. 基础
1.1 启动与关闭
cmd中控制Mysql
1.1.1 启动服务
net start mysql80
1.1.2 关闭服务
net stop mysql80
1.2 退出
退出数据库的3种方式
mysql > exit;
mysql > quit;
mysql > \q;
1.3 修改提示符
1.3.1 链接客户端时通过参数指定
*>mysql -u -p -prompt 提示符
结尾不可加分号
1.3.2 链接上客户端后通过prompt命令修改
mysql>prompt 提示符
1.3.3 提示符
\D 完整的日期
\d 当前数据库
\h 服务器名称
\u 当前用户
1.4 常用的命令
显示当前服务器版本
SELECT VERSION();
显示当前日期和时间
SELECT NOW();
显示当前用户
SELECT USER();
1.5 语句规范
- 关键字与函数名称全部大写
- 数据库名称、表名称、字段名称全部小写
- SQL语句必须以分号结尾
1.6 常识
- Mysql默认端口号是:3306
- Mysql中超级用户叫做:root
2. 数据类型
2.1 Text类型
CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度,最多255个字符
VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度,最多255个字符
TINYTEXT 存放最大长度为255个字符的字符串
TEXT 存放最大长度为65,535个字符的字符串
BLOB 用于BLOBs (Binary Large OBjects),存放最多65,535字节的数据
MEDIUMTEXT 存放最大长度为16,777,215个字符的字符串
MEDIUMBLOB 用于BLOBs,存放最多16,777,215个字节的数据
LONGTEXT 存放最大长度为4,294,967,295个字节的数据
LONGBLOB 用于BLOBs,存放最多4,294,967,295个字节的数据
ENUM(x,y,z,etc) 允许你输入可能值的列表,可以在ENUM列表中可列出最大65535个值,如果列表中不存在插入的值,则插入空值,这些值是按照你输入的顺序存储的
ENUM('X','Y','Z')
SET 与ENUM类似,SET最多只能包含64个列表项,不过SET可存储一个以上的值
2.2 Number类型
TINYINT(size) -128到127常规或0到255无符号,括号中规定最大位数
SMALLINT(size) -32768到32767常规或0到65535无符号,括号中规定最大位数
MEDIUMINT(size) -8388608到8388607普通或0到16777215无符号,在括号中规定最大位数
INT(size) -2147483648到2147483647常规,0到4294967295无符号,在括号中规定最大位数
BIGINT(size) -9223372036854775808到9223372036854775807常规或0到18446744073709551615无符号,括号规定最大位数
FLOAT(size,d) 带有浮动小数点的小数字,在括号中规定最大位数,在 d 参数中规定小数点右侧的最大位数
DOUBLE(size,d) 带有浮动小数点的大数字,在括号中规定最大位数,在d参数中规定小数点右侧的最大位数
DECIMA(size,d) 作为字符串存储的DOUBLE类型,允许固定的小数点
整数拥有额外的选项UNSIGNED,将该数值变化为无符号
2.3 Date类型
DATE() 日期,格式:YYYY-MM-DD
支持的范围是从'1000-01-01'到'9999-12-31'
DATETIME() 日期和时间的组合,格式:YYYY-MM-DD HH:MM:SS
支持的范围是从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
DATESTAMP() 时间戳,TIMESTAMP值使用Unix纪元('1970-01-01 00:00:00'UTC)至今的描述来存储,格式:YYYY-MM-DD HH:MM:SS
支持的范围是从'1970-01-01 00:00:01'UTC到'2038-01-09 03:14:07'UTC
TIME() 时间,格式:HH:MM:SS
支持的范围是从'-838:59:59'到'838:59:59'
YEAR() 2位或4位格式的年
4位格式支持的范围是从1901到2155
2为格式支持的范围是从70到69,表示从1970到2069
- 即使DATETIME和TIMESTAMP返回相同的格式,它们工作方式很不同
- 在INSERT或UPDATE查询中,TIMESTAMP自动把自身设置为当前的日期和时间
- TIMESTAMP也接受不同的格式,比如:
YYYY-MM-DD HH:MM:SS
YY-MM-DD HH:MM:SS
YYYY-MM-DD
YY-MM-DD
3. 操作数据库
3.1 创建数据库
CREATE DATABASE 数据库名称;
3.1.1 忽略错误
创建数据库时添加IF NOT EXISTS字段会忽略产生的错误,但是依旧会创建警告
CREATE DATABASE IF NOT EXISTS 数据库名称;
3.1.1.1 查询警告信息
SHOW WARNINGS;
3.1.2 设置编码
创建数据库时声明使用的编码
CREATE DATABASE 数据库名称 CHARACTER SET 编码;
3.1.2.1 修改数据库编码
ALTER DATABASE 数据库名称 CHARACTER SET 编码;
3.2 查询数据库
3.2.1 查询某个数据库
SHOW CREATE DATABASE 数据库名称;
3.2.2 查询所有数据库
SHOW DATABASES;
3.3 打开数据库
USE 数据库名称;
3.3.1 显示当前打开的数据库
SELECT DATABASE();
3.4 删除数据库
DROP DATABASE 数据库名称;
4. 数据表
4.1 概述
数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础
4.2 创建数据表
CREATE TABLE 数据表名称(
数据名称 数据类型,
数据名称 数据类型
)
最后一个数据不能加逗号
4.3 查看数据表
SHOW TABLES;
4.3.1 查看其它数据库的数据表
SHOW TABLES FROM 数据库名称;
4.3.2 查看数据表结构
SHOW COLUMNS FROM 数据表名称;
4.4 插入记录
4.4.1 为特定的列赋值
INSERT 数据表名称(列名称,列名称) VALUES(值,值);
4.4.2 为所有列赋值
如果不声明插入的列,则默认为所有列赋值
如果有自增字段,可以为其赋值null或DEFAULT,不影响运行
INSERT 数据表名称 VALUES(值,值,值,值);
添加逗号同时为多列赋值
INSERT 数据表名称 VALUES(值,值,值,值),(值,值,值,值);
INSERT 数据表名称 SET;
4.5 查找记录
4.5.1 查找全部的记录
SELECT * FROM 数据表名称;
4.6 修改数据表
4.6.1 添加单列
ALTER TABLE 数据表名称 ADD 列名称 数据类型;
声明位置在目标列之后
ALTER TABLE 数据表名称 ADD 列名称 数据类型 AFTER 目标列名称;
声明位置最前面
ALTER TABLE 数据表名称 ADD 列名称 数据类型 FIRST;
4.6.2 添加多列
无法声明位置关系,默认在最后
ALTER TABLE 数据表名称 ADD(
列名称 数据类型,
列名称 数据类型
)
4.63修改一列的值
UPDATE 数据表名称 SET 值;
4.6.3 删除列
ALTER TABLE 数据表名称 DROP 列名称,DROP 列名称;
条件
UPDATE 数据表名称 SET 列名称 值 WHERE 条件;
5. 约束
约束保证数据的完整性和一致性
约束分为表级约束和列级约束
约束类型包括:
NOT NULL(非空约束)
RPIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束)
5.1 非空约束
5.1.1 非空
NOT NULL设置列的数值不能为空
CREATE TABLE 数据表名称(
列名称 数据类型 NOT NULL,
列名称 数据类型 NOT NULL
);
5.1.2 空值
NULL设置列的数值运行为空
默认为空,可以省略
CREATE TABLE 数据表名称(
列名称 数据类型 NULL,
列名称 数据类型
);
5.2 主键约束
每张数据表只能存在一个主键约束
主键约束保证记录的唯一性
主键约束自动为NOT NULL
主键约束使用PRIMARY KEY声明
CREATE TABLE 数据表名称(
列名称 数据类型 PRIMARY KEY,
列名称 数据类型
);
5.2.1 自动编号
自动编号,必须和主键约束组合使用
默认情况下,起始值为1,每次增量为1
自动编号使用AUTO_INCREMENT声明
CREATE TABLE 数据表名称(
列名称 数据类型 AUTO_INCREMENT PRIMARY KEY,
列名称 数据类型
);
5.3 唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束
唯一约束使用UNIQUE KEY声明
CREATE TABLE 数据表名称(
列名称 数据名称 UNIQUE KEY,
列名称 数据名称
);
5.4 默认约束
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
默认约束使用DEFAULT声明
CREATE TABLE 数据表名称(
列名称 数据名称 DEFAULT 值,
列名称 数据名称
);
5.5 外键约束*
保持数据一致性,完整性
实现一对一或一对多关系
外键约束使用FOREIGN KEY声明
要求
- 父表和子表必须使用相同的存储引擎,而且禁止使用临时表
- 数据表的存储引擎只能为InnoDB
- 外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同
- 外键列和参照列必须创建索引,如果外键列不存在索引的话,Mysql将自动创建索引
CREATE TABLE 数据表(
列名称 数据名称,
列名称 数据名称,
FOREIGN KEY (子列名称) REFERENCES 父表名称(父列名称)
);
5.6 表级约束和列级约束
- 对一个数据列建立的约束,称为列级约束
- 对多个数据列建立的约束,称为表级约束
- 列级约束可以在列定义时声明,也可以在列定义后声明
- 表级约束只能在列级约束定义后声明
5.7 修改约束
5.7.1 添加约束
ALTER TABLE 数据表名称 ADD 约束(字段);
5.7.1.1 默认约束
默认约束语法与其他约束有略微区别
ALTER TABLE 数据表名称 ALTER 字段 SET DEFAUL 默认值;
5.7.2 删除约束
主键约束只有一个 所以不用命名
ALTER TABLE 数据表名称 DRDP 约束(字段);
6. 查询
<a href="#1">返回首页</a>
6.1 查询某个数据表内所有值
SELECT 列名称 FROM 数据表名称;
6.2 查询某个字段内的所有值
SELECT 列名称 AS 字段 FROM 数据表名称;
6.3 查询结果分组
SELECT 列名称 FROM 数据表名称 GROUP BY 条件;
6.3.1 分组条件
SELECT 列名称 FROM 数据表名称 GROUP BY 条件 HAVING 条件;
网友评论