SQL 基础用法

DQL

  • (Data Query Language)数据查询语言排序查询
  • 语法: order by 子句
    -- 默认升序
    SELECT * FROM person ORDER BY math;
    -- 降序
    SELECT * FROM person ORDER BY math desc; 
    
  • 聚合函数:将一列数据作为一个整体,进行纵向的计算

    • count--计算个数
    • max--计算最大值
    • min--计算最小值
    • sum--计算和
    • avg--计算平均数
  • 分组查询 grout by

    • 语法: group by 分组字段;
    • 注意: 分组之后查询的字段: 分组字段、聚合函数
-- 按照性别分组。分别查询男、女同学的平均分
SELECT gender ,AVG(math) FROM student GROUP BY gender;
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT gender ,AVG(math),COUNT(id) FROM studentGROUP BY gender;

DDL

  • (Data Definition Language)数据定义语言
    -- 创建库
    create database db1;
    -- 创建库是否存在,不存在则创建
    create database if not exists db1;
    -- 查看所有数据库
    show databases ;
    -- 查看某个数据库的定义信息
    show create database db1;
    -- 修改数据库字符信息
    alter database db1 character set utf8;
    -- 删除数据库
    drop database db1;
    -- 查看表结构
    desc 表名;
    
    -- 查看创建表的SQL语句
    show create table 表名;
    -- 修改表名
    alter table 表名 rename to 新的表名;
    -- 添加一列
    alter table 表名 add 列名 数据类型;
    -- 删除列
    alter table 表名 drop 列名;
    -- 删除表
    drop table 表名;
    drop tableif exists 表名
    

分页查询

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

子查询

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

连接查询

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

DML

  • (Data Manipulation Language)数据操作语言

增加 insert into

-- 写全所有列名
insert into 表名(列名1,列名2,..列名n) values(值1,值2,..值n);
-- 不写列名 (所有列全部添加)
insert into 表名 values(值1,值2,..值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);

删除 delete

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

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

修改 update

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

-- 带条件的修改
update 表名 set 列名 = 值 where 列名=

UPDATE [IGNORE] table name
SET
column_name1 = value1
column name2 = value2
[WHERE cTause]