数据库操作
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;
-
数据类型
数值类型
日期工夫类型
字符串类型