关于mysql:纯干货MYSQL-基础一

1次阅读

共计 2224 个字符,预计需要花费 6 分钟才能阅读完成。

数据库操作

  • CREATE DATABASE 数据库名字 创立数据库
  • USE 数据库名字 抉择数据库
  • show tables 显示所有表
  • drop database 数据库名字 删除数据库

表操作

  • CREATE TABLE 表名(字段 类型, 字段 类型) 创立表
  • show create table 表名 显示表的创立语句和详细信息
  • desc 表名 显示表的构造
  • DROP TABLE 表名 删除表
  • truncate table 表名 清空表
  • alter table 表名 add 字段 类型 增加表字段
  • alter table 表名 add 字段 类型 after 表字段 增加表字段,并且插入指定字段地位前面
  • alter table 表名 add 字段 类型 first 增加表字段,并插入最后面
  • alter table 表名 modify 字段 新类型 批改字段类型
  • alter table 表名 change 原字段名字 新字段名字 新类型; 批改字段名字并且批改类型
  • alter table 表名 drop column 字段; 删除表字段
  • alter table 旧表名 rename 新表名 批改表名

数据操作

  • 条件查问where
SELECT * from t_doctor WHERE doctor_name = "布隆";
  • order by 排序,默认升序(asc), 降序(高到低)desc
  • 分组GROUP BY

分组可能不是特地好了解,我独自举例解释下:
如果有一张护士表,和工作表,护士小姐姐的工作是要随访本人负责的病人,1 个护士小姐姐负责多个病人,工作表中存着所有护士小姐姐,执行的所有工作。当初查一下, 每个护士小姐姐,各自做了多少次工作

<!-- 依据 nurse_id 分组, 并且统计数量 -->
SELECT nurse_id,count(*) as tatal FROM t_visit_task GROUP BY nurse_id ORDER BY tatal desc;
  • with ROLLUP 表明是否对分类聚合后的后果进行再汇总
<!-- 除了晓得每个护士小姐姐执行了多少次工作,还要统计所有护士小姐姐工作总数 -->
SELECT nurse_id,count(*) as tatal FROM t_visit_task GROUP BY nurse_id  WITH ROLLUP;
  • 含糊查问like
<!-- 查问 doctor_name 中蕴含张的所有行 -->
SELECT * from t_doctor WHERE doctor_name LIKE "% 张 %";
  • in查问
SELECT * FROM t_visit_task WHERE nurse_id in ("1126cf7f-d31e-43f1-a2dd-05b37873f99b","8ce40555-4b62-498b-8e39-af4abb18abfd");

<!-- 如果是 where=-->
SELECT * FROM t_visit_task WHERE nurse_id = "1126cf7f-d31e-43f1-a2dd-05b37873f99b" OR nurse_id = "8ce40555-4b62-498b-8e39-af4abb18abfd"
  • insert into 表名(字段 1, 字段 2) values(值 1, 值 2),(值 1, 值 2) 插入数据
  • update 表名 set 字段 1 ="新值", 字段 2 ="新值" where 字段 ='xxx'更新数据,应用 update肯定肯定 要跟着 条件, 否则同一字段全副数据都被更改
  • delete from 表名 where 字段 ="xx"; 删除数据,肯定要加条件,不然全删
  • union 和 union all 对多个 select 查问进去的数据后果进行合并展现(去除重复部分),union all不去反复

    • Union 必须由两条或者两条以上的 SELECT 语句组成,语句之间应用 Union 链接
    • Union 中的每个查问必须蕴含雷同的列、表达式或者聚合函数,他们呈现的程序能够不统一(这里指查问字段雷同,表不肯定一样)
    • 列的数据类型必须兼容,兼容的含意是必须是数据库能够隐含的转换他们的类型
<!-- 第一条查问 2020-10-13 后入职的护士小姐姐 -->
<!-- 第二条查问名字蕴含李的小姐姐,不管她什么时候入职的 -->
<!-- 执行后,两条 sql 后果可能都含有彼此已存在的数据,union 去反复合并展现 -->
SELECT * FROM t_nurse WHERE created_at > "2020-10-13"
UNION
SELECT * FROM t_nurse WHERE nurse_name LIKE "% 李 %";
  • 多表联查

    • inner join 查问多张表满足关联条件的数据

      SELECT * FROM t_nurse INNER JOIN t_visit_task ON t_nurse.nurse_id = t_visit_task.nurse_id;
      
      <!-- 等同于 -->
      SELECT * FROM t_nurse,t_visit_task WHERE t_nurse.nurse_id = t_visit_task.nurse_id;
    • left join 以左表为主表,其它表配合给出关联条件的数据,有则显示,没有则空

      SELECT * FROM t_nurse LEFT JOIN t_visit_task ON t_nurse.nurse_id = t_visit_task.nurse_id;
    • right join 以右表为主表,其它表配合给出关联条件的数据,有则显示,没有则空

      SELECT * FROM t_nurse RIGHT JOIN t_visit_task ON t_nurse.nurse_id = t_visit_task.nurse_id;

数据类型

数值类型

日期工夫类型

字符串类型

正文完
 0