数据库基础01-mysql和SQL语句

目录

一、关系型数据库

1.什么是关系型数据库

2.主要优点

二、SQL语句

1.简介:

2.SQL通用语法

3.SQL语法分类

4.DDL

(1)查询库

(2)创建库

(3)删除库

(4)使用库

(5)查询表

(6)创建表

(7)删除表

(8)修改表

(9)SQL中的数据类型

5.DML

(1)添加数据

(2)修改数据

(3)删除数据

6.DQL(单表查询)

(1)基础查询

(2)条件查询

(3)分组查询

(4)排序查询

(5)分页查询

(6)条件列表(关键字推荐大写,为了好辨识写的小写)

(7)排序方式

(8)聚合函数

三、图形化客户端工具-Navicat

1.工具的使用

四、IDEA连接数据库

1.连接步骤


一、关系型数据库

1.什么是关系型数据库

关系型数据库是建立在关系模型基础上的数据库

简单来说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

2.主要优点

  • 都是使用表结构,格式一致,易于维护

  • 使用通用的SQL语言操作,使用方便,可用于复杂查询

  • 数据存储在磁盘中,安全

二、SQL语句

1.简介:

  • Structured Query Language,简称 SQL

  • 结构化查询语言,一门操作关系型数据库的编程语言

  • 定义操作所有关系型数据库的统一标准

  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

2.SQL通用语法

  • SQL 语句可以单行或多行书写,以分号结尾

  • MySQL数据库的 SQL 语不区分大小写,关键字建议使用大写!(为了好辨识我用的小写,正常应该用大写)

  • 注释

    • 单行注释: --注释内容或#注释内容(MySQL 特有)

    • 多行注释:/* 注释内容 */

3.SQL语法分类

  • DDL:(Data Definition Language)数据定义语言,用来定义数据库对象: 数据库,表,列等

    • 操作数据的:库,表等

  • DML:(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改

    • 对表中数据进行增删改

  • DQL:(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)

    • 对表中数据进行查询

  • DCL:(Data ControlLanguage)数据控制语言,用来定义数据库的访问权限和安全级别,以及创建用户

    • 对数据库进行权限控制

4.DDL

(1)查询库
#查看所有数据库
show databases;
(2)创建库
#创建数据库
create database 数据库名;
#创建数据库(加判断)
create database if not exists 数据库名;
(3)删除库
#删除数据库
drop database 数据库名;
#删除数据库(加判断)
drop database if exists 数据库名;
(4)使用库
#查看当前使用的数据库
select database();
#使用/进入指定数据库
use 数据库名;

(5)查询表
#查看库中所有表
show tables;
#查看表结构
desc 表名;
(6)创建表
#创建表,最后一行没有,
create table 表名(
    字段名01 数据类型01,
    字段名02 数据类型02,
    字段名03 数据类型03,
    ...
    字段名n 数据类型n
);
​
create table user(
    id int,
    name varchar(20),
    password varchar(40)
);

(7)删除表
#删除表
drop table 表名;
#删除表(带判断)
drop table if exists 表名;

(8)修改表
#修改表名
alter table 表名 rename 新表名;
​
#表中添加一列(末尾插入)
alter table 表名 add 列名 数据类型;
​
#删除指定列
alter table 表名 drop 列名;
​
#修改数据类型
alter table 表名 modify 列名 新数据类型;
​
#修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;
(9)SQL中的数据类型

分为三类,我举例只是常用的

  • 数值类:

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes自查自查极大整数值
FLOAT4 Bytes自查自查单精度 浮点数值
DOUBLE8 Bytes自查自查双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

double(数值总长度,小数点保留位数【0-100】)

  • 日期和时间类:

类型大小 ( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

结束时间是第 2147483647

北京时间:2038-1-19 11:14:07

格林尼治时间: 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳
  • 字符串类型

类型大小用途
CHAR0-255 bytes定长字符串(高效但费空间)
VARCHAR0-65535 bytes变长字符串(低效但省空间)
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

5.DML

(1)添加数据
#给指定列添加数据
insert into 表名(列名01,列名02,列名03, ... ,列名n) value(值01,值02,值03, ... ,值n);
​
#给全部列添加数据
insert into 表名 values(值01,值02,值03, ... ,值n);
​
#批量添加数据
#方式一
insert into 表名(列名01,列名02,列名03, ... ,列名n) values(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n),(值01,值02 ... ,值n)...;
#方式二
insert into 表名 values(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n)...;

(2)修改数据
#修改表数据
#注意:如果不加条件判断,则为修改全部数据!
update 表名 set 列名1=值1,列名2=值2,...,列名n=值n [where 条件]
UPDATE user SET id = 10,num = 3, score = 99 WHERE name="张三";

(3)删除数据
#删除表数据
#注意:如果不加条件,则为删除所有数据!
delete from 表名 [where条件]

6.DQL(单表查询)

(1)基础查询
#查询表中所有数据
select * from 表名;
​
#查询表中多个字段中的数据【多个字段用,隔开】
select 字段列表 from 表名;
​
#去除重复记录
select distinct 字段列表 表名;
​
#起别名,AS可以省略
as 别名
#如
select name as 姓名 from user;
select name 姓名 from user;
(2)条件查询
#基础查询+条件列表
select name from user where id = 3;
(3)分组查询
#select 聚合函数(列名) from 表名;
#null 值不参与所有聚合函数运算
select avg(score) from user;
​
​
#分组查询
#基础查询+(条件)group by 分组字段名 (having 分组后条件)
#分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
#按性别分组,查询平均分
select sex,avg(score) from user group by sex;
#按性别分组,查询平均分和各自的人数
select sex,avg(score),count(*) from user group by sex;
#按性别分组,查询平均分和各自的人数,要求低于60分的不参与平均
select sex,avg(score),count(*) from user where score>60 group by sex;
#按性别分组,查询平均分和各自的人数,要求低于60分的不参与平均,分组后人数要大于2
select sex,avg(score),count(*) from user where score>60 group by sex having count(*) > 2;

注意点:

  • 分组之后,查询的字段应为聚合函数和分组字段,查询其他字段无任何意义

where 和 having的区别:

  • 执行时机:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤.

  • 限定范围:where 不能对聚合函数进行判断,having可以对聚合函数进行判断

  • 执行顺序:where > 聚合函数 > having

(4)排序查询
#基础查询+(条件查询)+order by 排序字段名1 排序方式,排序字段名2 排序方式...
#如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
select name,math,chinese from user order by math desc,chinese asc;

(5)分页查询
#基础查询 + limit 起始索引,查询条目数
#起始索引:从0开始
#计算公式:起始索引 = (当前页面-1)*每页显示条数
select * from user limit 0,3;
#每页显示10条数据,查询第3页的数据
select * from user limit 20,10;

分页查询在不同数据库的关键字

  • Mysql:limit

  • Oracle:rownumber

  • SQL Server:top

(6)条件列表(关键字推荐大写,为了好辨识写的小写)
符号说明
>大于
<小于
>=大于等于
<=小于等于
=等于
<>/!=不等于
between...and...在[ ]区间,内容可为日期
in(a,b,c,d...)多选一,满足其一即成立
like 占位符 (_单个任意字符) (%多个任意字符)模糊查询
is null是null
is not null不是null
and/&&并且(推荐and)
or/||或(推荐or)
not/!

(7)排序方式
排序方式说明
ASC(默认)升序
DESC降序

(8)聚合函数

将一列数据作为一个整体,进行纵向计算。

函数名说明
count(列名)统计数量(不为null的值,一般推荐主键和*)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

三、图形化客户端工具-Navicat

Navicat for MysQL 是管理和开发MySQL或MariaDB 的理想解决方案

这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面

官网: Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理

1.工具的使用

  • 打开Navicat

  • 文件

  • 新建连接

  • 选择mysql/MariaDB都可以

  • 设置好连接名和密码即可进行连接

点击连接名,右键,新建数据库,之后自己玩吧~

四、IDEA连接数据库

1.连接步骤

  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值