MySQL补充

2021/6/28 19:25:02

本文主要是介绍MySQL补充,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 1.序列
    • 2.索引
    • 3.视图
    • 4.联合主键
    • 5.in all any some
    • 6.exists 与 in
    • 7.distinct 、并集:union[distinct] 、union all
    • 8.时间、字符串类型

1.序列

create table t_t(
	id int(4) auto_increment primary key
)engine=innodb auto_increment = 100 charset=utf8;

insert into t_t values(null),(null),(null),(null),(null),(null),(null);

select * from t_t;

alter table t_t auto_increment = 100;

2.索引

  • 特点:唯一

  • 做查询时,为什么用主键?优点:查询效率高;

  • 缺点:索引文件,占用磁盘空间

    -- 索引
    create table t_score1(
    student_id int(10) , # 索引
    subject_name varchar(50) ,
    score double,
    primary key(student_id)
    )engine= innodb charset = utf8;
     
    select * from t_score1 where subject_name='语文'  #  0.033s
    
    insert into t_score1 values (101,'数学',90);
    insert into t_score1 values (102,'语文',80);
    insert into t_score1 values (103,'English',80);
    insert into t_score1 values (104,'PE',80);
    insert into t_score1 values (105,'history',80);
    
    alter table t_score1 add index subject(subject_name);
    
    select * from t_score1 where subject_name='语文'
    

3.视图

sql查询后的结果是临时表,视图也是一张临时表。

  • 视图面试题

4.联合主键

一张表中有多个主键列

需求:创建成绩表,分别存储学生编号、科目名称,描述一个学生一门课程的成绩。约束一个学生在输入成绩时,相同科目,只能输入一次成绩,重复数据拒绝插入

-- 主键是唯一的,表中只有一个主键的时候,重复的主键数据插不进去。联合主键,多个列联合称为主键,组成映射关系,当A、B两个都含有重复数据时,不能插入
create table t_score(
student_id int(10) ,
subject_name varchar(50) ,
score double,
primary key(student_id,subject_name)
)engine= innodb charset = utf8;

drop table  t_score

insert into t_score values (101,'语文',50)
insert into t_score values (101,'数学',90)
insert into t_score values (101,'语文',80)


select * from t_score

5.in all any some

  • in: 枚举查询

    select * from t_account where id in(2,5)
    
  • all、any、some :必须和比较操作符联合使用,必须使用子查询

    • all:都满足

      -- &&  都成立则为true
      select * from t_account where id > all(select id from t_account where id = 2 or id = 5)
      
    • any:满足一个

      -- || 有一个成立则成立
      select * from t_account where id > any(select id from t_account where id = 2 or id = 5)
      
    • some: any别名,效果同any

      select * from t_account where id > some(select id from t_account where id = 2 or id = 5)
      

6.exists 与 in

  • 用作子查询

    -- exists 存在   相关子查询(前提条件) 如果相关子查询有数据,exists返回true,反之返回false
    select score from t_score1 where exists(select score from t_score1  where subject_name='PE')
    

7.distinct 、并集:union[distinct] 、union all

-- distinct  对某一个字段进行去重查询,只能放在去重字段前面
select distinct name, balance from t_account;

-- group by 
select name,balance from t_account group by name; 

-- 用来查询 字段非重复数据总条数
select count(distinct name) as '全班名字' from t_account;
-- union [distinct] 并集 多个查询结果,并在一起:不同表中相同列的数据并在一起(不包括重复数据)
-- union all 不同表中相同列的数据并在一起(包括重复数据)
select id,name from t_account
union  all
(select id,name from t_account)


-- 表1   id book   author   price
-- 表2   id boke   author   shijian

create table t_book(
	id int(4) auto_increment primary key,
	book varchar(50) not null,
	author varchar(20),
	price decimal(5,2)
)

insert into t_book values (null,'西游记','孙菁',5.5),(null,'红楼梦','刘权国',5.9),(null,'水浒','马贵花',72.5),(null,'金瓶梅','唐启芳',52.5)

create table t_boke(
	id int(4) auto_increment primary key,
	boke varchar(50) not null,
	author varchar(20),
	shijian date
)
insert into t_boke values (null,'山海经','孙菁',now()),(null,'百年孤独','刘权国',now()),(null,'神话','马贵花',now()),(null,'孝庄秘史','唐启芳',now())

select author,book from t_book  where author = '刘权国'
union
select author,boke from t_boke  where author = '刘权国'

8.时间、字符串类型

-- java.sql.Date-->String--->SimpleDateFormat-->java.util.Date
select now(),CURRENT_DATE(),CURRENT_TIME(),dayname(now());

-- varchar   拼接  + 
select LOWER(CONCAT('A','B','c'))

select UPPER(CONCAT('A','B','c'))

-- 替换    replace(字符串,要替换的字符串from,替换结果to)
select REPLACE("ABCDDE","AB","ab")

select TRIM(" abcde ") # 只能删前|后的空格

-- char固定长度 数组  varchar可变长度 list   text 长文本二进制


create table test(
name char(255) primary key,
text varchar(20)
)charset=utf8;

insert into test values('A','B')


select length(name) from test; 


这篇关于MySQL补充的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程