美文网首页
Mysql部分笔记

Mysql部分笔记

作者: 羊习习嗷 | 来源:发表于2019-01-03 17:16 被阅读0次

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 条件;

相关文章

网友评论

      本文标题:Mysql部分笔记

      本文链接:https://www.haomeiwen.com/subject/oykqrqtx.html