MySQL零基础学习Day2——数据库基础操作
前言
在大学已经上过数据库课程的同学可以直接跳过这个,去看后续我会发的函数部分,因为Java中一般不需要你把数据库学的很牛,学会基本的crud,也就是我们平常在说的增删改查,再加上一些窗口函数即可。
一.MySQL数据库
1.关系型数据库(RDBMS)
含义:建立在关系模型基础上,由多张互相来连接的二维表组成的数据库 ,即通过表结构来进行数据存储。
特点:
使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便
注:不通过表结构来存储数据的,则称为非关系型数据库
2.数据模型
二.SQL
1.SQL通用语法
SQL语句可以单行or多行书写,以分号结尾
SQL语句可以使用空格/缩进来增强语句的可读性
MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
注释:
单行注释:--注释内容 or #注释内容(MySQL持有)
多行注释:/*注释内容*/
2.SQL的分类
1)DDL(数据定义语言)
数据类型汇总
注意:在删除表的同时,表中的全部数据也会被全部删除
2)DML(数据操作语言)
注意:
插入数据时,指定的字段顺序需要与值的顺序是一一对应的
字符串和日期型数据应该包含在引号中
插入的数据大小,应该在字段的规定范围内
注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的数据
注意:
DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的数据
DELETE语句不能删除某一个字段的值(可以使用UPDATE)
3)DQL(数据查询语言)
-- 查询年龄等于18或20或40的员工信息
select * from emp where age = 18 or age = 20 or age = 40;
select * from emp where age in(18,20,40);
--上述这两种效果是一样的,in的效果就是后续值能够满足其一即可
注:null值不参与所有聚合函数运算
where和having的区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
- 判断条件不同:where不能对聚合函数进行判断;而having可以
注意:
- 执行顺序:where>聚合函数>having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
排序方式
- ASC:升序(默认值)
- DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
-- 根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行升序排序
select * from emp order by age asc,entrydate desc;
--意思就是先按照年龄进行排序,如果年龄相同,则按照入职时间排序
注意:
- 起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMTIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
4)DCL(数据控制语言)
-- 创建用户itcast,只能够在为当前主机localhost访问,密码123456;
creat user 'itcast'@'localhost' identified by '123456';--创建用户heima,可以在任意主机访问该数据库,密码123456;
creat user 'heima'@'%' identified by '123456';--修改用户heima 的访问密码1234;
alter user 'heima'@'%' identified with mysql_native_password by '1234';--删除itcast@localhost用户
drop user 'itcast'@'localhost';
注意:
主机名可以使用“%”进行通配,代表任意主机都可以访问该mysql服务器
这类SQL语句开发人员操作较少,主要是DBA(数据库管理员)和运维在更多使用
所以如果是单纯进行开发,则这类语句不用重点学习
注:如果是给所有的数据库和所有的表来赋予权限,就可以在数据库名.表名写" *.* ",此外多个权限之间,使用逗号分隔