mysql基本使用----超详细教学(代码片段)

汀、 汀、     2023-01-11     759

关键词:

相关文章:

win10下MySQL安装教程(MySql-8.0.26超级详细)_丨汀、的博客-CSDN博客

1.RDBMS(Relational Databases Management System)

目前主流数据库两种类型:关系型数据库,非关系型数据库

  • mysql网页 关系型数据库
  • mongodb非关系型数据库结构
  • redis缓存

1.1*那么关系型数据库与非关系的区别呢?**


举个例子:
而关系型数据库用在哪里呢?类似于长期存储的规律性数据。
oracle\\mysql\\ms sql server\\sqlite
非关系型:爬虫爬下来的数据,爬了两个域名完全不一样的网站,这两个网站的数据最好用Mongodb因为完全没关系。拓展表格很方便。
关系型数据库管理系统(管理数据库的软件)


从左到右【cs架构】
RDBMS-client:客户端进行数据库的操作发送,与RDBMS-server通过 HTTP、TCP/IP协议进行数据传输,通过SQL语句进行数据库控制。
RDBMS-server:从客户端发送的SQL语句中接受指令并对数据库进行指令操作。
数据库1:即数据库的原始数据,内涵数据表、结构等等。

1.2 SQL语句

SQL语句主要分为:

data query language

数据 查询 语言

  • DQL:数据查询语言。select
  • DML:数据操作。insert\\update\\delete
  • DDL:数据定义。create\\drop
  • TPL:事务处理。begin transaction\\commit\\rollback
  • DCL:数据控制。grant\\revoke
  • CCL:指针控制。declare cursor

对于web程序员来说,重点是数据的crud(增删改查),必须熟练掌握DQL、DML,能够编写DDL完成数据库、表的操作。

SQL是一门特殊的语言,专门用来操作关系数据库。

语句不区分大小写

1.3数据类型、约束--->数据完整性

1.3.1 创建数据库

数据库名:随意

字符集:utf8 -- UTF-8 Unicode

排序规则:utf8_general_ci

创建表,表的编码默认为数据库编码,可以自行更改,表名:随意

1.3.2 类型:

  • 整数:int\\bit

  • 小数:decimal

    decimal(5,2)表示共存取五位数,小数占两位

  • 字符串:char\\varchar

    char:表示固定长度的字符串。char(3),填充'ab'='ab '

    varchar:表示可变长度的字符串。varchar(3),'ab'='ab'

  • text:存放字符大于4000时推荐使用的类型

  • 如果是图片、视频、音乐,选择路径存放。

  • 日期时间:date\\time\\datetime

    date:2020-01-01

    time:12:29:46

    datetime:2020-01-01 12:29:46

    year:2017

  • 枚举类型:enum【给定范围选取】

  • 还有许多类型可以搜索

长度:

小数点:

不是null:是否为空

主键:唯一标记每一行的记录

1.3.3约束:

  • 主键primary key:外键foreign key:

    简单来说:

    主键:是这每组数据中唯一一个能定位到这一组数据的元素。

    外键:这一组元素中该数据是另一个表中的主键,则称为外键。

    一、什么是主键、外键:

    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

    成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

    同理 成绩表中的课程号是课程表的外键

    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

    1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

  • 非空not null:字段不允许为空

  • 唯一unique:字段不允许重复

  • 默认default:字段可使用默认值

2.命令行操作mysql

启动终端,输入运行指令链接数据库【安装教程见文章篇首】

链接数据库:mysql -uroot -p
输入密码
或者
mysql -uroot -p123456    #123456即为设定的密码

退出:exit or quit or Ctrl+D

  •  查看数据库:
show databases;

 如果不小按了回车,回退到mysql,输入databases即可

 同时可以空行执行,以分号为准

  •  显示时间
select now()

  •  查看数据库版本:
select version();

  • 创建数据库

不可以创建重名的

create database python04

 

  •  查看数据库创建情况

看看如何创建的

 最新版本不指定创建也是utf8mb4版本的数据库了

不过最好使用

create database python04 charset=utf8mb4;

 解释如下:

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8,事实上,最新版的phpmyadmin默认字符集就是utf8mb4。 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。

  •  删除数据库
drop database python05;

 注意:

如果出现特殊字符的数据库名类似于python-04则需要使用′python-04′进行删除drop database ′python04′;

 3.数据表操作

  • 查询当前使用数据库
select database();

 此时还没选择数据库的表,需要进行选择, 选择使用python05

use python05

 

create table xxx(id int, name varchar(30));

 可以看得由null 变成python05;其中在使用期间可以随意跳转到别的数据库中

  • 创建数据表

首先查看当前所有的表

select database();

 创建数据表:create table 数据表米子(字段 类型 约束,字段 类型 约束...) 

create table xxx(id int, name varchar(30));

  •  查看表的结构

查看表的结构:desc xxx;description描述

 增加约束:

create table yyy(id int primary key not null auto_increment,name varchar(30));

 太长可以换行;

实例:创建一个students表(id name age high gender cls_id)

create table students(
 	id int unsigned not null auto_increment primary key,
    name varchar(30),
    age tinyint unsigned,
    high decimal(5,2),
    gender enum("男","女","中性","保密") default "保密",  
    cls_id int unsigned
);

int unsigned 无符号类型;enum枚举,小数:decimal

decimal(5,2)表示共存取五位数,小数占两位

gender enum("男","女","中性","保密") default "保密",  

没有值的时候默认保密

 插入数据:

insert into students values(0,"wang",18,188.88,"男",26)

查看表中数据:

select * from students;


 

 4.修改表结构

  • 添加字段:
alter table students add birthday datetime;

修改字段位置记得一定要带参数

alter table xxx modify column1 [记得带参]

column2;

ex:

alter table areas modify pid varchar(20)

after aid;

增加一个字段并制定位置

alter table areas add types1 tinyint(1) default "2" after pid;
  •  修改字段:

不重命名版本

alter table 表名 modify 列名 [类型及约束]

alter table students modify birthday date;

重命名版本

alter table 表名 change 原名 新名 [类型及约束]

alter table students change birthday birth date default "1990-01-01";

 加了个默认值修改表students中birthday字段名改为birth且数据类型为date,默认为1990-01-01

  •  删除表中字段

alter table 表名 drop 列名

alter table students drop high;

 不推荐轻易删除

  • 删除表:
drop table students;

  • 修改表名
alter table students rename student;

  •  查看表创建语句:
show create table students;

 最大区别:innodb支持事务处理与外键和行级锁(当前操作此行,别人无法使用直至修改完成)

作用:

 我们先插入一行:

 insert into student values(0,"2",18,"男",26,"2000-1-1");

这里id为0:但实际效果如下,

 show create table student;此时:变为3

5.数据CURD(create\\update\\retrieve\\delete)用到最多

创建、更新、读取、删除

5.1增加数据

  • 全部插入

首先对calsses进行插入:

create table classes(id int primary key not null auto_increment,name varchar(30));
insert into classes value(0,"python");
 select * from classes;

 默认是全部插入,插入内容和字段一一对应。

当对于像students这样比较长的,全部插入比较麻烦,

 这里可以使用default进行站位插入

insert into student values(default,'hap',20,'女',1,'1999-01-02'),(default,'jog',12,'男,2,'1552-01-03')

也就是id可以写入:0.1.2等;null,default等,都表示自动排序生成下去

与此同时性别栏可以用数字下标替代:1,2,3,4,分别表示男女中性保密

  •  部分插入:没有的值默认值
insert into student(name,gender) values("表格","2")

  • 多行插入
insert into students(name,gender) values("表格","女"),("表格","女")

 

5.2 修改数据

update 表名 set 列1=值1,列2=值2....where 条件:

全部修改:update students set gender='男' ;

修改id=6的人的性别:update students set gender='男' where id=6;

update students set gender='男',age=22 where id=6;

5.3 查询数据

  • 查询所有列:select * from students;(数据太大)
select * from students where name="表格";

select * from students where id>3;

*代表全部显示

  • 查询指定列:
select name,gender from student;

  • 使用别名
select name as 姓名, gender as 性别 from student;

  • 调整输出顺序
select id as 序号, gender as 性别 ,name as 姓名 from student;

调整输出顺序即可

  • 定条件查找:

查询名字为jog的:select * from students where name="jog";

查询id>6的:select * from students where id>6;

5.4 删除数据

  • 物理删除

delete from student;

delete from student where name='表格';

  • 逻辑删除(常用方法)

用一个字段表示这条新信息不在使用了

alter table student add is_delete bit 'default 0';

--bit两个字节,默认值不删除

 可以同过条件查询判断一下:

update student set is_delete=1 where id=1;

 用来表示是否删除。

强烈推荐python中json的基本使用(超详细)(代码片段)

Python中JSON的基本使用1.JSON简介2.JSON语法规则3.JSON数据类型4.JSON对象5.JSON数组6.JSON中常用的方法6.1json.dumps()6.2json.loads()6.3json.dump()6.4json.load()6.5更多实例7.参数详解8.JSON反序列化为对象9.常见的错误9.1读取多行的JSON文件10.总结1.JSON... 查看详情

vue3的基本使用(超详细)(代码片段)

一、初识vue31.vue3简介2020年9月18日,vue3发布3.0版本,代号大海贼时代来临,OnePiece特点:无需构建步骤,渐进式增强静态的HTML在任何页面中作为WebComponents嵌入单页应用(SPA)全栈/服务端渲染(SSR)Jamstack/静态站点... 查看详情

java面试题超详细整理《mysql篇》(代码片段)

...系统中的一些数据比如用户信息。MySQL是开源软件,使用时无需付费,并且他还是比较成熟的数据库,被大量使用在各种系统中。MySQL的默认端口号是3306。获取当前的Mysql版本:SELECTVERSION();MySQL由哪些部分组成,分... 查看详情

java面试题超详细整理《mysql篇》(代码片段)

...系统中的一些数据比如用户信息。MySQL是开源软件,使用时无需付费,并且他还是比较成熟的数据库,被大量使用在各种系统中。MySQL的默认端口号是3306。获取当前的Mysql版本:SELECTVERSION();MySQL由哪些部分组成,分... 查看详情

如何在idea中创建一个springboot项目(超详细教学)(代码片段)

...pringBoot项目SpringInitializr是一个Web应用,它提供了一个基本的项目结构,能够帮助我们快速构建一个基础的SpringBoot项目 1.3设置项目所属组,项目名称,选 查看详情

超详细的前端自动化测试教学!建议收藏(代码片段)

为什么需要写前端自动化大部分企业为了追求开发效率,所以并没有去强制要求员工写前端自动化测试的代码。另一部分企业则会要求前端开发额外写前端自动化测试。那么写和不写到底有哪些区别呢?不写前端自动化... 查看详情

超详细的前端自动化测试教学!建议收藏(代码片段)

为什么需要写前端自动化大部分企业为了追求开发效率,所以并没有去强制要求员工写前端自动化测试的代码。另一部分企业则会要求前端开发额外写前端自动化测试。那么写和不写到底有哪些区别呢?不写前端自动化... 查看详情

超详细pytorch入门教程(代码片段)

Pytorch基本语法1认识Pytorch2Pytorch的基本元素操作3Pytorch的基本运算操作4关于TorchTensor和Numpyarray之间的相互转换5总结1认识Pytorch什么是Pytorch?Pytorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能.作为Numpy的替代者,... 查看详情

超详细的mysql三万字总结(代码片段)

...令方式启动控制台连接数据库SQLyog图形化工具——客户端使用SQLyog登录数据库数据库管理系统数据库管理系统、数据库和表的关系SQL的概念什么是SQLSQL作用SQL语句分类MySQL的语法DDL操作数据库创建数 查看详情

使用springboot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)(代码片段)

...据表设计,前端框架引入和编写前端页面,搭建基本的springboot项目,引入前端到springboot项目中,在浏览器显示(第二篇):后端代码的设计,这部分逻辑涉及的比较多,所以单独放一篇出来讲&... 查看详情

一篇超详细的vue项目前端自动化测试教学!(代码片段)

为什么需要写前端自动化大部分企业为了追求开发效率,所以并没有去强制要求员工写前端自动化测试的代码。另一部分企业则会要求前端开发额外写前端自动化测试。那么写和不写到底有哪些区别呢?不写前端自动化... 查看详情

一篇超详细的vue项目前端自动化测试教学!(代码片段)

为什么需要写前端自动化大部分企业为了追求开发效率,所以并没有去强制要求员工写前端自动化测试的代码。另一部分企业则会要求前端开发额外写前端自动化测试。那么写和不写到底有哪些区别呢?不写前端自动化... 查看详情

mysql安装配置教程(超详细)(代码片段)

...从该主机试图攻击数据库系统max_connect_errors=10#服务端使用的字符集默认为UTF8character-set-server=utf8#创建新表时将使用的默认存储引擎default-storage-engine=INNODB#默认使用“mysql_native_password”插件认证default_authentication_plugin=m... 查看详情

linux上安装mysql超详细(代码片段)

Linux上安装MySQL第一步:确保服务器在最新的状态(可有可无)[root@chenstudy~]#yum-yupdate第二步:检测系统是否自带安装MySQL我之前安装过MySQL,现在已经卸载了[root@chenstudy~]#rpm-qa|grepmysql如果你系统有安装,那可以选择进行卸载:rpm-em... 查看详情

nmap使用教程图文教程(超详细)(代码片段)

...,可以看到nmap的版本,证明nmap可用。Nmap有四种基本功能:「端口扫描」、「 查看详情

docker安装mysql5.7(超详细文图说明及mysql配置)(代码片段)

1)下载MySQL5.7镜像#默认下载MySQL5.7最新版本(其他版本可以指定比如dockerpullmysql:5.7.34)dockerpullmysql:5.72)查看已下载的docker镜像dockerimages3)创建MySQL容器并运行方式一(快捷方式,仅配置root密码)dockerrun--namemysql5.7-p3306:3306-eMYSQL_ROOT_PASSWORD 查看详情

一篇帮你搞定jvm基本概念(超详细)(代码片段)

一、整体框架二、核心知识学习基本概念(1)定义JVM:Javavirtualmachine,即Java虚拟机;是可运行Java代码的假想计算机,包括一套指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM运行OS之... 查看详情

(超详细)算法学习:stl和基本数据结构(代码片段)

STL容器vector栈队列链表setmapsort函数next_permulation函数容器1.顺序式容器:vector,list,deque,queue,priority_queue,stack等;2.关联式容器:set,multiset,map,multimap等vectorvector容器能存放任何类型的 查看详情