(超详细)数据库开发之MySql(上)

安装:

官网下载地址:MySQL :: Download MySQL Community Server (Archived Versions)

连接:

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]

数据库设计-DDL

查询所有数据库:

show databases ;

查询对当前数据库:

select database() ;

创建数据库:

create database [ if not exists ] 数据库名;

//通过if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不创建。

切换数据库:

use 数据库名 ;

删除数据库

drop database [ if exists ] 数据库名 ;

退出:

quit

//加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

表操作:

创建表:

create table  表名(
    字段1  字段1类型 [约束]  [comment  字段1注释 ],
    字段2  字段2类型 [约束]  [comment  字段2注释 ],
    字段3  字段3类型 [约束]  [comment  字段3注释 ],
    ......
    字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

约束:

约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:

保证数据库中数据的正确、有效性和完整性。

分类:

 //注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

主键自增 auto_increment:

具有auto_increment属性的数据列应该是一个正数序列(从1开始自增),auto_increment数据列必须有唯一索引,以避免序号重复;必须具备NOT NULL属性。

常用的数据类型:

数值类型:

 字符串类型:
 日期时间类型:

注意事项:

create_time:记录的是当前这条数据插入的时间。

update_time:记录当前这条数据最后更新的时间。

 查询:

查询当前数据库所有表:show tables;

查看指定表结构:desc 表名 ;

查询指定表的建表语句:show create table 表名 ;

修改:

添加字段:alter table 表名 add  字段名  类型 (长度)  [ comment 注释 ]  [ 约束 ];

修改数据类型:alter table 表名 modify  字段名  新数据类型 (长度);

修改字段名和字段类型:alter table 表名 change  旧字段名  新字段名  类型 (长度)  [ comment 注释 ]  [ 约束 ];

删除字段:alter table 表名 drop  字段名;

修改表名:rename table 表名 to  新表名;

删除:

删除表:drop  table [ if exists ]  表名;

删除指定表, 并重新创建表:truncate table 表名;

//注意: 在删除表的时候,表中的全部数据也都会被删除。

数据库操作-DML

增加(insert):

给指定字段添加数据:

insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...);

给全部字段添加数据:

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

批量添加数据:

1.insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;

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

注意事项:

•  插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

•  字符串和日期型数据应该包含在引号中。

•  插入的数据大小,应该在字段的规定范围内。

修改(update)

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

注意事项:

A. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

B. 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

删除(delete)

delete from 表名  [ where  条件 ] ;

注意事项:

• DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

• DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。

• 当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击Execute即可。

数据库操作-DQL

基本查询(不带任何条件)
条件查询(where)
分组查询(group by)
排序查询(order by)
分页查询(limit)

基本查询:

查询多个字段的数据(根据某字段查询该字段的数据) :

select 字段1, 字段2, 字段3 ...  from 表名 ;

select  *  from 表名 ;

字段设置别名 :

select 字段1  [ as  别名1 ] , 字段2  [ as  别名2 ]   ...  from 表名;

select 字段1  [ 别名1 ] , 字段2  [ 别名2 ]   ... from  表名;

去除重复记录(根据某字段去重相同的数据)

select distinct  字段列表 from 表名;

条件查询:

语法:

select 字段列表 from 表名 where 条件列表

(查询某条件下的某字段);

条件:

常用的比较运算符如下:

常用的逻辑运算符如下:

排序查询:

语法:

select 字段列表 from 表名 order by 字段1  排序方式1 , 字段2  排序方式2 ;

排序方式:

ASC : 升序(默认值)

DESC: 降序

注意事项:

• 如果是升序, 可以不指定排序方式ASC ;

• 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

分页查询:

select 字段列表 from 表名 limit 起始索引, 查询记录数 ;

某一页的开始索引:(页码-1)*每页记录数;

聚合函数:

介绍:

将一列数据作为一个整体,进行纵向计算 。

常见的聚合函数

语法

select  聚合函数(字段列表)  from   表名 ;

//注意 : NULL值是不参与所有聚合函数运算的。

统计数量可以使用:count(*)count(字段)
count(1),推荐使用count(*)。

分组查询

语法:

select 字段列表 from 表名  [ where 条件 ] group by 分组字段名  [ having 分组后过滤条件 ];

where与having区别:

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

//注意事项:

//• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

//• 执行顺序: where > 聚合函数 > having 。

//• 支持多字段分组, 具体语法为 : group by columnA,columnB

IF 函数

IF(条件表达式1,表达式为true取的值,表达式为false取的值)

怎么实现给查询的值设定新的数据:比例 1变成男,2变成女

 

多表设计:

一对多:
一对多关系实现:

在数据库表中多的一方,添加字段,来关联一的一方的主键。

外键约束:

让两张表的数据建立连接,保证数据的一致性和完整性。 对应的关键字:foreign key

-- 创建表时指定
create table 表名(
    字段名    数据类型,
    ...
    [constraint]   [外键名称]  foreign  key (外键字段名)   references   主表 (主表列名)    
);


-- 建完表后,添加外键
alter table  表名  add constraint  外键名称  foreign key (外键字段名) references  主表(主表列名);

物理外键 与 逻辑外键:

物理外键:

介绍:使用 foreign key 定义外键关联另外一张表

缺点:

A. 影响增、删、改的效率(需要检查外键关系)。

B. 仅用于单节点数据库,不适用与分布式、集群场景。

C. 容易引发数据库的死锁问题,消耗性能。

逻辑外键:

介绍:在业务层逻辑中,解决外键关联。

特点:通过逻辑外键,就可以很方便的解决上述问题

在现在的企业开发中,很少会使用物理外键,都是使用逻辑外键。 甚至在一些数据库开发规范中,会明确指出禁止使用物理外键 foreign key 。

一对一:

关系:

一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率

实现:

在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

多对多:

关系:

一个学生可以选修多门课程,一门课程也可以供多个学生选择

实现:

建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值