最全MySQL8.0实战教程

最全MySQL8.0实战教程

长路漫漫,键盘为伴;键盘敲烂,月薪过万;SQL写的好,工作随便找

一.前言

1.计算机语言概述

  • 机器语言
  • 汇编语言
  • 高级语言

2.SQL的概述

SQL全称:结构化查询语言,用于访问和处理数据库的标准的计算机语言

2.1 语法特点
  • SQL对大小写不敏感
  • SQL可以单行或者多行书写,以分号结束 ;
  • SQL的注释
1.-- 单行注释 -- 后面需要空格
2.#  单行注释 #后面可不加空格
3./*
    多行注释
    多行注释
    */
2.2 MySQL的安装
2.2.1 方式1:解压配置方式

下载地址: mysql-8.0.28-winx64.zip
解压上述压缩包,并在解压目录下创建my.ini文件并添加内容如下

[mysqld]
# 设置3306端口
port=3306
# 服务端使用的字符集默认为utf-8
character-set-server=utf-8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf-8
[client]
# 设置mysql客户端连接服务端和默认使用的端口
port=3306
default-character-set=utf-8
配置环境变量 添加到path 服务操作
2.2.2 方式2:步骤安装方式

下载地址:mysql-installer-community-8.0.28.0.msi

二.数据库DDL操作

1.DDL概念

DDL,数据定义语言,不涉及到数据外的结构操作

  1. 对数据库常用操作
  2. 对表结构的常用操作
  3. 修改表结构

2.对数据库常用操作

功能 SQL
查看有哪些数据库 show databases;
创建数据库 create database [if not exists] mybd1 [charset=utf-8];
切换(选择要操作的数据库) use mydb1;
删除数据库 drop database [if exists] mydb1;
修改数据库编码 alter database mydb1 character set utf8;
-- 一.DDL操作之数据库操作

-- 1.查看所有的数据库
show databases;
-- 创建数据库
create database mydb1;
create database if not exists mydb1;
-- 选择使用哪一个数据库
use mydb1;
-- 删除数据库
drop database mydb1;
drop database if exists mydb1;

-- 修改数据库编码
alter database mydb1 character set utf8;

-- 二.对表结构的常用操作
create table if not exists 表名(
	字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
    字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
	字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设计];

-- 1.创建一个数据库 mydb1
create database if not exists mydb1;

-- 2.使用刚才创建的数据库mydb1
use mydb1;

-- 创建一张表 student
create table if not exists  student(
	sid int,
	name varchar(20),
	gender varchar(10),
	age int,
	birth date,
	address varchar(20),
	score double
);
在这里插入图片描述

decimal(M,D) M是有效位数,包括整数位和小数位,D是小数位个数

3.对表结构进行操作

功能 SQL
查看当前数据库所有表的名称 show tables;
指定查看某个表的创建语句 show create table 表名;
查看表结构 desc 表名;
删除表 drop table 表名;
-- 3.查看当前数据库所有的表
use mydb1;
show tables;
-- 4.查看指定表的创建语句
show create table student;
-- 5.查看表结构
desc student;
-- 6.删除表
drop table student;

-- 修改表结构
-- 1.添加列:alter table 表名 add 列名 类型(长度) [约束]
alter table student add dept varchar(20);

-- 2.修改列名和类型:alter table 表名 change 旧列名 新列名 类型(长度)	[约束]
alter table student change dept department varchar(30);

-- 3.修改表删除列:alter table 表名 drop 列名
alter table student drop department;

-- 4.修改表名:rename table 表名 to 表名
rename table student to stu;

三.数据库DML操作

一.数据插入

-- 语法格式
-- 方式1
insert into 表名 values(1,值2,值3……)
-- 方式2
insert into 表名(字段1,字段2,字段3……) values(1,值2,值3……)
INSERT INTO `mydb1`.`stu` (`sid`, `name`, `gender`, `age`, `birth`, `address`, `score`) VALUES (NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- DML操作
use mydb1;


-- 一.数据的插入

-- 格式1:insert into 表名(字段1,字段2,字段3,……) values(值1,值2,值3,……)

-- 插入单行数据
insert into student(sid,name,gender,age,birth,address,score) 
						values(1001,'张三','男',18,'2001-12-23','北京',85.5);

insert into student(sid) values(1004);
insert into student(sid,name) values(1005,'赵六')

-- 插入多行数据
insert into student(sid,name,gender,age,birth,address,score) 
						values(1002,'李四','男',19,'2002-09-13','上海',78.5),
						      (1003,'王五','女',17,'2003-11-29','深圳',66.5);


-- 格式2: insert into 表名 values(值1,值2,值三,……)
-- 插入单行数据
insert into student values(1006,'张华','女',21,'1999-01-08','广州',79);

-- 插入多行数据
insert into student values(1006,'钱博','男',21,'2005-05-07','北京',98),
													(1007,'李方','男',24,'1998-05-04','武汉',89);


二.更新操作

-- 二.数据修改操作
-- 语法格式
-- 格式1: update 表名 set 字段名=值,字段名=值…… ;
-- 格式2: update 表名 set 字段名=值,字段名=值…… where 条件;



-- 1.将所有学生的地址修改为重庆
update student set address = '重庆';
-- 2.将id为1004的学生的地址修改为北京
update student set address= '北京' where sid = 1004;
-- 将id > 1004的学生地址设置为上海
update student set address= '上海' where sid > 1004;
-- 3.将id为1005的学生的地址修改为北京,成绩修改为100
update student set address = '北京',score = 100 where sid = 1005;

三.删除操作

-- 三.数据删除
-- 语法格式
delete from 表名[where 条件];
truncate table 表名 或者 truncate 表名;

-- 注意:delete和truncate原理不同,delete只删除内容,
-- 而truncate类似于drop table,可以理解为是将整个表删除后再创建该表

-- 1.删除id为1004的学生数据
delete from student where sid = 1004;
-- 2.删除表的所有数据
delete from student;
-- 3.清空表数据
truncate table student;
truncate student;

MySQL的DML操作

练习案例
-- 1.创建表
/*
创建员工表employee,字段如下:
		id(员工编号),name(员工名字),gender(员工性别),salary(员工薪资)
*/
-- 使用mydb1数据库
-- use mydb1;
-- 添加注释
-- comment '' 

create table if not exists  mydb1.employee(
	id int comment  '员工编号',
	name varchar(20) comment '员工名字',
	gender varchar(10) comment '员工性别',
	salary double comment '员工薪资'
);

-- 2.插入数据
/*
	1,'张三','男',2000
	2,'李四','男',1000
	3,'王五','女',4000
*/
insert into mydb1.employee(id,name,gender,salary)
	values(1,'张三','男',2000),
				(2,'李四','男',1000),
				(3,'王五','女',4000);

-- 3.修改数据
-- 3.1 将所有员工薪水修改为5000元
update mydb1.employee set salary = 5000;

-- 3.2 将姓名为'张三'的员工薪水修改为3000元
update mydb1.employee set salary = 3000 where name = '张三';

-- 3.3 将姓名为'李四'的员工薪水修改为4000元,gender改为女
update mydb1.employee set salary = 4000,gender = '女' where name = '李四';

-- 3.4 将王五的薪水在原有的基础上增加1000元
update mydb1.employee set salary = salary + 1000 where name = '王五';

四.MySQL约束

一.主键约束

1.创建主键

第一种:在定义字段的同时指定主键
第二种:定义完字段之后指定主键

-- 一.创建单列主键
-- 方式1: 定义字段的同时创建单列主键
use mydb1;
create table emp1(
	eid int primary key,
	name varchar(20),
	deptId int,
	salary double
);

-- 方式2:定义完字段再创建单列主键
-- 注:con
### 关于 MySQL 8.0实战教程 #### 使用 PyMySQL 进行基本操作 对于希望掌握 MySQL 8.0 并将其应用于实践中的开发者来说,了解如何通过 Python 来连接并操控该数据库是一项重要技能。PyMySQL 是一个纯 Python 编写的 MySQL 客户端库,允许执行 SQL 查询以及处理增删改查等常见任务。 ```python import pymysql connection = pymysql.connect( host='localhost', user='root', password='password', database='testdb' ) try: with connection.cursor() as cursor: sql_query = "SELECT * FROM users" cursor.execute(sql_query) result = cursor.fetchall() finally: connection.close() ``` 上述代码展示了怎样建立与本地 MySQL 数据库实例之间的连接,并从中检索数据[^1]。 #### 存储过程的应用 存储过程是一组预编译的SQL语句集合,在服务器端运行可以提高效率减少网络传输量。下面是一个简单的例子说明了如何定义和调用一个名为 `add_user` 的存储过程来向表中插入新记录: ```sql DELIMITER // CREATE PROCEDURE add_user(IN username VARCHAR(255), IN email VARCHAR(255)) BEGIN INSERT INTO users (name, mail) VALUES(username,email); END// DELIMITER ; ``` 之后可以通过如下方式调用此存储过程: ```sql CALL add_user('John Doe','john@example.com'); ``` 这有助于简化复杂的业务逻辑实现,同时也提高了安全性[^5]。 #### DDL 概念及其应用 DDL(Data Definition Language),即数据定义语言,用于描述结构化查询语言(SQL) 中用来创建或修改数据库模式(schema)的一系列命令集。例如 CREATE TABLE、ALTER TABLE 和 DROP TABLE 都属于此类别。熟悉这些指令能够帮助构建高效稳定的数据库架构[^4]。 #### 视图管理 视图为用户提供了一种查看多个表格组合而成的数据的方式而不必关心底层物理存储细节;它还可以作为安全机制的一部分限制某些用户的访问权限。以下是创建视图的一个简单示例: ```sql CREATE VIEW v_active_users AS SELECT id,name,email FROM users WHERE status = 'active'; ``` 这样做的好处是可以让应用程序只关注那些活跃状态下的用户信息而无需每次都编写相同的过滤条件[^2]。 #### 函数开发 除了常规的操作外,有时还需要自定义一些特定功能以满足特殊需求。这时就可以考虑利用 MySQL 提供的支持来编写自己的函数。这里给出一段计算两个日期之间天数差别的 UDF(User Defined Function): ```sql DELIMITER // CREATE FUNCTION days_between(d1 DATE,d2 DATE) RETURNS INT DETERMINISTIC RETURN ABS(DATEDIFF(d1,d2))// DELIMITER ; ``` 有了这样的工具箱后就能更加灵活地应对各种场景下可能出现的问题[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值