MySQL【一】基本使用----超详细教学
相关文章:
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;

用来表示是否删除。
MySQL【一】基本使用----超详细教学的更多相关文章
- CentOS 7安装MySQL 8——萌新超详细教程
1.配置MySQL 8.0的安装源: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.n ...
- Linux 安装 MySQL 8.0.26 超详细图文步骤
1.MySQL 8.0.26 下载 官方网站下载 MySQL 8.0.26 安装包,下载地址: https://downloads.mysql.com/archives/community/ 需要注意 ...
- kali修改root用户和密码,以及更新源,超详细教学。
大家好! 又是你们那个傻傻的河东, 今天来讲修改root用户和更新源. 打开上期的kali虚拟机 开启虚拟机 使出吃奶的劲按"e"键:) 进入下面的界面 然后往下找到 Linux ...
- 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数
超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...
- Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql)
转载自:Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql) 我的系统是阿里云的,香港的系统,本人选择的是系统镜像:CentOS 7.3 64位. 具体步骤: 配置Jav ...
- 超强、超详细Redis数据库入门教程
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
- Struts2+Spring4+Hibernate4整合超详细教程
Struts2.Spring4.Hibernate4整合 超详细教程 Struts2.Spring4.Hibernate4整合实例-下载 项目目的: 整合使用最新版本的三大框架(即Struts2.Sp ...
- 超强、超详细Redis数据库入门教程(转载)
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...
- centos7安装zabbix3.0超详细步骤解析
centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...
- (转)Springboot日志配置(超详细,推荐)
Spring Boot-日志配置(超详细) 更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. Spring Boot-日志配置超详细 默认日志 L ...
随机推荐
- Java基础知识整理,驼峰规则、流程控制、自增自减
写在开头 本文接着上一篇文章续写哈.[Java基础知识整理,注释.关键字.运算符](https://blog.csdn.net/qq_43506040/article/details/13563332 ...
- 核心工具之 ideavim
对于个人的核心工具集的选择,因为编程中熟练使用主力IDE能够大大提高效率,所以IDE是一个必选项.而IDE与VIM结合的插件,对于VIM使用者,常常是一个必选项. 在Jetbrains系列工具中,插件 ...
- SpringBoot 配置类解析
本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA作者:Li Wanghong SpringBoot作为 ...
- Java 内存管理最佳实践
本文翻译自国外论坛 medium,原文地址:https://medium.com/@fullstacktips/best-practices-for-memory-management-in-java ...
- SV 接口中的clocking
接口 module可以例化模块,可以例化接口 接口不能例化模块 采样和数据驱动 时钟驱动数据,数据会有延迟,RTL仿真的时候,不会仿真出这个延时;RTL仿真的时候,不会仿真出寄存器的延时;只有在门级仿 ...
- AHB-SRAMC Design-02
AHB-SRAMC Design SRAMC(另外一种代码风格)解析 SRAM集成,顶层模块尽量不要写交互逻辑 module ahb_slave_if( input hclk, input hrest ...
- Keep English Level-03
rule -- 统治,管理,规章,制度 ruling -- 裁决 ruler -- 统治者,尺子 district judge -- 地方法官 sweeping -- 一刀切的 haul --拉 ov ...
- [转帖]CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9)
CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9) 共10073个文件 复制389-ds-base-1.3.10.2-6.el7.x86_64.rpm ...
- [转帖]Linux查看raid1和raid10分别由哪些盘组成,在哪个槽位
查找有问题的盘 MegaCli64 -PDList -aALL |grep "Firmware state" 6个盘,2个坏了 查看raid级别和硬盘的状态 MegaCli64 - ...
- 【转帖】【奇技淫巧】Linux | 安全保障防火墙-iptables
虽然说Linux在安全方面确实相当于windows要更加可靠一些,但一般使用其作为服务器的我们,也不能大意,也是需要严格限制网络传输过程中的出入规则.上篇文章我们有聊到统计网络的信息,这篇文章来学习一 ...

