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