【MySQL】数据库概述与SQL语句

一、数据库基本概念

数据库:DateBase,简称:DB

数据库特点:

  1. 持久化存储数据 -> 文件系统
  2. 方便存储和管理数据
  3. 使用了统一方式管理数据库 -> SQL

常见的数据库软件:

  1. Oracle
  2. MySQL
  3. Microsoft SQL Server
  4. DB2
  5. SQLite

二、MySQL

默认端口号3306

配置环境变量(Mac)="$PATH":/usr/local/mysql/bin

本地登录

mysql -uroot -p密码

指定IP登陆

mysql -hIP地址 -uroot -p密码

登出

exit
quit

MySQL目录结构

  1. 安装目录
    1. bin*.exe
    2. my.ini:MySQL的配置文件
  2. 数据目录:数据库(文件夹) -> 表(文件) -> 数据

三、SQL语句

1、基本概念

SQL:结构化查询语言 -> 定义了操作所有关系型数据库的规则

方言:每种数据库操作的方式存在差异

2、SQL语法

SQL语句能单行或多行书写,以分号结尾

不区分大小写,关键字建议大写

注释:

  1. -- 注释内容(必须加空格)
  2. #注释内容:MySQL特有
  3. /*注释内容*/
1)DDL:操作数据库和表
1. 操作数据库:CRUD
Create:创建
-- 创建数据库
create database 数据库名称;
-- 若不存在,创建数据库
create database if not exists 数据库名称;
-- 创建数据库并指定gbk编码
create database 数据库名称 character set gbk;
Retrieve:查询
-- 1.查询所有数据库的名称
show databases;
-- 2.查询某个数据库的创建语句(字符集)
show create database 数据库名称;
Update:修改
-- 修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
alter database db character set utf8;
Delete:删除
-- 删除数据库
drop database 数据库名称;
-- 判断存在再删除数据库
drop database if exists 数据库名称;
2. 使用数据库
-- 1.查询当前正在使用的数据库名称;
select database();
-- 2.使用数据库
use 数据库名称;
3. 操作表
Create:创建
-- 创建表	最后一个不写逗号
create table student(id int,name varchar(32),age int,score double(4,1),birthday date,insert_time timestamp
);
Retrieve:查询
-- 1.查询数据库下表的名称
show 数据库名称;
-- 2.查询表结构
desc 表名;
Update:修改
-- 1.修改表名
alter table 表名 rename to 新的表名;
-- 2.修改表的字符集
alter table 表名 character set 字符集名;
-- 3.添加一列
alter table 表名 add 列名 数据类型;
-- 4.修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型;
-- 5.删除列
alter table 表名 drop 列名;
Delete:删除
drop table 表名;
drop table if exists 表名
4. SQL的数据类型
  1. int:整数类型
  2. double(最大位数, 小数点后位数):小数类型
  3. date:日期类型(yyyy-MM-dd)
  4. datetime: 日期时间类型(yyyy-MM-dd HH:mm:ss)
  5. timestamp:时间戳类型(yyyy-MM-dd HH:mm:ss)(不给赋值会自动用系统时间)
  6. varchar(最大字符数):字符串
2)DML:数据的增删改
1. 添加数据
insert into 表名(列名1,列名2,...列名n) values (1,2,...值n);

列名要和值一一对应
可以不写列名进行完全添加

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

除了数字类型,均需要引号

2. 删除数据
delete from 表名 [where 条件];

删除所有元素

delete from 表名;			-- 删除表的所有数据
truncate table 表名;		-- 删除表,并创建新表
3. 修改数据
update 表名 set 列名1 =1,列名2 =2,...[where 条件];

不加条件会改所有行的数据

3)DQL:数据的查询
1. 基础查询
多个字段的查询
select 字段名1,字段名2... from 表名;
select * from 表名;
去除重复distinct
select distinct 字段名 from 表名;
计算列
  1. 一般使用四则运算计算列的数值
  2. ifnull(表达式1, 表达式2)
  3. 表达式1:可能出现null的列的字段名
  4. 表达式2:null的替换值
select name,math,chinese,math + chinese from stu;
select name,math,chinese,ifnull(math + chinese) from stu;
起别名as
select name as 姓名 from stu;
select name 姓名 from stu;   -- 可以省略
2. 条件查询
where子句后跟条件
运算符

####### < > <= >= = != < >

select * from stu where age > 20;	-- 大于
select * from stu where age = 20;	-- 等于
select * from stu where age != 20;	-- 不等于
select * from stu where age <> 20;	-- 不等于

####### && (and) || (or) ! (not)

select * from stu where age >= 20 && age <= 30;
select * from stu where age >= 20 and age <= 30;

####### between ... and ...

select * from stu where age between 20 and 30;

####### in(集合)

select * from stu where age = 22 || age = 18 or age = 19;
select * from stu where age in (22,18,19);

####### is null

null值不能使用=判断

select * from stu where math is null;
select * from stu where math is not null;
模糊查询:like

占位符

  • _:单个任意字符
  • %:多个任意字符
select * from stu where name like '王%';
select * from stu where name like '_铭%';
3. 排序查询
select * from stu order by 排序字段1 排序方式1,排序字段2 排序方式2 ...;

排序方式:

  1. ASC:升序,默认的
  2. DESC:降序
4. 聚合函数

将一列作为整体进行纵向计算

计算个数:count
  1. 选非空的列:主键
  2. count(*)
select count(name) from student;
计算最大值:max
select max(math) from student;
计算最小值:min
select min(math) from student;
计算求和:sum
select sum(math) from student;
计算平均值:avg
select avg(math) from student;
ifnull

聚合函数会排除null值

  1. 选不包含null的列
  2. ifnull函数
select count(ifnull(name,0)) from student;

计算结果特点:单行单列

5. 分组查询

group by + 分组字段

分组之后查询的字段:分组字段、聚合函数

wherehaving的区别

限定时间

  1. where在分组前限定,不满足条件不参与分组
  2. having在分组后限定,不满足条件不被查询

聚合函数

  1. where后面能加聚合函数
  2. having后面不能加聚合函数
select sex,avg(math),count(id) from stu group by sex;
select sex,avg(math),count(id) from stu where math >= 70 group by sex;
select sex,avg(math),count(id) from stu where math >= 70 group by sex having count(id) > 2;
select sex,avg(math),count(id) 人数 from stu where math >= 70 group by sex having 人数 > 2;
6. 分页查询

语法: limit 开始的索引, 每页的条数

select * from stu limit 0,3;

开始的索引 = (当前的页码 - 1) * 每页显示的页数

limit是MySQL的"方言"

3、约束

对表的数据进行限定,保证数据的正确性、有效性和完整性

1)非空约束

非空约束not null:值不为null

1. 创建表时添加约束
create table stu(id int,name varchar(20) not null
);
2. 删除表的约束
alter table stu modify name vachar(20);
3. 后期添加约束
alter table stu modify name vachar(20) not null;
2)唯一约束
  1. 唯一约束unique:值不重复
  2. 能保存null值,但是只能保存一个
1. 创建表时添加约束
create table stu(id int,phone varchar(20) unique
);
2. 删除表的约束
alter table stu drop index phone;
3. 后期添加约束

只有在没有重复数据才能添加成功

alter table stu modify phone vachar(20) unique;
3)主键约束

主键约束primary key:非空且唯一

一张表只能有一个主键,是表中记录的唯一标识

1. 创建表时添加约束
create table stu(id int primary key,phone varchar(20)
);
2. 删除表的约束
alter table stu drop primary key;
3. 后期添加约束

只有在没有重复数据才能添加成功

alter table stu modify id int primary key;
4)自动增长auto_increment
1. 创建表时添加约束
create table stu(id int primary key auto_increment,phone varchar(20)
);
2. 添加数据
insert into stu value(null,'wmh');
3. 删除自动增长(不影响主键)
alter table stu modify id int;
5)外键约束

外键约束forign key:让表于表产生关系,从而保证数据的正确性

1. 在创建表时,可以添加外键
create table 表名(...外键列constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
2. 删除外键
alter table 表名 drop foreign key 外键名称;
3. 创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称);
4. 级联操作
添加级联操作
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) on update cascade on delete cascade;
分类

级联更新:on update cascade

级联删除:on delete cascade

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

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

相关文章

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.线程池 目前我们学了挂起等待锁、条件变量、信…

【排序算法】一、排序概念和直接插入排序(C/C++)

「前言」文章内容是排序算法之直接插入排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、排序概念的介绍二、直接插入排序2.1 原理2.2 代码实现&#xff08;C/C&#xf…

Web API乐观锁和悲观锁

在 Web API 中&#xff0c;乐观锁&#xff08;Optimistic Locking&#xff09;和悲观锁&#xff08;Pessimistic Locking&#xff09;是两种常见的并发控制机制。它们的目的都是在多个用户同时访问和修改相同资源时&#xff0c;确保数据的一致性和完整性。 乐观锁 乐观锁的思…

Linux的网络设置

一.查看网络配置 1.查看网络接口信息 - ifconfig ① 直接使用 ifconfig 命令 默认显示活动的网卡 解析&#xff1a; ② ifconfig 具体网卡名称 只显示具体的网卡的信息 ③ ifconfig -a 显示所有的网卡 ④ ifconfig 网卡名称 down 关闭网卡 ifdown 关闭网卡 …

2024年01月微软更新Bug 已解决 !Explorer.EXE 提示:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。

前倾概要 近期大量出现如上图问题&#xff0c;杀毒&#xff0c;系统急救箱都没反应&#xff0c;罪魁祸首就是微软更新&#xff01; 点击什么都是&#xff1a;Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。 但软件使用正常&#xff0c;还能通过建立…

MATLAB中slist函数用法

目录 语法 说明 示例 显示模型的已排序列表 slist函数的功能是在模拟调试会话期间显示已排序的模块列表。 语法 slist 说明 slist在MATLAB命令窗口中显示根系统以及根系统中的每个非虚拟子系统或引用模型的块的已排序列表。对于根系统、每个非虚拟子系统和每个引用模型&…

linux离线安装git

首先需要有一台有网的linux&#xff0c;下载git源码包 下载地址 Index of /pub/software/scm/git/ 我这里下载的是git-2.9.5.tar.gz&#xff0c;依次执行如下命令进行编译 # 在有网的环境中&#xff0c;编译git&#xff0c;然后打包拿到内网直接用 # 下载git-2.9.5.tar.gz&…

SQL Server 加密 view文本

CREATE VIEW dbo.View_building WITH ENCRYPTION AS SELECT * FROM Building_Temp; GO 注意&#xff1a; 加密後就看不到VIEW文本了&#xff0c;修改 ALTER VIEW dbo.View_building WITH ENCRYPTION AS –修改後的VIEW 文本 GO 或者刪除再新增。 所以&#xff0c;要另備份原V…

【产品应用】一体化伺服电机在管道检测机器人中的应用

一体化伺服电机在管道检测机器人的应用正日益受到关注。管道检测机器人是一种能够在管道内部进行检测和维护的智能化设备&#xff0c;它可以检测管道的内部结构、泄漏、腐蚀等问题&#xff0c;以确保管道的安全和稳定运行。而一体化伺服电机作为机器人的动力源&#xff0c;对于…

20230403读书笔记|《苏轼词集》——试问岭南应不好,此心安处是吾乡

20230403读书笔记|《苏轼词集》——试问岭南应不好&#xff0c;此心安处是吾乡 导读卷一卷二卷三 在书架里加了好几本苏轼词集&#xff0c;很多词是重复的&#xff0c;但这并不影响多读几本&#xff0c;苏轼的词豪迈大气&#xff0c;豁达爽朗&#xff0c;蛮值得一读的。有不少都…

中小型家具制造业使用制造管理MES系统应该注意什么?

随着人们生活水平变高&#xff0c;人们对家具的要求也在提高。为了应对越来越高的要求&#xff0c;企业开始寻找更有效的方法&#xff0c;其中就包括mes系统&#xff0c;那么中小型家具企业在使用mes的过程中应该注意什么呢&#xff1f; 第一&#xff0c;要考虑选择什么样的mes…

Pycharm直接从github上下载项目(社区版)

Pycharm直接从github上下载项目&#xff08;社区版&#xff09; 1.在pycharm上关联github账号2.导航栏——Git——clone 1.在pycharm上关联github账号 2.导航栏——Git——clone

【数据结构】二叉树的链式实现

树是数据结构中非常重要的一种&#xff0c;在计算机的各方个面都有他的身影 此篇文章主要介绍二叉树的基本操作 目录 二叉树的定义&#xff1a;二叉树的创建&#xff1a;二叉树的遍历&#xff1a;前序遍历&#xff1a;中序遍历&#xff1a;后序遍历&#xff1a;层序遍历&#…

梯度提升决策树(Gradient Boosting Decision Trees,GBDT)

梯度提升决策树&#xff08;Gradient Boosting Decision Trees&#xff0c;GBDT&#xff09; ​ 提升树是以分类树或回归树为基本分类器的提升方法。 提升树被认为是统计学习 中性能最好的方法之一。 ​ 提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。 以决策…

Mendeley Word 文献引用

这里写目录标题 1. 下载Mendeley 并插入到Word1.1 下载安装1.2 在Word 中添加Mendeley 插件文献引用相关 1. 下载Mendeley 并插入到Word 1.1 下载安装 Mendeley 官网下载 1.2 在Word 中添加Mendeley 插件 打开 Mendeley&#xff0c;点击 Tools —>Install Mendeley Cite…

AWS云用户创建

问题 需要给工友创建AWS云的用户&#xff0c;这里假设使用分配给自己AWS开发者IAM账号&#xff0c;给别人创建aws IAM账号。 登录系统 打开页面&#xff1a;https://xxx.signin.aws.amazon.com/console&#xff0c;使用分配的开发者账号登录。如下图&#xff1a; 创建用户…

资源分享栏目一直会更新

文章目录 1. [南京大学IT侠文档共享计划](https://www.yuque.com/itxia)2. [洛谷OJ平台](https://www.luogu.com.cn/)3. [ChatGPT](chat.openai.com)4. [stackoverflow](stackoverflow.com) 1. 南京大学IT侠文档共享计划 可以解决大部分的电脑问题&#xff0c;如遇到Windows 系…

vue组件开发

1. 组件开发介绍 ① 组件化&#xff1a;一个页面可以拆分成一个个组件&#xff0c;每个组件有着自己独立的结构、样式、行为。 好处&#xff1a;便于维护&#xff0c;利于复用 → 提升开发效率。 组件分类&#xff1a;普通组件、根组件。② 根组件&#xff08;App.vue&#xf…

Hive之set参数大全-5

I 限制外部表数据插入 set hive.insert.into.external.tablestrue;在Apache Hive中&#xff0c;通过INSERT INTO语句向外部表&#xff08;External Table&#xff09;插入数据时&#xff0c;有一些注意事项和限制。外部表是Hive中的一种特殊表&#xff0c;它与Hive管理的存储…

探索Redis特殊数据结构:HyperLogLog在基数统计中的应用

一、概述 Redis官方提供了多种数据类型&#xff0c;除了常见的String、Hash、List、Set、zSet之外&#xff0c;还包括Stream、Geospatial、Bitmaps、Bitfields、Probabilistic&#xff08;HyperLogLog、Bloom filter、Cuckoo filter、t-digest、Top-K、Count-min sketch、Confi…