数据库的介绍
数据库是用来存储数据的在这个过程中借助sql语言对数据精选操作管理查询
数据库按照:库表数据三个层级进行组织
SQL的概述和ddl语法
SQL语言的概述
操作数据库的标准语言
分类:数据定义:DDL
数据操作:DML
数据控制:DCL
数据查询:DQL
SQL语法的特性
1、大小写不敏感
2、SQL语句是以分号结尾的语句
3、SQL是支持注释的:
DDL-库管理
表中常用操作:
mysql 中的数据类型
定长字符串的性能较好
DDL中表操作-修改
1、添加字段
ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';
2、修改字段
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
3、删除字段
TRUNCATE TABLE 表名;
删除整张表:drop table 表名;
DDL小结
DML
DML是对数据进行增删改的三个操作;
添加数据 (insert)
修改数据(update)
删除数据(delete)
添加数据
1、给指定的字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
2、给全部字段添加数据
insert into表名 values(值1,值2.......)
3、批量添加数据
insert into表名(字段1,字段2,.......)values(值1,值2,......),(值1,值2,......),(值1,值2,......);
指定字段名即给指定的字段修改数值,未指定代表给所有的值添加数据
insert into 表名values(值1,值2,......),(值1,值2,......),(值1,值2,......);
注意事项: 插入数据时指定的字段顺序需要与值的顺序是一一对应的;
字符串和日期型的数据应该包含在引导值中;
插入的数据大写哦应该在字段的规定范围之内;
更新和删除
1、修改数据
update 表名 set 字段名1-值1,字段名2-值2,........[where 条件];
没有where即更新所有的表
2、删除数据
delete from 表名 [where 条件]
没有where即删除整张表
DQL
数据查询语言,用来查询数据
查询关键字:
基本查询
1、查询多个字段
select 字段1,字段2,....from 表名;
select *from 表名;(实际开发中尽量罗列所有的字段而不是写*)
2、设置别名
select 字段1[as 别名1],字段2[as 别名2]....from 表名;
3、去除重复记录
select distinct 字段列表 from 表名;
实例:
条件查询(where)
1、语法
select 字段列表 from 表名 where 条件列表;
2、条件
实例:
聚合查询(count、max、min、avg、sum)
1、介绍
将一列数据作为一个整体进行纵向操作;
2、常见的聚合函数
3、语法
select 聚合函数 (字段列表)from 表名;
使用聚合函数所有的null值不参加运算
实例:
分组查询(group by)
1、语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组过滤条件]
2、where和having之间的区别
执行的时机不同:where是对分组之前的数据进行过滤,不满足where的数据不参加分组;having是对分组之后的数据进行过滤;
判断的条件不同:where不能对聚合函数进行判断而having可以;
实例:
排序查询(order by)
1、语法
select 字段列表 from 表名 order by 字段1,排列方式1,字段2,排列方式2;
2、排序方式
asc:升序(默认值),在编写的过程中可以省略
desc:降序
实例:
分页查询(limit)
1、语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意: 起始索引从零开始,起始索引=(查询页码-1)*每页显示记录数;
分页查询是数据库的方言,不同数据库的实现有所不同;
如果查询的是第一页数据,起始索引可以直接省略,直接简写为limit 10;
实例:
大综合实例
DCL
介绍
DCL数据控制语言,用来管理数据库 用户、控制数据库的访问权限;
DCL用户管理
1、查询用户
2、创建用户
3、修改用户密码
4、删除用户
注意: 主机名可以使用%通配;
这类sql开发操作比较少,主要是管理员使用
DCL控制权限
常用权限
1、查询权限
show GRANTS FOR '用户名'@'主机名';
2、授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3、撤销权限
revoke 权限列表 on数据库名.表名 from '用户名'@'主机名';
注意:多个权限之间使用逗号进行分割;
授权时数据库名和表名可以使用*进行替代;
DCL总结
函数
函数是指一段可以被另一段程序调用的程序或代码
字符串函数
常用函数
A. concat : 字符串拼接 select concat('Hello' , ' MySQL');
B. lower : 全部转小写 select lower('Hello');
C. upper : 全部转大写 select upper('Hello');
D. lpad : 左填充 select lpad('01', 5, '-');
E. rpad : 右填充 select rpad('01', 5, '-');
F. trim : 去除空格 select trim(' Hello MySQL ');
G. substring : 截取子字符串 select substring('Hello MySQL',1,5);
案例:
数值函数
常见函数
A. ceil:向上取整 select ceil(1.1);
B. floor:向下取整 select floor(1.9);
C. mod:取模 select mod(7,4);
D. rand:获取随机数 select rand();
E. round:四舍五入 select round(2.344,2);
日期函数
常见函数
A. curdate:当前日期 select curdate();
B. curtime:当前时间 select curtime();
C. now:当前日期和时间 select now();
D. YEAR , MONTH , DAY:当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());
E. date_add:增加指定的时间间隔 select date_add(now(), INTERVAL 70 YEAR );
F. datediff:获取两个日期相差的天数 select datediff('2021-10-01', '2021-12-01');
流程控制函数
常见函数
A. if select if(false, 'Ok', 'Error');
B. ifnull
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
C. case when then else end
math等三个数值不是具体数字是一个范围,所以不可以使用默认的,需要去掉math等数值,直接比较(反例见上面C部分)
函数总结、
约束
1、概念
约束时作用于表中字段上的规则。用于限制存储在表中的数据
2、目的
保证数据库中的数据的正确、有效性和完整性
3、分类
约束时作用于表中字段上的,可以在创建表/修改表的时候添加约束
实例:
外键约束
语法
添加外键
案例:
为emp表的dept_id字段添加外键约束,关联dept表的主键id。
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references
dept(id);
更多实时更新
https://www.yuque.com/docs/share/7c9ea0f6-cdce-49e6-9d3b-52afe1ad415d?# 《数据库》