当前位置: 首页 > news >正文

MySQL数据库学习笔记

目录

一、MySQL的基础概念

实体:

 E-R图:

逻辑结构:

m:n的联系

 数据库(Database,DB):

 二、数据库的创建及删除

1.数据库的查询:


一、MySQL的基础概念

实体:

通常是指一类数据对象的个体,个体的集合则称为实体集。 例如学生和老师就是两个实体集,而学生张三是实体。

属性:每个实体涉及的信息项。比如张三的名字、学号、年龄等等。

 E-R图:

1、实体用矩形框表示,框里面写实体名

2、属性用椭圆框表示,框里面写属性名,用线段与实体连接

3、实体之间的联系用菱形框表示,框里面写联系定义(例如属于,工作,储存之类的),用线段与实体连接,并且要在连线上标明联系的类型(1:1、1:n、n:m)

4、如果联系也有属性,那么属性也要用线段与联系连接

逻辑结构:

m:n的联系

student(学号,姓名,年龄,性别,所在系)

course(课程号,课程名,学分)

sc (学号,课程号,学分)  

 数据库(Database,DB):

是指长期存储在计算机内,有组织的、可共享的**大量数据的集合**。其具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户所共享。

简单来说,数据库就是用来存放数据的容器。

数据库的创建就是在数据库系统中划分出一块空间用来存储数据。这一点与c语言很像。

 二、数据库的创建及删除

1.数据库的查询:

想要存储数据,首先得看看有么有你想要存数据的数据库,如果没有那我们就创建一个数据库。

查看数据库语句

show databases;

2、数据库的创建

create database 数据库名;

2.1、数据类型

数据类型描述
intenger(整型)用于表示整数,包括TINYINT,SMALINT,MEDIUMINT,INT,BIGINT等。
Floating-Piont(浮点型)用于表示带有小数部分的数字,包括FLOAT,DOUBLE等。
Decimal(小数)用于精确的十进制数,包括 DECIMAl。
String(字符串)用于表示文本类型的数据,包括CHAR,VARCHAR,BLOB等。
Date/time(日期/时间)用于表示日期和时间类型的数据,包括DATE,TIME等。
Enum(枚举)用于表示在一个列表中选择的数据类型,包括ENUM。
Set(集合)用于表示从一个集合中选择的数据类型,包括SET.

3、数据库的切换

数据库的切换,也就是选择你需要的数据库。选择数据库后,接下来的操作就都是基于选择的数据库进行的。

注意:在对某个指定的数据库进行操作时要先使用“use 数据库”语句,否者会报错。

4、数据表的创建

create table 数据表名(
字段1 字段类型,
字段2 字段类型,
字段3 字段类型,
……
字段n 字段类型,
);#例题 主要是记住主外键的声明,尤其是sc表的写法
create table student
(Sno char(3) primary key,
Sname varchar(16) unique not null,
Sage int check(Sage>=15 and Sage<=35),
Ssex char(2) check(Ssex=’男’ or Ssex=’女’) default ’男’,
Sdept char(16)
);create table Course
(Cno char(3) primary key,Cname varchar(16) not null,                 #列级的约束Credit int check(Credit between 1 and 6),Cpno char(3),
Foreign key (Cpno) references Course(Cno)    #表级的约束
);create table SC
(Sno char(3),
Cno char(3),
Score int check(Score>=0 and Score<=100),
Primary key(Sno,Cno),
Foreign key (Sno) references Student(Sno), 
Foreign key (Cno) references Course(Cno)
);

 

5、数据库的删除:

drop database 数据库名;

6、数据库的查询

查询数据库有那些数据表。

show table;

 三、数据表的修改

有时我们需要对数据表中的某些信息进行修改,例如表名,数据类型等等。

1、数据表表名的修改

alter table 原数据表名 rename to 新数据表名;

2、数据表数据类型的修改

3、数据表的删除

drop table 数据表名;   

4、数据表字段信息的查询

desc 数据表名;

四、数据表的约束

1、一些常见的约束

三个完整性约束:

1、实体完整性

2、参照完整性

3、用户自定义完整性

primary key (主键):

用于唯一标识的数据记录。被标识为主键的数据在表中唯一并且非空。

设置主键:

create table tex(
id int primary key
);

 

 **foreign key** (外键):

可用于建立多个表之间的联系。(建立外键是为了保证数据的完整和统一性)。

create table tex1(
id int primary key
);create table tex2(
name varchar(12) primary key
);create table tex(
id int,
name varchar(12),
primary key(id,name),
foreign key(id) references tex1(id),
foreign key(name) references tex2(name)
);

删除外键:

alter table 从表名 drop foreign key 外键名;

 **not null**:

非空约束,Not null 修饰的字段的值不能为空。

字段名 数据类型 not null;

 **default**:

默认约束,用于给数据表中的字段指定的默认值,当在表中插入一条新的记录时,如果没有给它赋值,那么这条字段会被插入默认值。

字段名 数据结构 default 默认值;

 **unique**:

唯一约束,用于保证数据在数据表中的唯一性,即表中插入的数据不能重复出现

字段名 数据结构 unique;

其他:

create table Course
(Cno char(3) primary key,Cname varchar(16) not null, #列级的约束 就是说 not null只是针对这一行Credit int check(Credit between 1 and 6),Cpno char(3),
Foreign key (Cpno) references Course(Cno)  #表级的约束 同理外键的声明是针对这个表
)

五、插入数据

1、给表插入数据

输入的数据的值、值的顺序、值的类型必须与对应的字段相匹配。并且必须给主键赋值,若不给主键赋值违反实体完整性,插入失败。

insert into 表名(字段名1,字段名2,字段名3……字段名n)values (值1,值2,值3……值n);

2、给表中的指定字段插入数据

与5.1基本一致,只是插入的字段由我们自己定。

insert into 表名(字段名1,字段名2,字段名3……字段名n)values (值1,值2,值3……值n);

3、同时插入多条记录

可以插入多个记录,用逗号隔开就行

insert into 表名(字段名1,字段名2,字段名3……字段名n)values (值1,值2,值3……值n),(值1,值2,值3……值n);

六、更新数据

1、Update

update 表名 set 字段名1=值1[,字段2=值2,……][where 条件表达式];

[ ]中的东西可以省略。

Update 更新全部数据。

#例如:将所有记录的age设置成18
update student set age=18;#例题 将所有同学的103号课程的成绩加5
update SC Set score=Score+5 Where Cno=’103’ 

七、删除数据

Delete

delete from 表名 [where 条件表达式];#删除学生表李四的信息
delete 
from student
where Sname='李四' ;

用where可以选参数用于指定删除的条件。

**全部删除**

delete from student;

八、数据表的简单查询

1、查询全部元素、去除重复项

select *     #  *表示查询表中的所有内容
from 表名;#查询具体值
Select Sno,Sname
From student/*选择指定的列,可以添加算数表达式,并且为其添加新的属性名*/
select sno,2019-sage as birthday 
from student;

select count(sno)   /*count用于计数,count(*)表示计算所有列*/
from student;
SELECT DISTINCT 列名称 FROM 表名称;   /*关键字distinct用于删除重复项*

2、Where 条件过滤语句

/*where--条件过滤用于从表中获取指定数据*/
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值; 
#where 后面有多个筛选条件用 and 隔开就行
操作符描述
=等于
<>不等于(我用的5.7版本也可以写成!=)
>大于
>=大于等于
<小于
<=小于等于
between......and......在某个范围内
like某种模式

3、And 和Or 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

  • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

  • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

SELECT * FROM 表名称 WHERE 列 运算符 值 AND(or) 列 运算符 值;

4、Order by排序

使用order by 默认为 ASC 升序,order by后面加DESC 代表降序。

select 列 form 表 order by[asc];/*asc改成desc 代表降序*/

5、聚集函数

#聚集函数
Sum()
Avg()
Max()
Min()
Count()#用法
Select sum(score)
From sc

相关文章:

  • 接口幂等性原理与方案总结
  • Oracle RMAN 备份脚本
  • 如何查看服务器有几张GPU
  • MMR-Mamba:基于 Mamba 和空间频率信息融合的多模态 MRI 重建|文献速递-深度学习医疗AI最新文献
  • .net Winfrom 如何将窗口设置为MDI容器
  • 加密后的数据如何进行模糊查询
  • 日常开发心得(前端vue和后端springboot,java)
  • Spring AI 系列之使用 Spring AI 开发模型上下文协议(MCP)
  • 如何在使用kickstart安装物理机操作系统的过程中核对服务器的SN
  • 编译与链接,咕咕咕
  • IP 风险画像技术略解
  • QT开发技术 【元对象系统反射机制 】三
  • uniapp|实现多端图片上传、拍照上传自定义插入水印内容及拖拽自定义水印位置,实现水印相机、图片下载保存等功能
  • 网络安全之XSS漏洞
  • 边缘计算新基建:iVX 轻量生成模块的 ARM 架构突围
  • 服务器开机自启动服务
  • 【技术测评】黑龙江亿林网络「启强 Plus」服务器实测:56 核 32G 配置下的性能表现与应用场景解析
  • Kotlin扩展函数与属性实战指南:从入门到企业级应用
  • Kotlin 中的数据类型有隐式转换吗?为什么?
  • pythonocc hlr实例 deepwiki 显示隐藏线
  • 哪个做企业网站/免费做网站自助建站
  • 在哪里找给公司做网站优化的人/seo网站推广优化就找微源优化
  • 中国纪检监察报社社长/西安seo优化工作室
  • 舒城县建设局网站/上海好的网络推广公司
  • 潜力的网站设计制作/做百度推广怎么做才能有电话
  • jquery 手机网站开发/上海网络推广专员