一文入门mysql 数据库,小白看了都能学会

2024-08-26 02:28

本文主要是介绍一文入门mysql 数据库,小白看了都能学会,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库

数据库分为关系型数据库和非关系型数据库。

一、关系型数据库

关系型数据库常见的有下面几种:oracle大型数据库;sqlserver企业级;sqlite文件数据库一个文件就是一个数据库,数据库下可以有表;当然最重要的还是mysql是一个企业级数据库,学习mysql学习的是一个:关系型数据库管理系统,管理系统下方可以有多个数据库

SQL结构化查询语言

  1. 安装MySQL

windows版本  注意root密码 添加一个新用户

在windows配置环境变量C:\Program Files\MySQL\MySQL Server 5.7\bin

登录 mysql -u root -p

linux版本

安装 sudo apt install mysql-server 默认下载最新mysql8 ,不会提示配置root账户密码 ,可以直接使用系统的root登录

远程登录 两点要求 第一数据库用户有远程权限 %

第二数据库开放了远程访问权限 /etc/mysql/mysql.conf.d/mysqld.conf bind_address 192.168.13.7

登录

mysql -u用户名 -p 密码 mysql -h 主机ip地址 -P 主机ip端口

2.指令

(1)数据库

show databases; 展示所有的数据库

create database  数据库名 charset=utf8;创建数据库

drop database 数据名; 删除数据库

select database(); 查看当前使用的数据库

use 数据库名; 使用数据库

  1. 数据表

show tables;显示所有表

create table 表名( 列名  类型  约束1 约束2 约束3, 列名 类型 约束1 约束2, 列名 类型 约束1  );  创建表

desc 表名 查看表结构

drop table 表名 删除数据表

修改表 alter  table 表名  drop    列名;

add 列名 类型 约束1 约束2;

change 原列名 新列名 类型  约束1 约束2;

(3)约束

主键 可以确定唯一的一行 primary key

非空 not null 不能为空

自增长 auto_increment 每次+1

唯一 列中内容不重复 unique

默认 default 默认值

外键 foreign key 与其他表关联 是其他表的左键

检查 check(age > 0) mysql8 才能用 alter table user add constraint check_age check(age > 0);

alter table user drop constraint check_age;

(4)CURD  增删改查

1. 查 select * from 表名; 切记 慎用 非常耗时

select  列 ,列,列 from 表;

select  列 as 别名,列 as 别名 from 表;

条件where

比较运算符

逻辑运算符

判空

精确比较

范围比较

like 像

=  >  >=  < <=  !=  <>

and or  not

is null;  is not null

in  [ a, b, c]

between 5 and 10

like %多个字符

like _ 一个字符

关联查询

表与表之前存在关联关系

嵌套查询 第一次查询的结果作为第二次查询的条件

表连接 :

笛卡尔连接

内连接 inner join

外连接

全连接(full join)

一个表中每一行都和另外一个表中所有行连接

select user.id as 用户id, user.username as  用户名, role.nick as 昵称, role.level as 等级 from user inner join role  on user.id = role.user_id;

左外连接(以左表为主 left join)左表条件满足 正常显示 不满足 右侧补null

select * from user left join role on user.id = role.user_id;

右外连接(以右表为主 right join)右表条件满足 正常显示 不满足 左侧补null

select * from role right join user on user.id = role.user_id;

mysql不支持关键字 full join但是还有一种方式:left join   union  right join

select * from user right join role on user.id = role.user_id union  select * from user left join role on user.id = role.user_id;

分组,排序,分页 ...

去重: 单独列展示 并对列去重 distinct

eg: select  distinct user_id from role;

分组:group by 一般会结合count (*)进行统计

eg: select info as '组信息', count(*) as 个数 from role group by info;

排序

列排序:order by  asc 升序  desc 降序

eg:select * from role order by user_id desc , id  desc  ;

分页:limit

一个数字n 代表 前n个 两个数字start, count

每页显示count个  第n页公式(n-1)* count, count

2.增

insert into  表名 values (列1, 列2,列n),(列1, 列2, 列n)....

insert into  表名  (列1, 列2) values (值1, 值2), (值1, 值2)...

insert into   表名  set  列1=值1,列2=值2;

列的个数与值的个数一致

可以指定 哪些列的数据

没有默认值的列必须插入

插入1行指明插入的列与其值

3.改:update 表名 set 列1 = 值1 where 条件; 如果没有条件就修改整个表

4.删:delete from 表名 where 条件; 如果没有条件就清空表

5.用户 root系统管理员+ 其他用户 % 代表所有ip都可以访问

创建用户:create user '用户名'@'%' identified by '123456';

分配权限:grant 权限列举 on  数据名.表名 to ‘用户名’@‘%’  all 所有权限 *.* 所有数据库中的所有表

flush privileges; 刷新权限

删除用户 drop user  '用户名'@'%'

修改密码 alter user ‘用户名’@‘%’  identified by ‘123456’;

6.外键 关系型数据库表与表之间存在关联关系

外键:一个表中的某一列是另外一个表中的主键

创建、添加constraint  外键名 foreign key   (列名)  references  表 (列)on update  cascade  on delete   cascade;

删除 alter table 表名 drop foreign key 外键名;

7.函数

select database(); 查看当前数据库

select  user(); 查看当前用户

select version(); 查看版本

select now(); 现在时间

select curdate(); 当前日期

select curtime(); 当前时间

select unix_timestamp() 时间戳

  1. 特殊数据类型

int

varchar、char

datetime

enum

default current_timestamp

default current_timestamp on update current_timestamp

enum("男“,”女“, ”保密“)  default "保密"

(6)使用python来操作mysql

1. 导入模块

2.构建连接

3.构建游标 通过游标执行sql

execute(“sql语句”)

fetchall()

fetchone()

fetchmany()

scroll移动游标位置 mode

获取所有 ,返回元组(大元组包含很多小元组)

获取一个,返回元组

获取指定个数, 返回大元组 默认有1个小元组

relative 相对 负值 倒退 正值 前进

absolute 绝对 0,len-1

  1. 关闭游标与连接
二、扩展知识

1.备份与恢复

(1)选中数据库 转储sql文件 sql文件内部包含表与数据的创建过程

选中连接 新建数据库 utf8 打开数据库 运行sql文件 选中sql文件 开始恢复

2.视图

一张虚拟的表

不占内存

数据来源于真实的表

修改视图中数据 等同于修改真实表中数据

3.函数以及存储过程

函数

系统级别函数  select  user()  select version()

数据库级别函数 经过运算返回数据

存储过程

一个复杂函数 一般不返回内容 一般用于执行sql

案例

# 注册n个用户

# 声明一个变量i 他的类型为int 他的初始值为1

DECLARE i INT DEFAULT 1;

# 使用循环 创建n个账户

WHILE i <= n DO

INSERT INTO `user` VALUES (0, CONCAT('name',i), '123456');

SET i = i + 1;

END WHILE;

都是存储在数据库服务器上的,预编译过得,执行效率非常高

4.索引

提升查询效率 索引类型 主键索引 唯一索引 普通索引

索引不是越多越好 维护索引需要额外的开销 更新有索引的列时索引会同步更新 数据修改概率比较小,适合建索引 如果修改概率非常高,不适合建立索引

5.事务

(1)四大特性ACIP

原子性  事务不可在分割,要么全部执行要不全部放弃

一致性 事务执行前后都要保持数据一致性

隔离性 多个事务相互不干扰

持续性 事务一旦提交永久更改

(2)关键字

begin  开启事务

rollback  回滚事务  出现异常

commit   提交事务

(3)隔离级别

处理高并发情况

级别 读未提交 效率最高,容易脏数据

 读已提交

 可重复读

 串行化   效率最低,数据最安全

这篇关于一文入门mysql 数据库,小白看了都能学会的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1107287

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作