MySQL数据库学习笔记

发布于:2025-05-29 ⋅ 阅读:(21) ⋅ 点赞:(0)

目录

一、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