MySQL数据库的简单使用(基础篇)

MySQL数据库的简单使用(基础篇)

    • 学习说明
    • 文章划分
    • 三级模式的理解
    • 安装及配置MySQL
    • 登录MySQL(Windows下)
    • 数据库操作
    • 数据库引擎
    • MySQL执行外部的.sql文件
    • 数据表的操作
    • 支持的运算符
    • MySQL中函数及存储过程的基本格式代码
    • MySQL常用语句的使用(以及函数的定义与使用)
      • IF语句部分
      • Case语句部分
      • While语句部分
      • LOOP语句部分
      • Repeat语句部分
    • MySQL增、删、改语句的介绍
    • 查询语句(select)的简单介绍
      • 单表查询
    • 聚合函数的介绍
    • 连接查询
    • 子查询
    • 为表和字段取别名
    • 使用正则表达式进行

学习说明

学习来源与:明日科技的《MySQL从入门到精通》
学习平台为Windows平台

MySQL命令说明:
	MySQL命令和SQL Server命令一样,都是不区分大小写的,这里统一采用了小写形式,更方便阅读

文章划分

考虑到一篇文章太长了,分成了几篇文章来分别书写各部分内容,本部分内容为基础知识,为简单语句的使用

后半部分内容(存储过程、触发器、事务、索引、数据库备份、数据库安全性、数据库优化等)
点击跳转

三级模式的理解

三级模式指的是:模式、外模式、内模式

模式:(即空白表的结构,一个数据库只有一个模式)
    数据的逻辑结构(数据项的名字、类型、取值范围等)
    数据之间的联系
    数据有关的安全性、完整性要求

外模式:(表建好了,拿去给应用程序用,添加了数据)
	对于同一个模式下出来的表,不同外模式下,表会不一样,所以一个模式可以对应多个外模式

内模式:(一个数据库只有一个内模式)
    是数据物理结构和存储方式的描述
    是数据在数据库内部的表示方式,包括:
        记录的存储方式(顺序、聚簇)
        索引的组织方式( B+树、HASH索引)
        数据是否压缩存储
        数据是否加密 
        数据存储记录结构的规定—如定长/不定长、记录是否跨页存放等

二级映像
	外模式/模式映像:
		当模式改变时,DBA对外模式/模式映像作相应改变,使外模式保持不变; 
    	应用程序是依据外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
    模式/内模式映像:
	    当数据库的存储结构改变了,DBA修改模式/内模式 映像,使模式保持不变; 
        模式不变,则应用程序不变,保证了数据与程序的 物理独立性,简称数据的物理独立性

独立性:
	物理独立性
    	指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变
	逻辑独立性
    	指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变

安装及配置MySQL

安装 MySQL zip版本(即解压即可使用,不用安装程序),可以参考另一篇文章
	https://blog.csdn.net/qq_59001784/article/details/124664127

安装MySQL,有很多版本,一般根据msi程序(即安装程序)直接下一步即可,再配置一下环境变量即可使用
下载链接:
	链接:https://pan.baidu.com/s/1anTG-xLuGPkFxdqiZZVJyg 
	提取码:0925
安装教程在网上很多的,基本上按照下一步走即可

为了方便使用,一般都会再安装一个图形化界面,直接安装Navicat就行
下载链接:
	链接:https://pan.baidu.com/s/1-VdbyZOu1Y8NEWbH7KveiQ 
	提取码:0925
  • 环境变量的配置十分简单(比Java还简单,只需要加一下路径,即可在任意位置打开MySQL命令

      在环境变量的path路径下加上文件目录即可
      	C:\software\mysql-5.6.24-winx64\bin			//找到你们自己放的位置
    

MySQL数据库的简单使用(基础篇)_第1张图片
MySQL数据库的简单使用(基础篇)_第2张图片

找到和打开环境变量设置的地方非常的简单:在此电脑目录下(即可以看到C盘、D盘的那个页面),点击右键选择属性即可,找到高级系统设置

MySQL数据库的简单使用(基础篇)_第3张图片

编辑,然后新建一个,直接将目录复制进去即可

MySQL数据库的简单使用(基础篇)_第4张图片

然后一个个都确定,然后就可以发现mysql命令可以在任意目录下用了
  • 原本是这样的
    MySQL数据库的简单使用(基础篇)_第5张图片

  • 设置环境变量后(记得再次打开新的命令行窗口)(权限不够,提示你需要输入密码才能登录)
    MySQL数据库的简单使用(基础篇)_第6张图片

登录MySQL(Windows下)

如果设置了密码的话,则需要输入密码,没有设置密码的话,则不用输入

方法一:
	直接使用:mysql -uroot -p(密码)				//输入完按回车即可直接登录
方法二:
	使用:mysql -uroot -p			//输入完会弹出输入密码的一行,输入密码后可登录

注释:这个mysql -u root -p 是可以分开的,不用连在一起
如果是本机的话则 -h localhost 是默认的,不用输入,也可以选择IP进行输入
	mysql -u root -h 127.0.0.1 -p
一般连接远程服务器则会使用IP进行连接

数据库操作

创建数据库:
	create database if not exists test_db;
	简洁形式:create database test_db;
查看数据库:
	show databases like '%db%';
	简洁形式:show databases;
删除数据库:
	drop database if exists test_db;
	简洁形式:drop database test_db;

数据库引擎

查看系统支持的数据库引擎:
	show engines;
查看数据库引擎
	show variables like '%storage_engine%';

各数据库引擎之间的区别(主要看常用的InnoDB、MyISAM、MEMORY)

MySQL执行外部的.sql文件

两种方式(相较来说第二种方式更为简洁)
	直接在控制台未登录情况:(需要配置环境变量)(sql文件的位置会不同,可以自己修改,一般推荐不带中文,经测试,有中文也是没问题的)
	注意:符合 "<" 不能写成 ">" ,不然会报错的,执行出错(自己的密码自己修改一下)
	书写时,不能多空格,不能再句尾加分号
		mysql -u root -p0925 < D:/test.sql			//这样会显示说直接输入密码会被看到,安全性不高,所以可以采用下面这种方式
		mysql -u root -p < D:/test.sql				//输入完后按回车,会提示你要输入密码(当然如果有密码的话),这样安全性会高一些
	已登录到MySQL内部
		mysql -u root -p 登录之后,在MySQL的控制台下输入以下命令即可,这时是不需要输入密码的
		
		source D:/test.sql;

test.sql文件内容如下
use test_db;

create table test_table(
	id int auto_increment primary key
);	-- 记住分号不能少,不然则会执行出错,MySQL是以分号作为语句结束的标识的,与SQL Server不同,没有分号,语句则无法执行

数据表的操作

查看表结构:(以下三个语句功能基本一致,当然最后一句更为简洁)
	show columns from test_table;
	describe test_table;
	desc test_table;

创建表格:(需要先使用(选择)数据库,后续操作才更为简便)
	use test_db;
	create table if not exists test_table (
		id int auto_increment primary key
	);
	简洁形式:
	create table test_table (
		id int auto_increment primary key
	);

增加表格字段及修改字段类型:(增加新字段 username 及修改 ID 字段数据类型,修改类型后,
	就自动将原本的自增性质删除了,猜测是因为char类型不能够进行数值计算)
	alter table test_table add username varchar(10) not null, modify ID char(10);

更改字段名称:(将字段 username 改为 newUserName )
	alter table test_table change column username newUserName varchar(20) not null;

删除字段:(删除 newUserName  字段)
	alter table test_table drop newUserName;

修改表格名称:(两种方式)
	alter table test_table rename as table_one;
	rename table table_one to table_bbyh;

复制表格:(由一个表格直接创建新的一个表格,结构与原表格一样)
	create table table_bbeh like table_bbyh;			//只能创建结构,数据不会复制过去
	create table table_bbsh as select * from table_bbyh;			//会同时将数据复制过去

删除表格:
	drop table if exists table_bbeh;
	简洁形式:drop table table_bbeh;

支持的运算符

算术运算符:(括号内代表效果是一样的,书写形式不一样)
	+
	-
	*
	/(DIV):如果除数为 0 了,则计算结果为空值(NULL),写SQL语句的时候要注意
	%(MOD)

比较运算符:(会在后续例子中用到一些运算符,MySQL里面的运算符使用和其他编程类语言很类似)
	大多返回布尔值(符合则为1,不符合则为0)
	=
	>
	<
	>=
	<=
	!=(<>)
	is null
	is not null
	between and
	in
	not in
	like
	not like
	regexp			//正则表达式的简单使用,与一般的JS正则表达式语法类似,可以看这篇文章
							https://www.runoob.com/mysql/mysql-regexp.html
					或者这篇:https://blog.csdn.net/qq_59001784/article/details/124664315

示例如下:(只演示了一些比较抽象的,其余常用的没有都演示)
	注释:这里采用变量的方式进行演示,就没有采用 select 语句选择数据表中的内容了
	(MySQL里面声明(定义)变量的方式还有通过declare的方式)
select 2+3;
select 1/2;
select 2/0;
select 20%6;

set @x = 8;
select @x between 2 and 10;
select @x in(1,2,3,4);

set @str = 'hello';
select @str regexp 'el';

set @str = 'hello el elo lo';
select @str regexp 'lo$';
select @str regexp '^hello';
select @str regexp 'o{1,2}';
逻辑运算符(与一般语言的逻辑运算符不同,因为有NULL值的存在)
运算规则如下:
	&&(AND):所有数据不为0且不为空则返回1,存在0则返回0,不存在0存在NULL则返回NULL
	||(OR):存在非0的数字则返回1,存在NULL则返回NULL,两个都为0则返回0
	!(NOT):一元操作,原数据为非0数字则返回0,原数据为0则返回1,原数据为NULL则返回NULL
	XOR:存在NULL则返回NULL,两个数都为0或都为非0的数则返回0,一个数为0,一个数为非0的数则返回1

示例如下:
-- &&运算
select 2 && 3;
select 0 && 3;
select 0 && NULL;
select NULL && 3;
select null && 3;
select NULL && NULL;

-- ||运算
select 4 || 3;
select 0 || 2;
select NULL || 2;
select NULL || NULL;
select NULL || 0;
select 0 || 0;

-- !运算
select !0;
select !2;
select !NULL;

-- XOR运算
select NULL XOR 3;
select NULL XOR NULL;
select NULL XOR 0;
select 1 XOR 3;
select 0 XOR 0;
select 1 XOR 0;

MySQL中函数及存储过程的基本格式代码

注意:函数和存储过程的参数需要用反引号 "`" 进行包裹,据说是MySQL的转义字符,不包裹则会报错
-- 函数的定义(创建)
CREATE DEFINER = CURRENT_USER FUNCTION TestFunc(`@x` integer)
	RETURNS integer
BEGIN
	#Routine body goes here...		-- 这里面的内容为自己修改
	CASE @x
		WHEN 20 THEN
			return 1;
		WHEN 30 THEN
			return 2;
		ELSE
			return 0;
	END CASE;
END;

-- 存储过程的定义(创建)
create procedure TestPro(in `@x` INTEGER)
begin
	#Routine body goes here...		-- 这里面的内容为自己修改
	CASE @x
		WHEN 10 THEN
			select 1 as result;
		WHEN 20 THEN
			select 2 as result;
		ELSE
			select 0 as result;
	END CASE;
end

-- 函数的使用(需要注意的是要先对参数进行赋值,这里并不同别的语言一样是进行参数传值,
--	和SQL Server也不一样,MySQL需要直接对参数进行赋值)
set @x = 2;
SELECT TestFunc(@x);

-- 函数的删除
drop function TestFunc;

-- 存储过程的使用
set @x = 1;
CALL TestPro(@x);

-- 存储过程的删除
drop PROCEDURE TestPro;

MySQL常用语句的使用(以及函数的定义与使用)

包括以下语句:(一般都用于函数和存储过程内)
	if:介绍了三种使用形式,表达式、iFNULL、流程控制语句
	case
	while
	loop
	repeat

IF语句部分

if语句的使用:(MySQL里面有三种使用方式)
	表达式:
		IF(expr1,expr2,expr3),类似三元表达式,expr1为判断条件,成立则返回expr2,不成立则返回expr3
	ifnull:
		IFNULL(expr1,expr2),此时expr1为判断条件,expr1不为空则返回expr1,expr1为空则返回expr2
	作为流程控制语句:(只能用在函数或存储过程中,当然在触发器里面也是可以用的)(这个当然最为复杂)

示例如下:
  • 表达式的使用:(比较简单的,一般会结合变量使用)
set @x=10;		-- 定义(赋值)一个变量
SELECT IF(@x%3=1,1,0) as result;
  • IFNULL的使用:(一般这个会用在筛选条件时,为空则代表没有符合的条件,这里就用简单的表达式代替一下)
set @x=

你可能感兴趣的:(mysql,数据库,database)