栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库基础

目录

什么是数据库?什么是数据库管理系统?什么是SQL?他们之间是什么关系?

SQL语言分类

DDL

DQL

DML

DCL

DDL

创建表(DDL)

删除表

修改表结构

添加字段

修改字段数据类型

修改字段名和数据类型

删除字段

修改表名

DQL

查询一个字段

查询多个字段

查询所有字段

把每个字段都写上

使用*

给查询结果列起别名

条件查询

排序

查询薪资排序

单行处理函数

字符串函数

日期函数

数值函数

流程函数​编辑

多行处理函数

count 计数

sum 求和

avg 平均数

max 最大值

min 最小值

注意

分组查询

连接查询

内连接

外连接

多张表的连接

执行顺序

DML

insert 插入数据

插入多条记录

update修改

delete删除

DCL

用户

查询用户

创建用户

修改密码

删除用户

权限

查询权限

授予权限

撤销权限


什么是数据库?什么是数据库管理系统?什么是SQL?他们之间是什么关系?

数据库:Database,简称DB。按照一定格式存储数据的一些文件的组合。
数据库管理系统:DatabaseManagement,简称DBMS。专门用来管理数据库中的数据,实现对数据库数据进行增删改查。
SQL:结构化查询语句
通过编写SQL语句,然后用DBMS执行SQL语句,最终来完成数据库中的数据的增删改查操作。
DBMS–执行–>SQL–操作–>DB

SQL语言分类

DDL

​ 数据定义语言,凡是带有create 、drop、alter的都是DDL。DDL主要是操作表的结构,不是表的数据。
​ create :新建,等同于增

​ drop :删除

​ alter:修改

​ 主要是对表结构进行操作

DQL

​ 数据查询语言,带有select关键字的都是查询语句

DML

​ 数据操作语言,对表中数据进行增删改的操作

​ insert 增 delete 删 update 改 主要操作表中的数据

DCL

数据控制语言 授权grant、 撤销权限 revoke


DDL

创建表(DDL)
create table 表名(
	字段名1,数据类型,
    字段名2,数据类型,
    字段名3,数据类型
)

表明,字段名要见名知意

删除表
drop table student(表名);

修改表结构

添加字段
alter table 表名 add 字段名 类型(长度);

修改字段数据类型
alter table 表名 modify 字段名 新数据类型(长度); 

修改字段名和数据类型
alter table 表名 change 旧字段名 新字段名 新数据类型(长度); 

删除字段
alter table 表名 drop 字段名;

修改表名
alter table 表名 rename to 新表名;
DQL

查询一个字段
select 字段名 from 表名;

select from都是关键字

字段名和表名是标识符

查询不区分大小写

查询多个字段

使用“,”隔开

select 字段名,字段名 from 表名;

查询所有字段

把每个字段都写上
select 字段名,字段名,…… from 表名;

使用*
select * from 表名;

给查询结果列起别名

使用as关键字起别名

注意:只是将显示的查询结果列名显示as 后的 ,原表列名并没有更改

as关键字可省略,使用空格

如果查询后的as 的别名有空格 使用单引号可以改变

字段可以使用数学表达式!

条件查询

不是将表中所有的数据查出来,是查询出符合条件的

语法

select
	字段1,字段2,字段3,……
from
	表名
where
	条件;

= 等于,<>或!= 不等于,< 小于,<=小于等于,>大于,>=大于等于

排序

order by

默认升序

查询薪资排序
select ename,sal from emp order by sal;//升序
select ename,sal from emp order by sal desc;//jiang'xu

单行处理函数

字符串函数

Lower转换为小写

select lower(ename) from emp;

Upper转换为大写

select upper(ename) from emp;

substr取子串(被截取的字符串,起始下标,截取的长度)

 select ename from emp where substr(ename,1,1)='A';//找出员工第一个字母为A

注意:起始下标从1开始,不像数组从0开始。

concat函数进行字符串的拼接

 select concat(upper(substr(ename,1,1)),lower(substr(ename,2,length(ename)-1))) from emp;//首字母大写

length取长度

 select length(ename) enamelength from emp;

trim去空格

trim('');

substring

substring (str,start,len)

返回从字符串str从start位置起的len个长度的字符串;

日期函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ij3qQN7N-1657356176724)(3函数.assets/image-20220706111245538.png)]

str_to_data将字符串转换成日期

date_format格式化日期

date_format('日期类型数据','日期格式');

format设置千分位

数值函数

ceil(x) 向上取整

floor(x) 向下取整

mod(x,y) 返回x/y的模

round四舍五入

rand()生成随机数

流程函数

多行处理函数

特点:输入多行,输出一行

count 计数
select count(ename) from emp;
+--------------+
| count(ename) |
+--------------+
|           14 |
+--------------+
1 row in set (0.01 sec)

sum 求和

工资和

select sum(sal) from emp;

avg 平均数

平均工资

select avg(sal) from emp;

max 最大值

最高工资

select max(sal) from emp;

min 最小值

最低工资

select min(sal) from emp;

注意

分组函数自动忽略null,不需要对null提前处理

count(*)和count(具体字段)有什么区别?

count(具体字段):表示该字段下所有不为null元素的总数

count(*): 统计表中的总行数

分组函数不能直接使用在where子句中。

分组查询
select... from ... group by ...

连接查询

内连接

等值连接

查询每个员工所在部门名称,显示员工名和部门名

select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno order by dname;sql92
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno order by dname;sql99(!!!!!!)

非等值连接

查出每个员工所处于工资的哪个等级

 select e.ename,e.sal,s.grade from emp ejoin salgrade s on e.sal between s.losal and s.hisal;

自连接

查询员工的上级领导,要求显示员工名和对应的领导名

select a.ename,a.mgr,b.ename from emp a join emp b on b.empno=a.mgr;
+--------+------+-------+
| ename  | mgr  | ename |
+--------+------+-------+
| SMITH  | 7902 | FORD  |
| ALLEN  | 7698 | BLAKE |
| WARD   | 7698 | BLAKE |
| JONES  | 7839 | KING  |
| MARTIN | 7698 | BLAKE |
| BLAKE  | 7839 | KING  |
| CLARK  | 7839 | KING  |
| SCOTT  | 7566 | JONES |
| TURNER | 7698 | BLAKE |
| ADAMS  | 7788 | SCOTT |
| JAMES  | 7698 | BLAKE |
| FORD   | 7566 | JONES |
| MILLER | 7782 | CLARK |
+--------+------+-------+
13 rows in set (0.00 sec)

自连接,技巧:一张表看作两张表

外连接

外连接中有主次关系

带有left的即为左连接,带有right的叫做右连接

右外连接

right代表什么:将join右边的表看作主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表;

select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno;
+--------+------------+
| ename  | dname      |
+--------+------------+
| MILLER | ACCOUNTING |
| KING   | ACCOUNTING |
| CLARK  | ACCOUNTING |
| FORD   | RESEARCH   |
| ADAMS  | RESEARCH   |
| SCOTT  | RESEARCH   |
| JONES  | RESEARCH   |
| SMITH  | RESEARCH   |
| JAMES  | SALES      |
| TURNER | SALES      |
| BLAKE  | SALES      |
| MARTIN | SALES      |
| WARD   | SALES      |
| ALLEN  | SALES      |
| NULL   | OPERATIONS |
+--------+------------+
15 rows in set (0.00 sec)

左外连接

select e.ename,d.dname from dept d left join emp e on e.deptno=d.deptno;

查询每个员工的上级领导,要求显示所有员工的名字和领导名

select a.ename,b.ename from emp b right join emp a on a.mgr=b.empno;
+--------+-------+
| ename  | ename |
+--------+-------+
| SMITH  | FORD  |
| ALLEN  | BLAKE |
| WARD   | BLAKE |
| JONES  | KING  |
| MARTIN | BLAKE |
| BLAKE  | KING  |
| CLARK  | KING  |
| SCOTT  | JONES |
| KING   | NULL  |
| TURNER | BLAKE |
| ADAMS  | SCOTT |
| JAMES  | BLAKE |
| FORD   | JONES |
| MILLER | CLARK |
+--------+-------+
14 rows in set (0.00 sec)

多张表的连接

语法

select
	...
from
	a
join 
	b
on
	a和b的条件
join 
	c
on
	a和c的条件
join 
	d
on
	a和d的条件

执行顺序


执行顺序

  1. from
  2. where
  3. group by
  4. having
  5. select
  6. order by
  7. limit
DML

insert 插入数据
insert into 表名(字段名1,字段名2,字段名3...) values (值1,值2,值3...);

数量与数据类型一一对应。

insert into student(stuno,name,age,email) values (2018,'麦',21,'1215@qq.com');

插入多条记录
insert into 表名 (字段名1,字段名2,字段名3...) values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...);
insert into 表名 values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...);

没有给的字段,值为null

update修改
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3 ... where 条件;

当没有条件限制会导致所有数据更新

delete删除
delete from 表名 where 条件;

当没有where条件是,会删除表中所有的数据。

DCL

用来管理数据库用户、控制数据库的访问权限

用户

查询用户
use mysql;
select * from user;

创建用户
create user '用户名'@'主机名' identified by '密码';

修改密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

删除用户
drop user '用户名'@'主机名';

权限

查询权限
show grants for '用户名'@'主机名';

授予权限
grant 权限列表 on 数据库名,表名 to '用户名'@'主机名';

撤销权限
revoke 权限列表 on 数据库名,表名 from '用户名'@'主机名';

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号