MySql教程

MySQL 笔记(二):初步入门

本文主要是介绍MySQL 笔记(二):初步入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、含义

MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理系统


二、特点

体积小、速度快、开源、免费


三、SQL

3-1、含义

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言

3-2、作用

用于存取数据、查询、更新和管理关系数据库系统

3-4、SQL执行流程

from→where→group by→having→order by→limit


四、分类

种类 描述
DQL语句 数据查询语言 select
DML语句 数据操作语言 insert delete update
DDL语句 数据库定义语言 create drop alter truncate
TCL语句 事务控制语言 commit rollback savepoint
DCL语句 数据库控制语言 grant revoke,安全,授权

五、字段数据类型

5-1、数值类型

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

5-2、日期和时间类型

类型 大小 范围 格式 用途
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 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

5-3、字符串类型

类型 大小 用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
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 极大文本数据

六、常用命令

6-1、连接 / 退出 MySQL

-- 连接
C:\Users\Administrator
λ mysql -u root -p
Enter password: root

-- 退出
mysql> exit


6-2、查看版本

-- 方式1:不连接MySQL的情况下
C:\Users\Administrator
λ mysql --version
mysql  Ver 14.14 Distrib 5.7.34, for Win64 (x86_64)

-- 方式2:连接MySQL的情况下
select version();

6-3、存储引擎

-- 查询所有存储引擎
mysql> show engines;
-- 修改指定存储引擎
alter table 表名 engine=存储引擎名称;

6-4、数据库操作

-- 创建数据库
create database db_test;

-- 查看有多少个数据库
show databases;

-- 切换数据库
use db_test;

-- 查看该数据库下有几个表
show tables;

-- 查看该数据库下的所有表
show tables from db_test;

6-5、表操作

前提条件:必须切换相应的数据库下操作,否则报错 ERROR 1046 (3D000): No database selected

-- 创建表结构:表名命名规范:t_ 表名,tbl_表名
CREATE TABLE `tbl_user` (
  -- 字段名称  字段类型  长度  字段约束  描述
  `id` bigint(11) NOT NULL AUTO_INCREMENT PREPARE KEY COMMENT '主键',
  `username` varchar(50) DEFAULT NULL UNIQUE COMMENT '用户名',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `gender` char(2) DEFAULT '男' CHECK (性别 IN ('男','女')),
  `nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 方式1:查看表结构
desc tbl_user;

-- 方式2:查看表结构
show create table tb_user;


-- 修改表属性
alter table 表名 change 旧属性 新属性 属性类型 character set 字符集编码

-- 直接删除
drop table tbl_user;

-- 如果有就删除
drop table if exists tbl_user;

-- 删除外键约束
alter table 表名 drop foreign key  fk_xxx

-- 删除外键约束
alter table 表名 add  constraint 主键表名_字段名_fk foreign key(字段名) references 外键表(字段名) on delete cascade;

-- 更新外键约束
alter table 表名 add  constraint 主键表名_字段名_fk foreign key(字段名) references 外键表(字段名) on update cascade;

6-6、备份

-- 导出
C:\Users\Administrator
λ mysqldump -u root -p db_test > f:/20210502_test.sql
Enter password: root

-- 导入
mysql> use db_test;
mysql> source f:/20210502_test.sql

七、数据操作

7-1、查询条件

符号 描述
= 等于
<> 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
between...and... 在两者之间
is null 为空
is not null 不为空
and 并且
or 或者
in 包含
or in 不包含
like 模糊查询
order by 排序
limit 起始下标,长度 分页

7-2、多行处理函数

符号 描述
sum 求和
avg 平均值
max 最大值
min 最小值
count 记录数
distinct 取出重复
groud by 分组
having 比较

7-3、增删查改语法

/* 插入 */
INSERT INTO 表名(field1,field2,field3,....)
VALUES (value1,value1,value3,....),(value1,value1,value3,....),(value1,value1,value3,....)

/* 修改全部,也可以按指定条件修改 */
UPDATE 表名 set field1=value1,field2=value2... [where 条件]

/* 仅仅删除表中的所有数据,也可以按条件删除指定行 */
DELETE FROM 表名 [WHERE 条件];

/* 数据、索引、自增等一并删掉 */
TRUNCATE TABLE 表名;

/* 查询全部:全表扫码 ,或者指定条件查询 */
SELECT * FROM 表名 where 条件;

/* 指定字段查询 ,或者指定条件查询 */
SELECT field1,field2,field3,field4 FROM 表名 [where 条件];

/* 查询记录数 ,或者指定条件查询 */
SELECT count(1) FROM 表名 [where 条件];
SELECT 1 FROM 表名 [where 条件];

7-4、关联查询

以 员工、部门 来作为导向

内连接关联查询

内连接:如果员工表和部门表都能匹配到就会查询出现,否则就不会查询出来。直观点来说:就是如果员工不属于指定部门或者说部门里没有这个员工是不会查询出来。

SELECT u.*,d.deptname
FROM tbl_user as u
INNER JOIN tbl_dept as d on u.dept_id = d.id;

左右外连接关联查询

左外连接:以左边的表的数据为准,去匹配右边的表的数据。如果匹配到就显示,匹配不到就显示为null。而右外连接刚好相反,是以右边的表为准。

-- 左
SELECT u.*,d.deptname FROM tbl_user as u
LEFT OUTER JOIN tbl_dept as d on u.dept_id = d.id;

-- 右
SELECT u.*,d.deptname FROM tbl_user as u
RIGHT OUTER JOIN tbl_dept as d on u.dept_id = d.id;

7-5、子查询

子查询:一条查询 sql 语句嵌套在另一条查询 sql 语句内部的查询

SELECT * FROM tbl_user
WHERE dept_id = (SELECT id from tbl_dept WHERE deptname='研发部')
这篇关于MySQL 笔记(二):初步入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!