MySql基础(一)--最详细基础入门,看完就懂啦(辛苦整理,想要宝宝的赞和关注嘻嘻)

news2024/12/23 20:07:55

前言

希望你向太阳一样,有起有落,不失光彩~

一、数据库概述

1. 什么是数据库

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

 2.数据库管理系统

数据库管理系统(DataBase Managerment System, DBMS): 指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

 3.数据库的特点

1. 持久化存储数据的。其实数据库就是一个文件系统 
2. 方便存储和管理数据
    存储数据有一定的格式
    行和列的格式,当前表格看待就可以了
3. 使用了统一的方式操作数据库 
    使用图形界面的形式查看数据
    使用sql语言进行查看或管理数据

 4.常见的数据库

关系型数据库描述
MySQL开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。
Oracle收费的大型数据库,Oracle 公司的产品
DB2IBM 公司的数据库产品,收费的。常应用在银行系统中。
SQL ServerMicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。
SQLite嵌入式的小型数据库,应用在手机端,如:Android。
OceanBase阿里的大型数据库,性能已经超过Oracle全球第一
非关系型数据库(NoSQL)描述
MongoDBMongoDB最流行的文档型数据库
Redis基于内存的键值型数据库通过 Key-Value 键值的方式来存储数据

 5. MySQL服务启动和关闭

MySQL服务启动:

  1. cmd--> services.msc 打开服务的窗口--> MySQL服务启动

  2. 使用管理员打开cmd    net start mysql: 启动MySQL的服务

MySQL服务关闭:

  1. cmd--> services.msc 打开服务的窗口--> MySQL服务关闭

  2. 使用管理员打开cmd    net stop mysql: 关闭MySQL的服务

6.MySQL登录和退出

MySQL登录:

* 本地登录
     mysql -u用户名 -p密码 
    
* 指定ip登录
     mysql -h主机地址 -u用户名 -p密码

 MySQL退出:

1. exit
2. quit

二、 SQL概述

1. 什么是SQL

结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。

SQL是一套标准,所有的数据库厂商都实现了此标准;但是各自厂商在此标准上增加了特有的语句,这部分内容我们称为方言

2. SQL通用语法

3. 1. SQL 语句可以单行或多行书写,以分号结尾。
  select * from stu;
  select 
      *
  FROM
      stu;
2. 可使用空格和缩进来增强语句的可读性。
3. MySQL 数据库的 SQL 语句不区分大小写(仅此于win系统),关键字建议使用大写。
    1). 库名 表名 字段 别名 建议写小写
    2). 关键字建议大写: SHOW DATABASES CREATE
4. 3 种注释
    * 单行注释: -- 注释内容(这种方式是通用的) 或 # 注释内容(mysql 特有) 
    * 多行注释: /* 注释 */

3. SQL语句的分类

分类说明
DDL(Data Definition Language)数据定义语言定义数据库对象: 数据库,表,列等.关键字:create, drop,alter 等
DML(Data Manipulation Language)数据操作语言(掌握)对数据库中表的数据进行增删改.关键字:insert, delete, update 等
DQL(Data Query Language)数据查询语言 (掌握)用来查询数据库中表的记录(数据).关键字:select, where 等
DCL(Data Control Language)数据控制语言(了解)用来定义数据库的访问权限和安全级别,及创建用户.关键字:GRANT,REVOKE 等
TCL(Transaction Control Language) 事务控制语言用于控制数据库的事务操作,关键字; commit,savepoint,rollback等

 三、DDL语句

1. DDL操作数据库

创建数据库==

create database 数据库名称;

==创建数据库,并指定字符集==

create database 数据库名称 character set 字符集名;

==查询所有数据库的名称==

show databases;

==查询某个数据库的字符集:查询某个数据库的创建语句==

show create database 数据库名称;

==修改数据库的字符集==

alter database 数据库名称 character set 字符集名称;

==删除数据库==谨慎使用!!!!

drop database 数据库名称;

==查询当前正在使用的数据库名称==

select database();

==使用数据库==

use 数据库名称;

2. DDL操作表

1. 创建表

语法:

create table 表名(
    列名(字段名) 数据类型,
    列名(字段名) 数据类型,
    列名(字段名) 数据类型
    ...
);

示例:

create table student(
    id int,
    name varchar(32),
    birthday date,
    money double(5,2)
);

2. 数据类型

数据类型说明
int整数类型,例如 : age
double小数类型,例如 : score double(5,2) 111.11
date日期,只包含年月日,yyyy-MM-dd
datetime日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
varchar可变字符 name varchar(20)
char不可变字符 name char(20)

 3. 查询表

  • ==查询某个数据库中所有的表名称==

    show tables;
  • ==查询表结构==

desc 表名;

4. 修改表

==添加一列==

语法:
    alter table 表名  add 列名 数据类型;
实例:
    alter table teacher add jieshao varchar(50);

==修改列类型==

语法:
    alter table 表名 modify 列名 新类型;
实例:
    alter table teacher modify jieshao varchar(99);

==修改列名和类型==

语法:
    alter table 表名 change 旧列名 新列名 新类型;
实例:
    alter table teacher change jieshao intro varchar(999);

==删除指定列==

语法:
    alter table 表名 drop 列名;
实例:
    alter table teacher drop intro;

==修改表字符集==

语法:
    alter table 表名 charset 字符集;
实例:
    alter table teacher charset gbk;

==修改表名==

语法:
    rename table 旧表名 to 新表名;
实例:
    rename table teacher to tch;

5. 删除表

直接删除表
    语法:
        drop table 表名;
    实例:
        drop table tch;

 四、DML语句

1.添加数据

  • 语法

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

  • 举例

    INSERT INTO student(`id`,`name`,`birthday`) VALUES (1,'李四1','2018-11-11');

  • 注意事项

    ==列名和值要一一对应==

    表名(列名1,列名2,...列名n)写了几个字段,我们就给几个值,值的类型要跟字段类型保持一致

    ==如果表名后,不定义列名,则默认给所有列添加值【了解,不推荐使用】==

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

    ==除了数字类型,其他类型需要使用引号(单双都可以)引起来==

    【建议大家都使用单引号 '' 不要使用双引号】sql语句拼接   sql语句在java代码中是一个String

    ==批量插入数据==

    INSERT INTO stu1(`id`,`name`,`birthday`) VALUES
    (1,'李四1','2020-11-11'),
    (2,'李四2','2020-11-11'),
    (3,'李四3','2020-11-11'),
    (4,'李四4','2020-11-11');

 2. 删除数据

  • 语法

    delete from 表名 [where 条件]  

  • 举例

    delete from student where id = 1;

  • 注意事项

    ==如果不加条件,则删除表中所有记录。==

    delete from student; -- 删除所有的记录

    ==如果要删除所有记录==

    delete from 表名;      -- 不推荐使用。有多少条记录就会执行多少次删除操作
    TRUNCATE TABLE 表名;   -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表

3. 修改数据

  • 语法

    update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];

  • 举例

    update student set name = '王五', birthday = '2020-12-20' where id = 2;

  • 注意事项

    如果不加任何条件,则会将表中所有记录全部修改

五、DQL语句

1. 查询完整语法

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定

2. select特点

* select 可以查询 表中的字段 表达式  常量值  函数
* 查询出的结果是一个虚拟表 不影响实际表中的数据

3. 数据准备

-- 创建表
create table stu(
	id int,
	name varchar(20),
	chinese double,
	english double,
	math double
);
-- 插入记录
insert into stu(id,name,chinese,english,math) values(1,'tom',89,78,90);
insert into stu(id,name,chinese,english,math) values(2,'jack',67,98,56);
insert into stu(id,name,chinese,english,math) values(3,'jerry',87,78,77);
insert into stu(id,name,chinese,english,math) values(5,'james',82,84,77);
insert into stu(id,name,chinese,english,math) values(6,'jack',55,85,45);
insert into stu(id,name,chinese,english,math) values(7,'tom',89,65,30);

4.简单查询

==查询所有记录==

语法:
    SELECT * FROM 表名;
举例:
    SELECT * FROM stu;
==查询表中所有学生的姓名和对应的语文成绩==

语法:
    SELECT 字段名1,字段名2... FROM 表名;
举例:
    SELECT `name`,chinese FROM stu;
    SELECT DISTINCT `name`,chinese FROM stu;
==查询表中学生姓名(去重)==

语法:
    select DISTINCT 字段名1,字段名2... FROM 表名;
举例:
    SELECT DISTINCT `name` FROM stu;
==在所有学生数学分数上加10分特长分==

SELECT `name`,math+10 FROM stu;
==统计每个学生的总分==

SELECT `name`, chinese+english+math FROM stu;

起别名

在上面求每一个学生的总成绩时,展现出一个结果视图。在这个结果有两列,分别是name, chinese+IFNULL(english,0)+math 。第一个列名,一眼就能看出这列表示的是姓名,但是第二列,你能描述出这是一个学生的总成绩吗? 显然不能。我们就要使用别名的方式,展示别名。

==语法==

as : as也可以省略

==在什么地方使用==

1. 可以用在某个字段上   name as 姓名
2. 可以用在函数上      min(sarlay) as 最低工资
3. 可以用在表上        from sutdent as s
​
   注意事项: 如果给表起了别名,后面在使用的时候,必须要用别名

==例子==

SELECT `name`, chinese+IFNULL(english,0) + math AS `总成绩` FROM stu;
​
SELECT `name`, chinese+IFNULL(english,0) + math `总成绩` FROM stu;

 5.条件查询

语法

SELECT 字段名 FROM 表名 [WHERE 条件];

运算符

运算符说明
> 、< 、<= 、>= 、= 、<> !=<>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有==
BETWEEN...AND在一个范围之内
IN( 集合)集合表示多个值,使用逗号分隔
IS NULL 不为空 is not null查询某一列为 NULL 的值,注:不能写=NULL
LIKE模糊查询 占位符: _:单个任意字符 %:多个任意字符
AND 或 &&与,SQL 中建议使用前者,后者并不通用。
OR 或 ||
NOT 或 !

导入数据

-- 创建表
CREATE TABLE stu1 (
  id int,
  name varchar(20),
  age int,
  sex varchar(5),
  address varchar(100),
  math int,
  english int
);
-- 插入记录
INSERT INTO stu1(id,NAME,age,sex,address,math,english) VALUES 
(1,'马丽丽',55,'男','杭州',66,78),
(2,'乐乐',45,'女','深圳',98,87),
(3,'李涛',55,'男','香港',56,77),
(4,'柳流',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘一',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);

条件查询

- ==查询math分数大于80分的学生==
  SELECT * FROM student2 WHERE math > 80;
- ==查询english分数小于或等于80分的学生==
  SELECT * FROM student2 WHERE english <= 80;
- ==查询age等于20岁的学生==
  SELECT * FROM student2 WHERE age = 20;
- ==查询age不等于20岁的学生==
  SELECT * FROM student2 WHERE age != 20;
- ==查询age大于35且性别为男的学生(两个条件同时满足)==
  SELECT * FROM student2 WHERE age > 35 AND sex = '男';
- ==查询age大于35或性别为男的学生(两个条件其中一个满足)==
  SELECT * FROM student2 WHERE age > 35 OR sex = '男';
- ==查询id是1或3或5的学生==
  SELECT * FROM student2 WHERE id = 1 OR id =3 OR id = 5;
  -- in关键字
-- 再次查询id是1或3或5的学生
SELECT * FROM student2 WHERE id IN(1,3,5);
- ==查询id不是1或3或5的学生==
  SELECT * FROM student2 WHERE id NOT IN(1,3,5);
- ==查询english成绩大于等于77,且小于等于87的学生==
  SELECT * FROM student2 WHERE english >=77 AND english <=87;
  SELECT * FROM student2 WHERE english BETWEEN 77 AND 87;
- ==查询英语成绩为null的学生==
  SELECT * FROM student2 WHERE english = NULL; -- null这哥们六亲不认...
SELECT * FROM student2 WHERE english IS NULL;
SELECT * FROM student2 WHERE english IS NOT NULL;
- ==查询姓马的学生==
  SELECT * FROM student2 WHERE name LIKE '马%';
- ==查询姓名中包含'德'字的学生==
  SELECT * FROM student2 WHERE name LIKE '%德%';
- ==查询姓马,且姓名有三个字的学生==
  SELECT * FROM student2 WHERE name LIKE '马__';

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Django项目】 音乐网站spotify复刻

代码&#xff1a;https://github.com/tomitokko/spotify-clone 注&#xff1a;该项目不是自己提供mp3文件&#xff0c;而是使用spotify 的api接口获取。

奇舞周刊第529期:万字长文入门前端全球化

周五快乐&#xff08;图片由midjourney生成&#xff09; 奇舞推荐 ■ ■ ■ 万字长文入门前端全球化 目前国内企业正积极开拓国际市场&#xff0c;国际化已成为重要的发展方向&#xff0c;因此产品设计和开发更需考虑国际化。本文介绍了语言标识、文字阅读顺序等诸多知识。然后…

【编译原理复习笔记】中间语言

中间语言 中间语言的特点和作用 &#xff08;1&#xff09;独立于机器 &#xff08;2&#xff09;复杂性介于源语言和目标语言之间 中间语言可以使编译程序的结构在逻辑上更为简单明确 常用的中间语言 后缀式 图表示&#xff1a;抽象语法树&#xff0c;有向无环图 三地址代…

淘宝x5sec

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章未…

LeetCode 264 —— 丑数 II

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 第一个丑数是 1 1 1&#xff0c;由于丑数的质因子只包含 2 、 3 、 5 2、3、5 2、3、5&#xff0c;所以后面的丑数肯定是前面的丑数分别乘以 2 、 3 、 5 2、3、5 2、3、5 后得到的数字。 这样&#xff0c;我…

类的内存对齐位段位图布隆过滤器哈希切割一致性哈希

文章目录 一、类的内存对齐1.1规则1.2原因 二、位段2.1介绍2.2内存分配问题2.3跨平台问题2.4使用的注意事项 三、位图的应用3.1 给40亿个不重复的无符号整数&#xff0c;找给定的一个数。&#xff08;int的范围可以到达42亿多&#xff09;3.2 给定100亿个整数&#xff0c;设计算…

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal 说明机器详情安装操作系统注意事项基础准备Controller节点 && Compute节点 && Block节点关闭防火墙关闭selinux设置静态IP更新安装前准备Controller节点 && Compute节点 && Block节点设…

auto关键字(C++11)

auto关键字&#xff08;C11&#xff09; 文章目录 auto关键字&#xff08;C11&#xff09;前言一、auto使用规则二、auto不适用的场景三、auto推荐适用的场景总结 前言 在C11中&#xff0c;auto关键字能够自动推导出变量的实际类型&#xff0c;可以帮助我们写出更加简洁、现代…

开发公众号自定义菜单之创建菜单

文章目录 申请测试账号换取Token接口测试提交自定义菜单查看效果校验菜单配置清空菜单配置结束语 申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actionshowinfo&tsandbox/index 或 得到appid和secret 换取Token 使用appid和secret换取token令牌…

Python应用实战,用动画生成冒泡排序的过程

写在前言 hello&#xff0c;大家好&#xff0c;我是一点&#xff0c;专注于Python编程&#xff0c;如果你也对感Python感兴趣&#xff0c;欢迎关注交流。 希望可以持续更新一些有意思的文章&#xff0c;如果觉得还不错&#xff0c;欢迎点赞关注&#xff0c;有啥想说的&#x…

解决文件夹打开出错问题:原因、数据恢复与预防措施

在我们日常使用电脑或移动设备时&#xff0c;有时会遇到一个非常棘手的问题——文件夹打开出错。这种错误可能会让您无法访问重要的文件和数据&#xff0c;给工作和生活带来极大的不便。本文将带您深入了解文件夹打开出错的原因&#xff0c;并提供有效的数据恢复方案&#xff0…

栈和队列的基本见解

1.栈 1.1栈的基本概念和结构&#xff1a; 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出的原则。 压栈&#xff1a;栈的插入操作叫做进栈/压栈…

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

QML的Image 路径问题(source)

四种路径格式 在 QML 中&#xff0c;当你使用 Image 元素的 source 属性来指定一个图片的路径时&#xff0c;有几种不同的方式可以指定这个路径&#xff0c;每种方式都有其特定的用途和上下文。 相对路径&#xff1a; QML 文件和一个名为 close.png 的图片在同一目录下&#x…

列表元素添加的艺术:从单一到批量

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、向列表中添加单一元素 1. append方法 2. insert方法 三、向列表中添加批量…

CentOS网络配置(三种网络模式:桥接、NAT、Host-Only)

目录 1、虚拟机网络模式 1.1 桥接 1.2 NAT 1.3 Host-Only 2、桥接模式 3、仅主机模式 4、NAT模式 5、centos网络配置 5、virtualbox 下centos7网络配置 5.1管理 ——> 全局设定 ——> 网络&#xff0c;新加网络 5.2 具体虚拟机设置&#xff0c;网络设置&#…

软件设计师笔记2

文章目录 软考知识点总结1. 计算机组成原理网络与信息安全数据结构与算法AOE网 编译原理操作系统软件设计软件测试数据库计算机软件产权其它 软考知识点总结 1. 计算机组成原理 cpu控制器&#xff0c;专门产生指令操作&#xff0c;送到计算机各个部位执行处理 DMA&#xff08…

python调用阿里云通义千问(q-wen-max)API-只能总结pdf文档内容

文章目录 通义千问插件PDF解析插件调用案例通义千问插件 Dashscope插件功能能够使得大模型的生成内容与外部三方应用结合,使得模型生成的内容更加准确和丰富,模型将拥有更好的生成能力。您也可以通过开发自定义插件,来使得模型生成更符合您预期的结果。 使用插件功能,大模…

第十三节:带你梳理Vue2 : watch侦听器

官方解释:> 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式&#xff0c;用一个函数取代<br/>## 1. 侦听器的基本使用侦听器可以监听data对象属性或者计算属性的变化watch是观察属性的…

细粒度图像分类论文(AAM模型方法)阅读笔记

细粒度图像分类论文阅读笔记 摘要Abstract1. 用于细粒度图像分类的聚合注意力模块1.1 文献摘要1.2 研究背景1.3 本文创新点1.4 计算机视觉中的注意力机制1.5 模型方法1.5.1 聚合注意力模块1.5.2 通道注意力模块通道注意力代码实现 1.5.3 空间注意力模块空间注意力代码实现 1.5.…