数据库基础知识

这篇具有很好参考价值的文章主要介绍了数据库基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL的分类

名称 描述 举例
DDL 数据定义语言 create(创建)、alter(修改)、drop(删除)、rename(重命名)、truncate(清空)
DML 数据操作语言 insert(添加)、delete(删除)、update(修改)、select(查询)
DCL 数据控制语言 commit(提交)、rollback(撤销)、grant(赋予权限)、revoke(回收权限)

一、数据库的数据类型

数值

①整数

名称 含义 占用字节
tinyint 十分小的数据 1
smallint 较小的数据 2
mediumint 中等大小的数据 3
int 标准的整数(常用) 4
bigint 较大的数据 8

②小数

名称 含义 占用字节
float 单精度浮点数 4
double 双精度浮点数 8
decimal 字符串形式的浮点数(金融计算时使用,精度更高)

字符串

名称 含义 占用字节
char 固定字符串 0~255
varchar 可变字符串(常用) 0~65535
tinytext 微型文本 0~255
text 文本串(常用) 0~65535

char和tinyint的区别

char:在定义时必须填写大小,例:char[20],创建一个20个字节的char类型数据

tinytext:在定义时无须填写大小,固定为255字节

时间日期

名称 含义
date 日期格式:YYYY-DD-MM
time 时间格式:HH:mm:ss
datetime YYYY-DD-MM HH:mm:ss (常用)
timestamp 时间戳,1970.1.1到现在的毫秒数(较为常用)
year 年份表示

null

可以理解为空值

不要使用null进行运算,结果为null

二、运算符

2.1、算术运算符

运算符 含义
+ 加法
- 减法
* 乘法
/ 或 div 除法
% 或mod 取模、取余

模[余数]的正负,只与被模数[被除数的]正负有关,例:

-12 % 5 = -2 -12 % -5 = -2

2.2、逻辑运算符

运算符 语法 描述
and && a and b 或 a&&b 逻辑与(两个都为真,结果为真)
or || a or b 或 a||b 逻辑或(其中一个为真,结果为真)
not ! not a 或 !a 逻辑非(取反)

2.3、比较运算符

运算符 名称 作用 示例
is null 为空运算符 判断值、字符串或表达式是否为空 如果a为null,结果为真
is not null 不为空运算符 判断值、字符串或表达式是否不为空 如果a不为null,结果为真
between...and... 两值之间的运算符 判断一个值是否在两个值之间 若a在b和c之间,结果为真

三、操作数据库

-- 1、创建数据库
create database [if not exists] 数据库名;

-- 1、创建数据库并指明字符集
create database [if not exists] 数据库名 character set 'utf8';

-- 2、查看当前连接中的所有数据库
show databases;

-- 3、查看当前使用的数据库
select database()

-- 4、切换数据库
use 数据库名;

-- 5、删除数据库
drop database [if exists] 数据库名;

-- 6、更改数据库字符集
alter database 数据库名 character set 'utf8';

四、操作表

4,.1、创建表

-- 删除表
drop table [if exists] 表名;
-- 创建表
create table 表名(
	字段名 类型 约束(主键,非空,唯一,默认值),
    字段名 类型 约束(主键,非空,唯一,默认值),
    ...
    字段名 类型 约束(主键,非空,唯一,默认值)
)编码,存储引擎;

CREATE TABLE student
(
sid INT not null,
sname varchar(32),
sage INT, 
ssex varchar(8),
primary key (sid)
);

在SQL中,有如下约束:

  • not null -指示某列不能存储null值。
  • unique -保证某列的每行必须有唯一的值。
  • primary key -主键(非空,唯一,not null和unique的结合)。
  • foreign key -外键,保证一个表中的数据匹配另一个表中的值的参照完整性。
  • check -保证列中的值符合指定的条件。
  • default -规定没有给列赋值时的默认值。
-- 例
CREATE TABLE student
(
sid INT,
sname nvarchar(32),
sage INT, 
ssex nvarchar(8)
)engine=InnoDB default charset=utf8;

常用命令

show create database 数据库名; -- 查看创建数据库的语句
show create table 表名;--查看创建该表的语句
desc 表名; --查看表的结构

5.2、修改表

5.2.1、对表名进行修改

1、重命名表

-- 把表A的名字改为B
#方式一:
rename table A to B;
#方式二:
alter table A rename [to] B;

2、清空表

-- 清空表A内的数据
truncate table A;
5.2.2、对表内字段进行修改

alter:修改

1、添加列

-- 添加一个字段(默认添加到最后一列)
alter table 表名 add 字段名 [类型];

-- 添加到第一列
alter table 表名 add 字段名 [类型] first;

-- 添加到指定列的后面(放到A列后面)
alter table 表名 add 字段名 [类型] after A;

2、修改列

-- 修改字段的长度(把A的字符串长度改为10)
alter table 表名 modify A varchar(10);

--修改字段的长度(把A的字符串长度改为10,并添加默认值为a)
alter table 表名 modify A varchar(10) default 'a';

3、重命名列

-- 重命名字段(列名a改成b)
alter table 表名 change a b;

-- 重命名的同时,修改字符串的长度
alter table 表名 change a b varchar(20);

4、删除列

-- 删除一个字段(列)
alter table 表名 drop column a;

5.3、删除表

-- 删除表A
drop table if exists A;

五、操作数据

5.1、插入数据

-- 插入3条具体数据
insert into student(sid,sname,sage,ssex) values(1,'刘一',18,'男'),
(2,'钱二',19,'女'),
(3,'张三',17,'男')

-- 插入一个结果集(字段与字段类型要对应)
-- 查询语句的返回结果为:(3,2,72),插入到sc表中
insert into sc 
select sid,2,(SELECT AVG(score) FROM sc WHERE cid =2)
from student
where sid not in(select sid from sc where cid = 3)

5.2、更新数据(修改数据)

-- 格式:update 表名 set 数据 where 过滤条件
-- 例:把第3条数据的'叶平'改为'王艳'
UPDATE teacher set tname = '王艳' where tid=3;

-- 多表连接更新
UPDATE sc
JOIN (select cid,avg(score) AS avg
			from sc
			WHERE cid IN(SELECT cou.cid
									 FROM teacher tea,course cou
									 WHERE tea.tid = cou.tid AND tea.tname = '叶平')
			GROUP BY cid) AS SS
ON sc.cid =SS.cid
SET sc.score = SS.avg

修改数据时,由于约束的影响,可能会造成更新失败的情况

5.3、删除数据

-- 格式:delete from 表名 where 过滤条件
-- 把叶平删除
delete from teacher where tname = '叶平';

删除数据时,由于约束的影响,可能会造成更新失败的情况

5.4、查询数据

查询语句书写的结构

查询语句执行的顺序

AS(alias) 别名

作用:有的时候,列名字不是那么见名知意,可以起一个别名

格式:字段名 AS 别名

-- 别名 给查询的字段起一个名字 AS
select sname as 学生姓名,sage as 学生年龄 from student;

distinct 去重

作用:去除select查询出来的结果中重复的数据,重复的数据只显示一条

格式:distinct 字段名

-- 查询有哪些学生参加了考试;
SELECT sid FROM sc;
-- 发现重复数据,去重
SELECT DISTINCT sid from sc;

where 条件子句

作用:检索数据中符合条件的值

--查询sid=1的学生的所有课程的成绩
SELECT sid,score FROM sc WHERE sid = 1;

in/not in

作用:在某个范围内

like

作用:模糊查询

_:表示单个字符

%:表示0或无数个字符

-- 查询姓李的学生
select sname from student where like '李%';
-- 查询名字中带国的学生
select sname from student where like '%国%';

order by

作用:子句排序,默认升序

  • ASC 升序
  • DESC 降序
-- 查询学生的所有成绩,并降序排列
select  * FROM sc ORDER BY score DESC; 

-- 一级排序、二级排序
-- 查询学生的所有成绩,并降序排列,当成绩相同时,按学生id升序排列
select  * FROM sc ORDER BY score DESC,sid ASC; 

limit

作用:分页

用法:limit n,m

n表示指针的偏移量

m表示每页显示几条数据

分页显示公式:n=(n-1)*m

例:第2页,每页显示5行

limit (2-1)*5,5

limit 5,5

-- 查询学生的所有成绩,以每页5行进行分页,并只展示第二页
SELECT * from sc LIMIT 5,5;

group by

作用:分组

having

作用:过滤数据

必须与group by连用

多表查询

等值连接、非等值连接

-- 等值连接 钱二的语文成绩是多少   79
SELECT student.sid,student.sname,course.cname,sc.score
FROM sc,student,course
WHERE sc.sid = student.sid AND sc.cid = course.cid AND student.sname='钱二' AND course.cname='语文';

-- 非等值连接 查询钱二的成绩在60~90之间的分数及学科
select student.sid,student.sname,course.cname,sc.score
FROM sc,student,course
WHERE sc.sid = student.sid AND sc.cid = course.cid AND student.sname='钱二' AND sc.score>60  AND sc.score<90;

自连接、非自连接

自连接:其核心在于把一个表复制成两个表,找到对应字段后,进行查询

内连接、外连接

六、函数

5.1、基本函数

下面列举其中一些基本函数

5.1.1、字符串函数
函数 用法
concat(s1,s2,...sn) 字符串拼接,将s1,s2,...sn拼接成一个字符串
lower(str) 将字符串str全部转为小写
upper(str) 将字符串str全部转为大写
lpad(str,n,pad) 左填充,用字符串pad对str左边进行填充,达到n个字符串长度
rpad(str,n,pad) 右填充,用字符串pad对str右边进行填充,达到n个字符串长度
trim(str) 去掉字符串头部和尾部的空格
substring(str,strat,len) 返回字符串str从start位置起的len个长度的字符串
5.1.2、数值函数
函数 用法
ABS(x) 返回x的绝对值
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x,y) 返回x除以y的余数
RAND() 返回0~1的随机值
RAND(x) 返回0~1的随机值,相同的x值会产生相同的随机数
ROUND(x) 返回x四舍五入后的整数
ROUND(x,y) 返回x四舍五入后的小数,小数点保留y位,y可为负数
-- RAND(x) 返回0~1的随机值,相同的x值会产生相同的随机数
select rand(1),rand(1),rand(2);
-- 生成6位验证码
lpad(round(rand()*1000000,0),6,'0')
5.1.3、日期函数
函数 用法
curdate() 返回当前日期(年月日)
curtime() 返回当前时间(时分秒)
now() 返回当前日期和时间
year('date') 获取指定date的年份(date格式:2023-6-19)
month('date') 获取指定date的月份
day('date') 获取指定date的日期
date_add('date',interval expr type) 返回一个日期/时间加上一个时间间隔expr后的时间值
datediff('day1','dat2') 返回起始时间date1和结束时间date2之间的天数
-- year(date) 获取当前时间的年份
select year(now())

-- month(date) 获取当前时间的月份
select month(now())

-- day(date) 获取当前时间的日期(日)
select day(now())

-- date_add(date,interval expr type)
-- 当前时间加上70天
select date_add(now(),interval 70 day)

-- datediff(day1,day2)
-- 前者减去后者
select datediff('2023-6-19','1996-8-7')
5.1.1、流程控制函数
函数 用法
if(values,a,b) 如果values为真,返回a,否则返回b
ifnull(values1,values2) 如果values为空(null),返回values1,否则返回values2
case when [val1] then [res1]...else [default] end 如果val1为真,返回res1,...否则返回default默认值
case [erp1] when [val1] then [res1]...else [default] end 如果erp1=val1,返回res1,...否则返回default默认值
-- ifnull(values1,values2)
-- 如果一个值为空(null)时,把它当成0来计算
select ifnull(values,0);

-- case when [val1] then [res1]...else [default]  end
-- 求某一个课程的及格率
SELECT sum(CASE WHEN cid =1 and score>60 THEN 1 ELSE 0 END)/sum(CASE WHEN cid =1 THEN 1 ELSE 0 END)
FROM sc

由于avg()、sum()、count()在计算时都不计算空(null)值,所以可以使用ifnull(values,0)转为0进行计算

5.2、聚合函数

常用的几个聚合函数文章来源地址https://www.toymoban.com/news/detail-697453.html

名称 作用
AVG() 求平均值 只适用于数值类型的字段/变量(不计算null值
SUN() 求和 只适用于数值类型的字段/变量(不计算null值
MAX() 求最大值 数值类型、字符串类型、日期类型
MIN() 求最小值 数值类型、字符串类型、日期类型
COUNT() 计算指定字段在查询结果中的个数 不计算null值

到了这里,关于数据库基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库基础知识,基础操作详细整理

    引入: 淘宝网,京东、微信,抖音等都有各自的功能,那么当我们退出系统的时候,下次再访问时,为什么信息还存在? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数

    2024年04月17日
    浏览(51)
  • 数据库入门-----SQL基础知识

    目录 📖前言: 📑SQL概述通用语法:  🐳DDL: 🐻操作数据库: 🐞数据类型:  🦉操作表: 🦦DML: 语法规则: 案例演示: 🦏DQL: 语法规则: 案例演示: # 基础查询:  # 条件查询:  #聚合函数:  # 分组查询:  #排序查询:  #分页查询:  执行顺序: 🫎DCL: 语法规则:

    2024年04月10日
    浏览(53)
  • Mysql数据库基础知识总复习

    小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 前言 数据库基础知识 数据,数据库,数据库管理系统,数据库系统 数据

    2024年02月02日
    浏览(54)
  • OB数据库基础知识(学习记录)

    目录 OB业务场景 公司使用理由: 常见 bootstrap 失败原因 常见OBD 部署 失败原因 Grafana  查看集群资源由各个节点的聚合情况  OB创建租户 表分组的场景 mysqldump到处数据库schema,数据库数据,表数据 数据同步框架 DATAX obdumper使用注意事项 obdumper调优 obloader使用注意事项  什么

    2024年02月14日
    浏览(37)
  • 【数据库】MySQL基础知识全解

    系列综述: 💞目的:本系列是个人整理为了 秋招面试 的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于拓跋阿秀、小林coding等大佬博客进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。

    2024年02月09日
    浏览(51)
  • SQL Server数据库基础知识汇总

    目录 目录 一、数据库概念 1.1 什么是数据库 1.2 为什么用数据库 1.3 数据库的发展历史 1.4 数据库分类 1.5 DBMS数据库管理系统 二、 SQL(Structured Query Language) 2.1  定义 2.2  SQL分类 2.3 SQL与T-SQL 三、SqlServer下载与安装 四、数据库表各类操作 1 创建数据库登录用户 2 使用DCL赋予数据

    2023年04月09日
    浏览(53)
  • 【MySQL】数据库MySQL基础知识与操作

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详解

    2024年02月05日
    浏览(40)
  • MySQL数据库基础初学者必备知识

    目录 1.数据库的基本操作 1.1显示所有数据库 1.2创建数据库 1.3删除数据库 2.数据库的类型 2.1数值类型 2.2字符串类型 2.3日期类型 3.表的简单操作 3.1创建一个表 3.2显示表的结构 3.3显示数据库中的所有表 3.4删除指定表 4.实战练习 数据库的基本操作为:显示数据库,创建数据库

    2023年04月11日
    浏览(68)
  • MySQL入门指南:数据库操作的基础知识

    当谈到关系型数据库管理系统(RDBMS)时,MySQL无疑是最常见和广泛使用的一个。它是一个强大的工具,用于存储、管理和检索数据。在这篇博客中,我们将介绍MySQL的基本知识,包括数据库的操作、数据表的操作以及数据的增删改查~~ 目录 1. 数据库的操作 1.1 创建数据库 1.2 删除

    2024年02月07日
    浏览(96)
  • 【数据库】MySQL概念性基础知识期末复习

    第一章 3 二维表结构……数据模型—— 关系数据模型 5 描述全部数据整体逻辑结构—— 模式 6 逻辑数据独立性—— 模式变,外模式和应用程序不变 7 物理数据独立性—— 内模式变,外模式和应用程序不变 9 R-(R-S)—— R∩S 10 从两个关系笛卡尔积中选取他们属性间满足一定条

    2024年02月02日
    浏览(117)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包