MySQL数据库基本用法

news2024/11/27 10:27:58

了解数据库基本概念

什么是数据库?

• 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库” 

MySQL数据库的特点

• 开源免费,小巧但功能齐全

• 可在Windows和Linux系统上运行

• 操作方便,适用于中小型甚至大型网站应用

76c0a4da23084889855f603b33bf409c.png

DDL建库建表

# 注释

-- 注释

/*

多行

注释

*/

1.sql不区分大小写

2._(下划线)进行名字的分割,不适用驼峰命名法

3.;语句sql结尾处写一个;来表示结束

4.一般关键词建议使用大写

5.所有名称不允许使用中文

#库

-- 查看所有的库

show databases;

-- 创建库

-- create database 数据库名;

-- 删除库(危险操作)

drop database 数据库名;

-- 使用库/切换库

use 数据库名;

#表的操作

-- 查看该库中所有的表

show tables;

-- 创建表

/*create table 表名(

 字段名 类型 属性,

 字段名 类型 属性,

 ...

 字段名 类型 属性

 );

 */

 create table pet(

       dog_name varchar(10),

       dog_age tinyint,

       dog_birth datetime,

       dog_id char(3),

       dog_hobby varchar(25),

       dog_weight decimal(4,1)

       );

  -- ``反引号:取消关键性

  -- DEFAULT NULL 该字段的值可以为空

CREATE TABLE `pet` (

  `dog_name` varchar(10) DEFAULT NULL,

  `dog_age` tinyint DEFAULT NULL,

  `dog_birth` datetime DEFAULT NULL,

  `dog_id` char(3) DEFAULT NULL,

  `dog_hobby` varchar(25) DEFAULT NULL,

  `dog_weight` decimal(4,1) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

#默认字符集和字符排序

DEFAULT CHARSET=utf8mb4

COLLATE=utf8mb4_0900_ai_ci

ENGINE=InnoDB 非常重要 存储:写磁盘的规则innodb 引擎:规则

-- 数据库的本质就是把数据写到磁盘上

 #查看表中的字段

       #方式一 desc 表名

       desc pet;

       #方式二

       show create table pet;

#查看当前数据库支持的存储引擎:

        show engines;

-- 表结构的修改

alter table 表名 关键词 数据;

-- 1.修改表名

alter table 旧表名 rename as 新表名;

-- 2.添加一个字段

alter table 表名 add 新字段名 类型 属性;

-- 3.删除字段(危险操作)

alter table 表名 drop 字段名;

-- 4.修改字段

-- 覆盖式修改

1.一定的默认值default null

2.如果有已经存在具体的数据(tinyint转int char转varchar)--数据是可以做隐式转换的

一旦出现不是字符的数据(字符串) 转int 这种转不了,直接报错

-- 方式一 modify  只能修改数据类型和属性

alter table 表名 modify 字段名 要修改的类型 要修改的属性;

-- 方式二 change 不仅修改类型和属性 还可以修改字段名

alter table 表名 change 旧字段名 新字段名 要修改的类型 要修改的属性;

(危险操作)

-- drop table 表名

# 约束

1.非空约束

create table tb1(

       username varchar(10) not null, -- 非空约束

       userage int

);

create table tb2(

   username varchar(10) not null default '无名', -- 非空约束

       userage int

);

2.唯一约束

是可以为null 并且可以有多个null,因为null 是一个类型

create table tb3(

       username varchar(10) unique, -- 唯一约束  行级约束

       userage int unique   -- 每个字段都是各自的唯一约束

);

 

create table tb4(

       username varchar(10),

       userage int,

       unique(username,userage)  -- 表级约束, 联合唯一约束

-- 字段是有关联的,必须每个字段的值都相同时才会触发唯一约束

);

 

create table tb5(

       username varchar(10),

       userage int,

       CONSTRAINT name_age_unique unique(username,userage)

-- 表级约束可以给约束起名字(方便以后通过这个名字来删除这个约束)

);

3.主键约束

  • 每张表必须有且只有一个主键
  • 主键的值是唯一
  • 主键是不能为null

create table tb6(

      username varchar(10) primary key,

       userage int primary key -- 错误,主键在一张表中只能有一个

);

 

create table tb8(

       username varchar(10),

       userage int,

       primary key(username,userage) -- 联合主键,联合约束

   -- 多个字段的值,只有完全相同时,才会触发约束

);

#一般主键的建立方式

主键的值是不会回补

create table tb9(

  tid int primary key auto_increment,  -- 自增

       username varchar(10),

       userage int

);

4.外键约束

  • 外键的值可以重复
  • 外键可以为null
  • 外键必须要写 父表中有的数据
  • 父表中的关联字段必须是一个具有唯一性的数据
  • 父表的字段名和从表的字段名不一定要相同,但是数据类型必须一致
  • 一个表中可以有多个外键,也可以有多个外键约束,但是只能有一个主键
  • 使用外键关系,不去建立外键约束

create table a(

       aid int primary key auto_increment,

       aname varchar(10)

);

 

create table b(

       bid int primary key auto_increment,

       bname varchar(10),

       aid int,

       FOREIGN key(aid) references a(aid)

);

约束的添加:

  • 加非空约束
  • alter table 表名 modify test_student char(10) not null;
  • 添加唯一约束
  • alter table 表名 add unique(表字段名,字段,字段,字段);
  • 添加主键约束
  • alter table 表名 add primary key(表的字段名,字段,字段);
  • 添加外键约束
  • alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);

约束的删除:

  • 删除not null约束
  • alter table 表名 modify 列名 类型;
  • 删除unique约束
  • alter table 表名 drop index 唯一约束名;
  • 删除primary key约束
  • alter table 表名 drop primary key;
  • 删除foreign key约束
  • alter table 表名 drop foreign key 外键名;

DML数据操作语句

#.新增

insert into 表名 (字段名,字段名,...,字段名)values/value(值,值,...,值)

-- 日期 使用字符串的形式进行书写日期格式 (yyyy-MM-dd HH-MM-SS)

#全字段的插入

--方式一

insert into student(sid,sname,birthday,ssex,classid) values(9,'张三','2007-1-1','男',1);

--方式二 1.null 2.default

insert into student values(null,'李四','2010-2-9','女',1);

insert into student values(default,'lili','2009-8-20','女',1);

#部分字段插入

insert into student(sname,ssex) values('zz','女');

 

alter table student modify ssex varchar(10) not null default '保密';

insert into student(sname) values('peter');

#一次性添加多条数据

-- 方式一

-- insert into 表名 (字段名..) values(值..),(值..)...

insert into student(sname,ssex) values('pony','女'),('ken','女'),('daven','女');

 

-- 方式二 不常用

-- insert into select

-- 插入和被插入的表都必须存在

create table newstu(

       stuname varchar(10),

       stusex varchar(10),

       classid int

);

insert into newstu(stuname,stusex,classid) select sname,ssex,classid from student;

 

-- 方式三

-- create table select

-- 被插入表不能存在 --被插入表没有任何约束 仅仅是将查询结果放到新表

create table stu1 select sid,sname,birthday from student;

-- io高 既要输入又要输出 容易锁表

#.修改

update 表名 set 字段名=值,字段名=值,...,字段名=值 where 子句条件;

where子句 中的条件是对表中每一条数据进行判断,判断成立,该数据的父句执行;判断不成立,该数据的父句不执行

update stu1 set birthday='1999-10-22' where sname='peter';

 

update newstu set classid=200 where stusex!='男';

#.删除

delete from 表名 where 子句

delete from newstu;-- 删除表中数据

drop table newstu;-- 删除表

delete from stu1 where sname='daven';

-- 清空表(截断表)

truncate 表名 效果和删除表一样 删除表中数据

truncate stu1;

 

delete truncate drop的区别:

delete只删数据; truncate不仅删数据 还把索引删掉了

drop 不仅删数据,还删除了索引,表结构也删了

 

DQL语句

 所有的查询都会得到一张虚拟表 不会发生变化 除非重新查

#查询

-- 最简单的查询

select 123;

select 'abc';

select 1+2;

-- 从表中获取数据

-- select 字段名,字段名 from 表名

-- 全字段查询

select sid,sname,birthday,ssex,classid from student;

select * from student;-- 效率比全字段查询慢 不推荐使用

-- 部分字段查询

select sname,ssex from student;

-- 字段名起别名

select sname as '姓名',birthday '生日',ssex 性别 from student;

-- 添加字段

select sname,'university' 学校 from student;

#distinct 去重

所有字段的数据要一致才会去重

select distinct sname,ssex from student;

#带条件的查询 where子句

select * from student where sid=5;

select * from student where sid<>5;

select * from student where sid between 3 and 5;

#面试题常考

-- 查询年龄大于1990-1-1的学生

select * from student where birthday<'1990-1-1';

#in 在某个特定的范围内

-- or会让索引失效

select * from student where sid=3 or sid=5 or sid=7;

-- 推荐使用in 可以使用到索引

select * from student where sid in (3,5,7);

#like 模糊查询

  •  模糊符号
  •  % 任意多的任意字符
  •  _ 一个任意字符

select * from student where sname like '%杨%';

#null

-- is 是一个什么

select * from student where birthday is null;

select * from student where birthday is not null;

#聚合函数

-- 把多个值变为一个值

  • count() 统计个数
  • max() 求最大值
  • min() 求最小值
  • sum() 总和
  • avg() 平均值

1.count

#select count(字段\常量\*) from 表名;

select count(sid) from student;-- 主键

select count(classid) from student;-- 不统计null类型

select count('a') from student;-- 不推荐使用

select count(123) from student;-- 推荐使用

select count(*) from student;-- 推荐使用

2.sum avg min max 数值类型

select sum(score) from sc;

select avg(score) from sc;

select max(score) from sc;

select min(score) from sc;

例:统计出成绩表中一共有多少次考试,总成绩,平均分,最高分,最低分

select count(*) 考试次数,sum(score) 总成绩,avg(score) 平均分,max(score) 最高分,min(score) 最低分 from sc;

#group by 分组

select ssex,count(*) from student group by ssex;

having和where的区别:

  •        where是对表中每一条数据进行判断
  •        having是对分组聚合后的数据进行条件筛选

#order by 排序

默认是按主键升序排序

#按班级降序desc必须声明   默认不写就是升序asc

select * from student order by classid desc;

#先写先排

select * from sc order by score desc,cid desc;

#limit 分页

0 开始  (页码-1)*步长,步长

#select * from 表名 limit 位置,步长;

select * from student limit 3,3;-- 从3开始

 

 

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

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

相关文章

VS2019安装MFC组件

VS2019支持的MFC版本是mfc140 ~ mfc142版本&#xff0c;它兼容VS2015、VS2017之前的老版本程序。 一、MFC的历史版本 MFC的历史版本如下&#xff1a; IDE发布时间工具集版本MSC_VERMSVCMFC版本dllVisual C6.01998V601200MSVC6.06.0mfc42.dll、mfcce400.dllVisual Studio 2002…

记录解决springboot项目上传图片到本地,在html里不能回显的问题

项目场景&#xff1a; 项目场景&#xff1a;在我的博客系统里&#xff1a;有个相册模块&#xff1a;需要把图片上传到项目里&#xff0c;在html页面上显示 解决方案 1.建一个文件夹 例如在windows系统下。可以在项目根目录下建个photos文件夹&#xff0c;把上传的图片文件…

[经验] 驰这个汉字的拼音是什么 #学习方法#其他#媒体

驰这个汉字的拼音是什么 驰&#xff0c;是一个常见的汉字&#xff0c;其拼音为“ch”&#xff0c;音调为第四声。它既可以表示动词&#xff0c;也可以表示形容词或副词&#xff0c;意义广泛&#xff0c;经常出现在生活和工作中。下面就让我们一起来了解一下“驰”的含义和用法。…

WSL2 Centos7 Docker服务启动失败怎么办?

wsl 安装的CentOS7镜像,安装了Docker之后,发现用systemctl start docker 无法将docker启动起来。 解决办法 1、编辑文件 vim /usr/lib/systemd/system/docker.service将13行注释掉,然后在下面新增14行的内容。然后保存退出。 2、再次验证 可以发现,我们已经可以正常通过s…

C++笔试练习笔记【3】:Fibonacci数列 WY22

文章目录 Fibonacci数列分析题目代码实现 Fibonacci数列 分析题目 首先我们可以通过三个变量进行移动来形成Fibonacci数列 其次我们通过最前面的变量与N进行比较从而固定数列 之后N和左右两个变量做差取最小值即可 代码实现 #include <iostream> using namespace std;…

pcdn技术如何降低网络延迟

PCDN技术通过以下方式降低网络延迟: 1.动态调度与负载均衡: PCDN通过在CDN的边缘节点上部署代理服务器&#xff0c;能够动态地调度和传输内容。当用户请求内容时&#xff0c; PCDN会根据各个节点的负载情况、距离、传输速度等因素来动态选择最优的节点来提供内容。这种动态调…

大语言模型-文本检索任务基准 BEIR

BEIR (A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models) 文本检索任务的基准&#xff0c;使用18 个数据集为检索系统的零样本评估提出了一个标准化基准&#xff0c; BEIR 基准上在9个不同领域的检索任务评估 10 种不同的检索方法。 九个…

剪画小程序:刷到好听的音频怎么将音频保存到手机里

在这个短视频盛行的时代&#xff0c;相信很多朋友都和我一样&#xff0c;常常会被那些精彩视频中的背景音乐深深吸引。 比如我&#xff0c;特别喜欢听歌&#xff0c;这段时间在短视频平台上刷到了好多好看的视频&#xff0c;里面的背景音乐简直绝绝子&#xff01; 那么&#x…

【Linux网络】epoll模型构建Reactor_Tcp服务器{协议/客户端/bind/智能指针}

文章目录 1.std::enable_shared_from_this<TcpServer>2.std::bind3.std::make_shared4.std::shared_ptrstd::shared_ptr 和 std::weak_ptr配合使用 5.剖析代码6.整体代码Calculator.hppClientCal.ccCMakeLists.txtCommon.hppEpoller.hppLog.hppMain.ccnocopy.hppProtocol…

RHCSA —— 第八节 (编辑器、编辑命令等)

Vi/vim编辑器 vim 编辑器 就是相当于在windows中创建一个记事本&#xff0c;一个word文档里面进行编辑所需要的内容。在linux中编辑文本文件&#xff0c;包括但不限于编辑源代码、配置文件、日志文件等文件内容。 三种模式 这是在编辑器中存在三种模式&#xff1a;命令模式、…

Linux 13:网络编程1

1. 预备知识 1-1. 理解源IP地址和目的IP地址 在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址&#xff0c;和目的IP地址。 我们光有IP地址就可以完成通信了嘛&#xff1f;想象一下发qq消息的例子&#xff0c;有了IP地址能够把消息发送到对方的…

LeYOLO, New Scalable and Efficient CNN Architecture for Object Detection

LeYOLO, New Scalable and Efficient CNN Architecture for Object Detection 论文链接&#xff1a;http://arxiv.org/abs/2406.14239 代码链接&#xff1a;https://github.com/LilianHollard/LeYOLO 一、介绍 本文关注基于FLOP的高效目标检测计算的神经网络架构设计选择&am…

全新UI自助图文打印系统小程序源码/自助云打印机前后端源码

全新UI自助图文打印系统小程序源码&#xff0c;自助云打印机前后端源码。最新的自助图文打印系统和证件照云打印小程序源码采用了PHP作为后端开发语言&#xff0c;旨在为用户提供全面的自助打印服务。 这些服务覆盖了多种文件格式&#xff0c;包括文档、图片、表格等。除此之外…

Vue3 Composition API计算属性实现扁平化树节点的索引

本教程是Vue3 composition api计算属性活学活用&#xff08;作业题1 - 计算扁平化树树节点的索引&#xff09;的答案。通过该示例&#xff0c;让读者进一步巩固Vue3 Computed计算属性的最佳实践。 本作业题所使用的index计算属性在后续自定义Tree组件的高级功能实现中有着重要…

[经验] 孙叔敖举于海,百里奚举于市的翻译 #学习方法#学习方法#微信

孙叔敖举于海,百里奚举于市的翻译 1、孙叔敖举于海 孙叔敖&#xff0c;春秋时期鲁国大夫&#xff0c;是古代中国的著名政治家和军事家&#xff0c;他被誉为“孔子之后”的大贤。 孙叔敖的主要贡献在于他的外交策略和军事管理能力。在他的领导下&#xff0c;鲁国积极扩张其疆…

基于JAVA+SpringBoot+Vue的故障报修平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…

使用多进程和多线程实现服务器并发【C语言实现】

在TCP通信过程中&#xff0c;服务器端启动之后可以同时和多个客户端建立连接&#xff0c;并进行网络通信&#xff0c;但是在一个单进程的服务器的时候&#xff0c;提供的服务器代码却不能完成这样的需求&#xff0c;先简单的看一下之前的服务器代码的处理思路&#xff0c;再来分…

打破误解:走近轻度自闭症患者的真实生活

在自闭症的广阔光谱中&#xff0c;轻度自闭症是一个相对温和但又不可忽视的存在。它像是一层薄薄的雾&#xff0c;轻轻笼罩在患者的世界里&#xff0c;既不影响他们基本的生存能力&#xff0c;又在一定程度上影响着他们的社交互动、情感表达及兴趣范围。 轻度自闭症患者往往能…

Leetcode2160. 拆分数位后四位数字的最小和:

问题描述&#xff1a; 给你一个四位 正 整数 num 。请你使用 num 中的 数位 &#xff0c;将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 &#xff0c;且 num 中 所有 数位都必须使用。 比方说&#xff0c;给你 num 2932 &#xff0c;你拥有的数位包括…

【python】OpenCV—Shape Detection

文章目录 1、需求描述2、代码实现3、涉及到的库函数cv2.arcLengthcv2.approxPolyDP 4、案例5、参考 1、需求描述 给出图像&#xff0c;找出其轮廓&#xff0c;近似确认其为几变形图像 输入 输出 2、代码实现 # 导入必要的包 import cv2 import argparse import imutils imp…