MySQL常用基本SQL语句小结2

1. DDL(Data Definition Language)数据定义语言

1.1. 增删数据库

  • 创建库
    create database db1;

  • 创建库是否存在,不存在则创建
    create database if not exists db1;

  • 查看所有数据库
    show databases;

  • 查看某个数据库的定义信息
    show create database db1;

  • 修改数据库字符信息
    alter database db1 character set utf8;

  • 删除数据库
    drop database db1;

1.2. 修改删除表

  • 查看表结构
    desc 表名;

  • 查看创建表的SQL语句
    show create table 表名;

  • 修改表名
    alter table 表名 rename to 新的表名;

  • 添加一列
    alter table 表名 add 列名 数据类型;

  • 删除列
    alter table 表名 drop 列名;

  • 删除表
    drop table 表名;
    drop table if exists 表名 ;

2. DML(Data Manipulation Language)数据操作语言

2.1. 增加 insert into

  • 写全所有列名
    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

  • 不写列名 (所有列全部添加)
    insert into 表名 values(值1,值2,...值n);

  • 插入部分数据
    insert into 表名(列名1,列名2) values(值1,值2);

2.2. 删除 delete

  • 删除表中数据
    delete from 表名 where 列名 = 值;

  • 删除表中所有数据
    delete from 表名;

  • 删除表中所有数据 (高效 先删除表,然后再创建一张一样的表。)
    truncate table 表名;

2.3. 修改 update

  • 不带条件的修改(会修改所有行)
    update 表名 set 列名 = 值;

  • 带条件的修改

    update 表名 set 列名 = 值 where 列名=
    
    UPDATE [IGNORE] table_name
    SET
        column_name1 = value1,
        column_name2 = value2,
        ...
    [WHERE clause];

3. DQL(Data Query Language)数据查询语言

3.1. 排序查询 order by

  • 语法 order by 子句
    SELECT * FROM person ORDER BY math; #默认升序
    SELECT * FROM person ORDER BY math desc; #降序

3.2. 聚合函数

  • 将一列数据作为一个整体,进行纵向的计算
    1. count: 计算个数
    2. max: 计算最大值
    3. min: 计算最小值
    4. sum: 计算和
    5. avg: 计算平均数

3.3. 分组查询 group by

  • 语法: group by 分组字段;

  • 注意: 分组之后查询的字段: 分组字段、聚合函数

  • 按照性别分组。分别查询男、女同学的平均分
    SELECT gender,AVG(math) FROM student GROUP BY gender;

  • 按照性别分组。分别查询男、女同学的平均分,人数
    SELECT gender,AVG(math),COUNT(id) FROM student GROUP BY gender;

3.4. 分页查询

  1. 语法: imit 开始的索引,每页查询的条数;
  2. 公式: 开始的索引 = (当前的页码 - 1) * 每页显示的条数;
  3. limit 是一个MySQL"方言", 每页显示3条记录;
    SELECT * FROM student LIMIT 0,3;   # 第1页
    SELECT * FROM student LIMIT 3,3;   # 第2页
    SELECT * FROM student LIMIT 6,3;   # 第3页

3.5. 子查询

查询中嵌套查询
查询年龄最高的人员信息

  1. 查询最高的年龄
    SELECT MAX(age) FROM emp;
  2. 查询人员信息,并且年龄等于30的
    SELECT * FROM emp WHERE emp.'age' = 30;
  3. 一条sql就完成这个操作。这就是子查询
    SELECT * FROM emp WHERE emp.'salary'=(SELECT MAX(age) FROM emp);

3.6. 连接查询

  • 左外连接 -- 查询的是左表所有数据以及其交集部分
    select 字段列表 from 表1 left [outer] join 表2 on 条件
  • 右外连接 -- 查询的是右表所有数据以及其交集部分
    select 字段列表 from 表1 right [outer] join 表2 on 条件

发表评论

邮箱地址不会被公开。 必填项已用*标注