1、单表查询

select * from student;
采用*效率低,不推荐,多用列名
一、单表查询的语法:
    SELECT 字段1,字段2... FROM 表名
                  WHERE 条件
                  GROUP BY field
                  HAVING 筛选
                  ORDER BY field
                  LIMIT 限制条数  (索引 步长)

二、关键字的执行优先级: 
    from
    where
    group by
    having
    select
    distinct 去重处理
    order by
    limit

补充说明:

#查询使用别名:

mysql命令查询语句&MTdata

#查询过滤重复

mysql命令查询语句&MTdata

#连接查询

2、多表查询

交叉连接:不适用任何匹配条件。生成笛卡尔积
内连接:只连接匹配的行
外链接之左连接:优先显示左表全部记录
外链接之右连接:优先显示右表全部记录
全外连接:显示左右两个表全部记录
mysql命令查询语句&MTdata

# 分页limit

# 聚合函数

sum返回一列的总和

mysql命令查询语句&MTdata

#MySQL教程之concat以及group_concat的用法

一、concat()函数

1、功能:将多个字符串连接成一个字符串。

2、语法:concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
select concat (id, name, score) as info from tt2;
mysql命令查询语句&MTdata
mysql命令查询语句&MTdata

 

 

group_concat()
1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

3、举例:

例7:使用group_concat()和group by显示相同名字的人的id号:
mysql命令查询语句&MTdata

 #合并

 #注意 union与union all的区别:union会去掉相同的纪录

 mysql命令查询语句&MTdata

# 通配符

#exists

EXISTS关字键字表示存在。在使用EXISTS关键字时,内层查询语句不返回查询的记录。
而是返回一个真假值。True或False
当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询
select * from employee
    ->     where exists
    ->         (select id from department where id=200);

mysql命令查询语句&MTdata

1、select 字段 from 表名 查询条件
2、limit
3、select 字段 from 左表名 inner/left/right join 右表名 on 条件

 mysql练习题

联合唯一,比如同一个学生不能选重复的课程
unique(student_id,course_id),

unique与primary key的区别:

简单的讲,primary key=unique+not null

具体的区别:

(1) 唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。

(2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。但是,唯一性约束所在的列并不是表的主键列。

(3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。

(4) 建立主键的目的是让外键来引用.

(5) 一个表最多只有一个主键,但可以有很多唯一键

联合主键和复合主键区别

create table test(
    id int(10) not null auto_increment,
    name varchar(20) not null,
    sex int(1) not null,
    primary key (id,name,sex)
);

 二、MTdata

1、学生表:student(学号,学生姓名,出生年月,性别)

create table student(
    id int,
    name char(6),
    born_year year,
    birth_date date,
    class_time time,
    reg_time datetime
);

insert into student values
(1,'egon',now(),now(),now(),now());

insert into student values
(2,'alex',"1997","1997-12-12","12:12:12","2017-12-12 12:12:12");
日期类型

相关文章:

  • 2021-08-03
猜你喜欢
  • 2022-12-23
  • 2022-02-12
  • 2022-01-08
  • 2022-01-21
  • 2021-12-08
  • 2021-10-27
相关资源
相似解决方案