美文网首页
进一步使用MySQL

进一步使用MySQL

作者: 随便都赢 | 来源:发表于2020-10-15 12:23 被阅读0次

首先昨天的外键,是一个字段关联一个字段。现在我们用两个字段关联两个字段。

create table t1{
    nid int(11) not null AUTO_INCREMENT,
    pid int(11) not null,
    primary key(nid,pid)
}
create table t2{
    id int(11) not null AUTO_INCREMENT primary key,
    id1 int,
    id2 int,
    CONSTRAINT fk_t1_t2 foreign key(id1,id2) references t1(nid,pid)
}

select *和写字段的区别?

1、在 abc 字段有索引的情况下,mysql 是可以不用读 data,直接使用 index 里面的值就返回结果的。但是一旦用了 select *,就会有其他列需要读取,这时在读完 index 以后还需要去读 data 才会返回结果,这样就造成了额外的性能开销。

2、SELECT *,需要数据库先 Query Table Metadata For Columns,一定程度上为数据库增加了负担(影响网络传输的性能)。

AUTO_INCREMENT的设置:

# 会话可以理解为 cmd下mysql -u -p之后到你关闭的这段时间
# SQL Server默认是全局的
show session variable like 'auto_inc%';#查看当前会话全局变量
set session auto_increment_increment=2;#设置当前会话步长
set session auto_increment_offset=10;#设置会话自增起始值下一个id为10

show global variable like 'auto_inc%';#查看系统全局变量
set global auto_increment_increment=2;#设置系统步长
set global auto_increment_offset=10;#设置系统自增起始值下一个id为10

alter table t1 AUTO_INCREMENT=20;# 设置表步长

唯一索引与联合唯一索引

create table t1(
    id int,
    mun int,
    num int,
    unique uniqueName(num),# 单独唯一索引
    unique uniqueNane(num,mun)# 联合唯一索引
)

表与表之间的关系

#一对一
一根笔只能对应一个笔盖,创建一个笔与笔盖关系表。用笔主体设置外键关联到笔盖,然后设置联合唯一索引
FK+UNIQUE
#一对多
一个班级对应多个学生,创建一个班级表。用学生设置外键关联到班级,然后学生设置唯一索引
FK+UNIQUE
#多对多
去网吧一个人可以玩很多台机器,一台机器也可以被很多人玩,创建一个上机记录表。用机器设置外键关联到人。
FK

对记录操作的深入应用:

# 插入
insert into table t1(name,age) values('alex',18),('eric',12);# 多条插入
insert into table t1(name,age) select name,age from t2;表记录插入

# 修改
update t1 set name='name2',age=12 where id>2 and name='name1';# 多条件查询修改

# 查询
select id,name as nickname from t1 where id <> 12;# i!=12,不等于的两种方式
select id,name from t1 where id between 1 and 12;# 区间查询[1,12]
select id,name from t1 where id not in(1,2,3);# not in查询
select id,name from t1 where id in(select oid from t2 where oid > 10)# in查询

# 通配符查询
select id,name from t1 where name like "a%"# 通配符
# a%;asad,ass,aaaa
# a_;aw,aq,ae
select * from user where username like 'P_boy';
# 表示长度为5,以p开头,以boy结尾
select username from user where username like '%pbo/_%' escape '/'; 
# escape的作用是用来转义,比方说我们有需求:要查%或者_,那么我们就需要用到转义

# 限制查询
select * from t1 limit 2;# 取2条
select * from t1 limit 2,10;# 2向后取10条
select * from t1 limit 10 offset 2;# 2向后取10条
select * from t1 order by desc limit 10;# 大到小,后10条
select * from t1 order by asc;# 小到大
select * from t1 order by name asc,id desc;# 先name小到大,同样的name按id从大到小

# 聚合查询
select departid,max(id) from t1 group by departid;# 取departid分组中最大的id
select departid,min(id) from t1 group by departid;# 取departid分组中最小的id
select departid,count(id) from t1 group by departid;# departid分组的人数
# sum()统计字段值
# avg()统计平均值
select count(id) from t1;# 不分组 直接返回记录数
select departid,count(id) from t1 group by departid having count(id)>1;# where 后面不能加聚合函数
# 连表查询
select id,name,departname from user,depart;# 笛卡尔积
select id,name,departname from user,depart where user.departid=depart.id;
select id,name,departname from user left join depart on user.departid=depart.id;# 左边(user)表的全部展示
select id,name,departname from user right join depart on user.departid=depart.id;# 右边(depart)表的全部展示
select id,name,departname from user inner join depart on user.departid=depart.id;# 左右边存在null的记录隐藏

相关文章

  • 数据库(6) | MySQL进阶

    MySQL进阶讲义 这一章我们开始进一步探讨MySQL的使用,从MySQL的介绍开始,接触MySQL的安装、命令行...

  • mysql进阶(<( ̄︶ ̄)↗[GO!])

    对mysql数据的进一步操作查询。 mysql的条件 使用where子句对表中的数据筛选,结果为true的行会出...

  • MySQL数据库索引选择使用B+树

    为什么MySQL数据库索引选择使用B+树? 在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小...

  • 进一步使用MySQL

    首先昨天的外键,是一个字段关联一个字段。现在我们用两个字段关联两个字段。 select *和写字段的区别? 1、在...

  • brew mysql 安装后进不去(forgot passwor

    使用brew安装mysql 但是使用mysql.server start 启动后使用mysql -uroot提示访...

  • 【华为云实践系列】RDS Mysql搭建WordPress

    为了进一步熟悉华为云服务,这里使用华为的RDS Mysql搭建WordPres博客 一、准备工作 一台华为ECS服...

  • MySQL安装配置

    安装 使用Homebrew 安装MySQL 在使用MySQL 前,需要进行一些配置。 使用 启动MySQL 服务 ...

  • MySQL

    MySQL 的使用 安装 启动MySQL 查看MySQL运行状态 进入MySQL 在Navicat下的使用准备 创...

  • mysql

    mysql 数据库 使用系统:ubuntu 18.04 LTS 安装mysql 基本使用 登陆 : mysql ...

  • 2019-10-10 一、Mysql安装和使用

    Mysql安装和使用 1.mysql安装 使用命令行brew install mysql 说明其中运行mysql_...

网友评论

      本文标题:进一步使用MySQL

      本文链接:https://www.haomeiwen.com/subject/vzvnpktx.html