MySQL基础入门

1.连接Mysql的指令

命令:mysql -u root -p

在这里插入图片描述

2.数据库三层架构

在这里插入图片描述
:对数据库的操作,实际上是对用户输入的指令传到3306端口,DBMS读取指令对相应的数据库进行操作。
在这里插入图片描述

3.数据库创建和查询

数据库创建

1.CHARACTER SET:指定数据库采用的字符集,默认为utf8
2.COLLATE:指定数据库字符集的校对规则,默认utf8_general_ci,不区分大小写。
在这里插入图片描述

# 使用指令创建数据库
create database wcw_db01;

# 删除数据库指令
drop database wcw_db01;

#创建一个使用utf8字符集的wcw_db01数据库
create database wcw_db01 character set utf8;

#创建一个使用utf8字符集,并带校对规则的wcw_db01数据库
create database wcw_db01 character set utf8 collate utf8_bin;

数据库查询和删除

# 显示数据库语句
SHOW DATABASES;

# 显示数据库创建语句
SHOW CREATE DATABASE wcw_db01;

# 删除数据库
DROP DATABASE wcw_db01;

4.备份和恢复数据库

# 在Dos下执行mysqldump指令,备份的文件就是对应的sql语句
mysqldump -u root -p -B wcw_db01 wcw_db02> d:\\bak.sql

# 恢复数据库(进入cmd中的Mysql命令行执行)
source d:\\bak.sql

# 直接将bak.sql放到查询编辑器中执行

备份数据库:mysqldump -u root -p -B wcw_db01 wcw_db02> d:\\bak.sql

备份数据库的表:mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > d:\\文件命.sql

5.创建表和删除表

在这里插入图片描述
创建表

# 创建表
CREATE TABLE `user`(
	id INT,
	`name` VARCHAR(255),
	`passward` VARCHAR(255),
	`birthday` DATE
	)CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

删除表

# 删除表
DROP TABLE t5

修改表
在这里插入图片描述

# 创建表
CREATE TABLE t6 (
	id INT,
	`name` VARCHAR(32),
	sex CHAR(1),
	birthday DATE,
	job_time DATETIME,
	job VARCHAR(32),
	salary DOUBLE,
	`resume` TEXT);	

# 增加列
ALTER TABLE t6 
	ADD image VARCHAR(32) NOT NULL DEFAULT ''
	AFTER `resume`

# 修改列
ALTER TABLE t6
	MODIFY job VARCHAR(60) NOT NULL DEFAULT ''

# 删除列
ALTER TABLE t6
	DROP sex
	
# 修改表的字符集为utf8
ALTER TABLE t6 CHARACTER SET utf8

# 列名name修改为user_name
ALTER TABLE t6 
	CHANGE `name` `user_name` VARCHAR(32) NOT NULL DEFAULT ''
	
# 显示表结构	
DESC t6;

6.Mysql常用数据类型

在这里插入图片描述

6.1列类型之整形

以tinyint为例:
在这里插入图片描述

#使用tinyint来演示范围,有符号 -128 ~ 127 无符号 0 ~ 255
#1.如果没有指定unsigned,TINYINT就是有符号的
#2.如果指定unsigned,则TINYINT就是无符号0-255
CREATE TABLE t1(id TINYINT);//默认有符号的
CREATE TABLE t2(id TINYINT UNSIGNED);//无符号的

INSERT INTO t1 VALUES(-129); //报错,超过范围
INSERT INTO t2 VALUES(-1); //报错,超出范围

6.2列类型之bit

在这里插入图片描述

6.3列类型之小数型

在这里插入图片描述

6.4列类型之字符串

在utf8中一个汉字用3各字节表示,则VARCHAR可以存放的最大字符数为(65535-3)/3=21844字符。gbk编码每个字符用两个字节表示,最大字符数为65532/2=32766字符。
在这里插入图片描述
字符串使用的四个细节
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.5列类型之日期类型

在这里插入图片描述

CREATE TABLE t3 (
	birthday DATE,
	job_time DATETIME,
	login_time TIMESTAMP NOT NULL DEFAULT
	CURRENT_TIMESTAMP
	ON UPDATE CURRENT_TIMESTAMP);	

INSERT INTO t3(birthday,job_time) VALUES('2020-10-10','2020-10-10 10:10:10');

7.增删改查

#=================INSERT=======================
INSERT INTO t6(id,`name`,`sex`) VALUES(12,'wcw','0')
INSERT INTO t6 VALUES(01,'wc','男','2020-10-10','2020-10-10','摸鱼',20000,'摸鱼');

#=================UPDATE=======================
UPDATE t6
	SET id=02 WHERE	id=01

#=================DELETE=======================
DELETE FROM t6
	WHERE id=02

#=================SELECT=======================
# 查询所有
SELECT * FROM t6
# 去除重复
SELECT DISTINCT `name` FROM student;
# 别名、模糊查询
SELECT `name`, (math+chinese+english) AS total_score FROM student
				WHERE `name` LIKE '韩%' 
				
# 排序(升序)
SELECT * FROM student 
	ORDER BY math; 

# 排序(降序)
SELECT * FROM student 
	ORDER BY math DESC; 
	
# where + order by
SELECT * FROM student
	WHERE `name` LIKE '王%'
	ORDER BY math DESC; 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.统计函数

COUNT()、SUM()、AVG()、MAX()、MIN()

# COUNT(*)返回满足条件的记录的行数
SELECT COUNT(*) FROM student;

# COUNT(列):统计满足条件的某列有多少个,但是会排数null
SELECT COUNT(`name`) FROM student;

#SUM()
SELECT SUM(math) / COUNT(*) FROM student;

#AVG()
SELECT AVG(math) FROM student;

#MAX()、MIN()
SELECT MAX(math) FROM student;

9.分组统计(group by和having)

WHERE语句在GROUPBY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。

在这里插入图片描述

# 每个部门的平均工资和最低工资
SELECT AVG(salary),MAX(salary),department
		FROM employee GROUP BY departement;

# 每个部门每种岗位的平均工资和最低工资
SELECT AVG(salary),MAX(salary),department,job
		FROM employee GROUP BY departement,job
		
# 显示平均工资低于2000的部门和它的平均工资
SELECT department,AVG(salary) AS avg_salary
		FROM employee GROUP BY departement
		HAVING avg_salary < 2000

10.字符串相关函数

在这里插入图片描述

#CHARSET(str):返回字串字符集
SELECT CHARSET(ename) FROM emp;

# CONCAT():连接字串,将多列拼接成一列
SELECT CONCAT(ename,'工作是', job) FROM emp;

# INSTR():返回substring在string中出现的位置,没有返回0
# DUAL是哑原表,系统表,可以作为测试表来用
SELECT INSTR('xiaowang','wang') FROM DUAL;

#UCASE(ename) 转成大写
SELECT UCASE(ename) FROM emp;

# LCASE(ename) 转成小写
SELECT LCASE(ename) FROM emp;

# LEFT(string2, length) 从string2中的左边起取length个字符
# RIGHT(string2, length) 从string2中的右边起取length个字符
SELECT LEFT(ename, 2) FROM emp; 

#LENGTH(string) string长度(按照字节)
SELECT LENGTH('hsp') FROM emp;

#REPLACE(str,search_str,replace_str)
#在str中用replace_str替换search_str
SELECT ename, REPLACE(job,'MANAGER','经理')#STRCMP(str1,str2)
SELECT STRCMP('asp','bsp') FROM DUAL;

#SUBSTRING(str,position,length),从position开始取length个字符
SELECT SUBSTRING(enama,1,2) FROM emp;

#LTRIM(string) RTRIM(string) TRIM(STRING)
#去除前端空格或后端空格
SELECT LTRIM(' 小王 ') FROM DUAL
SELECT RTRIM('   小王   ') FROM DUAL
SELECT TRIM('  小王  ') FROM DUAL

11.数学相关函数

在这里插入图片描述

12.日期相关函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

13.加密和系统函数

在这里插入图片描述

14.流程控制函数

在这里插入图片描述
代码演示
在这里插入图片描述

15.查询增强

1.日期类型可以直接比较
在这里插入图片描述
2.like操作符
在这里插入图片描述
3.order by
在这里插入图片描述
在这里插入图片描述

16.分页查询

在这里插入图片描述

17.group by、having、order by、limit顺序

在这里插入图片描述

18.笛卡尔积

两个表所有行相乘则为笛卡尔积。
在这里插入图片描述

19.多表查询

语句:select * from a,b where a.no = b.no
在这里插入图片描述在这里插入图片描述

20 单行子查询和多行子查询

在这里插入图片描述
单行子查询
在这里插入图片描述
多行子查询
在这里插入图片描述

21. 子查询当临时表

把子查询当作一张临时表来用。
在这里插入图片描述在这里插入图片描述

22. all和any的使用

在这里插入图片描述

在这里插入图片描述

23. 多列子查询

在这里插入图片描述
在这里插入图片描述

24.表复制和表去重

1.表复制
在这里插入图片描述
2.表去重

快速创表:create table a like b;
表复制:insert into a select * from b
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

25.合并查询

在这里插入图片描述
在这里插入图片描述

26.自增长

在这里插入图片描述
在这里插入图片描述

27.自连接

在这里插入图片描述

28.左外连接和右外连接

左外连接:select .... from 表1 left join 表2  on 条件
右外连接:select .... from 表1 left join 表2  on 条件

在这里插入图片描述
在这里插入图片描述

29.mysql约束

在这里插入图片描述

29.1 主键

在这里插入图片描述

29.2 not null和unique

在这里插入图片描述
在这里插入图片描述

29.3 外键

在这里插入图片描述
在这里插入图片描述

29.4 check约束

在这里插入图片描述

30.索引

在这里插入图片描述

索引原理

在这里插入图片描述

索引类型以及使用

在这里插入图片描述
在这里插入图片描述

创建索引规则

在这里插入图片描述

40.事务

在这里插入图片描述

在这里插入图片描述

41.四种隔离级别

脏读、不可重复读、幻读、

在这里插入图片描述
脏读是未提交,不可重复读和幻读是提交。

“不可重复读”是针对修改操作,“幻读”是针对增删操作。“不可重复读”包含“幻读”。幻读可以理解为第二次读时多了/少了数据行。

四种隔离级别

在这里插入图片描述

隔离级别设置

事务ACID

在这里插入图片描述

42.存储引擎

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三种常用存储引擎及其选择

在这里插入图片描述

修改存储引擎

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值