Mysql语法笔记

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')
SETENUM类似,SET最多只能包含64个列表项,不过SET可存储一个以上的值

2.2 Number类型

TINYINT(size) -128127常规或0255无符号,括号中规定最大位数
SMALLINT(size) -3276832767常规或065535无符号,括号中规定最大位数
MEDIUMINT(size) -83886088388607普通或016777215无符号,在括号中规定最大位数
INT(size) -21474836482147483647常规,04294967295无符号,在括号中规定最大位数
BIGINT(size) -92233720368547758089223372036854775807常规或018446744073709551615无符号,括号规定最大位数
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位格式支持的范围是从19012155
2为格式支持的范围是从7069,表示从19702069
  • 即使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. 查询

返回首页

6.1 查询某个数据表内所有值

SELECT 列名称 FROM 数据表名称;

6.2 查询某个字段内的所有值

SELECT 列名称 AS 字段 FROM 数据表名称;

6.3 查询结果分组

 SELECT 列名称 FROM 数据表名称 GROUP BY 条件;
6.3.1 分组条件
 SELECT 列名称 FROM 数据表名称 GROUP BY 条件 HAVING 条件;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值