# 为什么用数据库?

1. 数据可以存在哪里?

浏览器上,内存(变量-数组,临时存储),硬盘,网盘,手抄,光盘

2. 数据永久化?

硬盘,网盘,光盘---以文件的形式

word , excel , ppt , xml  //数据量小的时候

数据库实现数据永久化(还是一种文件)  //数据量大的时候

数据库的作用

1. 可以存储大量的数据,可以对其进行访问,检索(管理数据)

2. 保证数据的完整性(稳定性 + 正确性)

3. 安全与共享

4. 可以对数据进行重新分析,产生新的数据(数据分析,数据挖掘)

# 什么是数据库

存储的数据的"仓库"

# 数据库发展历程

1. 层次模型

2. 网状模型

3. 关系模型

以表格为单位,进行数据存储

表:一类实体对象的集合

行:实体,记录

列:属性,字段

关系:

1   ——   N      一对多

N   ——   1      多对一

N   ——   N      多对多

4. 对象模型(mongoDB)

# 关系型数据库

sql server, oracle, mysql, db2, access等

数据库管理系统(DataBase Manage System: DBMS)

# SQL(Structured Query Language): 结构化查询语言

SQL 语句:

四部分:

DDL(Data Define Language): 数据定义语言

DQL(Data Query Language): 数据查询语言

DML(Data Manage Language): 数据管理语言(添、删、改数据)

DCL(Data Control Language): 数据控制语言(设置权限、用户管理)

职位:DBA(database Administor)

DDL 数据定义语言

1. 创建数据库

语法:

create database 数据库名;

命名规则︰

1.第一个字符必须是下列字符之一:

a-z和A-Z,

下划线(_)、at符号(@)或者数字符号(#)。

2.后续字符可以是

at符号(@)、美元符号($)、数字符号或下划线,字母。

3.标识符不能是所用RDBMS的保留字。

不允许嵌入空格或其它特殊字符

使用数据库

use 数据库名

删除数据库

drop database 数据库名

2.创建表

create table表名(列名 列的数据类型(列的约束), ... );

数据类型有哪些

数字            大小

int         4字节

float       单浮点,4字节

double      双精度,8字节

decimal     总位数,小数点后的位数,17字节

注:总位数必须大于小数点后的位数

字符串

char : 固定字符,固定字符长度

varchar : 可变字符,随内容长度变化

text : 长文本(不用指定长度)

nchar

nvarchar

ntext

n: 只Unicode编码,可显示中文

日期

date

datetime

timestamp 时间戳 timestamp

...

列的规则:实现数据的完整性

完整性 = 可靠性 + 正确性

1. 实体完整性   主键约束,唯一约束,标识列

-- 保证行的有效性

主键约束:primary key,表中主键列不能重复且不为空

唯一约束:unique key,设置唯一约束不能重复,可为空

列标识:自增列没有重复值

2. 域完整性

-- 保证列的有效性

非空约束Not Null

默认约束:Default

check约束

3. 引用完整性

-- 引用数据的完整性

4. 外键

外键:外键是指从表的某列与主表的某列存在依附关系,此关系是设计这两张表时根据业务而建立的,但是此关系并没有强制性依赖。

外键约束:是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改

语法:

constraint foreign key(列名) references 主表(主表列名)

5. 自定义完整性

存储过程

删除表

drop table 表名

--有外键关系时不能删除

复制表

create table new select * from old  // 复制旧表的结构与数据,不复制约束

create table new select * from old where 1=0 // 复制旧表的结构,不复制数据与约束

修改表

-添加列

alert table 表名 add phone char(11) unique

-修改列

alert table 表名 change phone mobile char(11) unique

-删除列

alert table 表名 drop column mobile

DML: 数据操作语言(添加、修改、删除)

添加

语法:

insert into 表名(表中各列名) values (对应列的值)

// 字符给值要加单引号,自增列用null,默认值用default

// 表名后加括号,可选其中部分列赋值,不加括号需要给每个字段值

INSERT INTO student (stuNo, stuName, state,classId) VALUES ('007', 'zhangsan' , 1,1);

多行添加

insert into 表名(表中各列名) values (对应列的值),(对应列的值),(对应列的值)...;

INSERT INTO student (stuNo, stuName, state,classId) VALUES ('007', 'zhangsan' , 1,1),

('008', 'lisi' , 1,1),

('009', 'wangwu' , 1,1),

('010', 'zhaoliu' , 1,1)

;

更新:

update 表名 set 列名=值 where 条件(如:列名1=值 and 列名2=值);

删除:

delete from 表名 where 条件

truncate table 表名     //用于删除所有表数据

区别:

delete 可以有条件,删除数据后能恢复(有日志文件),效率低,自增列不会重置;

truncate 只能删除整个数据,删除后数据不能恢复,效率高,可以重置自增列;

DQL: 数据查询语言

# MYSQL 查询?

从表中查找需要的数据

# 查询原理

表中全部遍历,根据条件查询相应的数据,投影需要的数据。

语法:

查询全部

select * from 表名

查询部分字段

select 字段1,字段2,... from 表名

查询并重命名列

SELECT stuNo AS No,stuName AS NAME,... FROM 表名

查询表的部分操作方法

(1)concat(str1,str2...)  //拼接字符串

例:

SELECT CONCAT(stuName,' hahah') FROM student

(2)distinct //去重

SELECT DISTINCT classld, age FROM student

// 判断满足classId 和 age 都存在重复时进行去重操作

(3)limit  //返回指定的行数

limit 开始行数,返回的数量--开始的行数从0开始

例:

SELECT * FROM student LIMIT 0,2

(4)排序 order by

order by 列名 asc(升序,默认)/desc(降序)

例:

SELECT * FROM student ORDER BY age DESC

SELECT * FROM student ORDER BY age DESC id ASC

// 先按年龄降序排列,有相同值的再按id升序排列

(5)模糊查询 like

通配符:

%: 0个或多个    任意字符

_: 1个          任意字符

(6)范围 between 开始值 and 结束值

注:开始值小于或者等于结束值;但是如果大于了也不报错,只是没有数据

SELECT*FROM student WHERE age >=20 AND age <=17

SELECT* FROM student WHERE age BETWEEN 20 AND 17

(7)聚合函数,特点:返回单行单列,不统计为Null的值

求和 sum(列名)

求平均 avg()

求最大 max()

求最小 min()

数量 count(列名)

(8)group by 分组统一

例:

select classID from student group by classID

select count(1),classID from student group by classID

// 与count()合用可获取各分组的数量

执行顺序

from - where - select - group by - having - order by - limit

(9)join 连接

--内连接,显示两表共有的部分记录

select 查询的内容 from 表1 join 表2 on 连接条件

例:

SELECT student.*,class.className FROM student JOIN class ON student.classId = class.classId

--外连接

-left join

-right join

例:

select * from A left join B on A.aid = B.bid;

// 显示A表全部记录的情况下,将符合条件的B表中的记录连接到右边,如未在B表中找到记录则字段显示null;

select * from A right join B on A.aid = B.bid;

// 显示B表全部记录的情况下,将符合条件的A表中的记录连接到右边,如未在A表中找到记录则字段显示null;

条件查询时使用的符号,关系运算符: >,< ,>=,<=,= ,!= ,>,要求,只为单个值

条件范围:

查询id =1 和id = 4 的学生信息-- in/not // in可以是多个值

// in中的值,是或者关系

SELECT * FROM student WHERE id IN (1,4)

SELECT * FROM student WHERE id NOT IN(1,4)

子查询

·select中的子查询

例:

select *,(select className from class where classId = student.classId) as className from student

// 主查询一行记录,子查询需要遍历一遍,性能低,慎用

·from中的子查询(返回多行多列)

例:

SELECT * FROM

(SELECT * FROM student WHERE sex ='女’) AS temp

WHERE age = 17

·where中的子查询

select * from student where classId = (select classId from class where className = "web");

# 三大范式

1NF:保证原子性(行不重复,列不再分)

2NF:满足1NF,且所有非主键列,完全依赖主键列

3NF:满足2NF,且每列与主键有直接关系,没有间接关系

内容未详细整理,有误的地方欢迎大佬们指正。

MySQL基础知识及其基本相关操作相关推荐

  1. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  2. 快速学习mysql_快速学习MySQL基础知识

    这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...

  3. 2.MySQL 基础知识

    文章目录 MySQL 基础知识 知识点一 : MySQL命令行常用命令 知识点二 : 持久化 相关概念 知识点三 : 数据库 相关概念 知识点四 : DB 和 DBMS 关系图示 知识点五 : MyS ...

  4. 转发 微博 Qzone 微信 基础知识|存储相关的名词

    基础知识|存储相关的名词 静静呐呐呐 2020-09-23 16:10:04 存储 狭义的存储定义是指具体的某种设备,如以前软盘.CD以及硬盘等.广义上的存储是指存储设备,包括硬件存储系统.软件系统. ...

  5. MySQL工作中的实际用_总结工作中经常用到的mysql基础知识

    总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...

  6. mysql基础知识(一)

    mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language ...

  7. 【MySQL基础知识】查询、过滤数据关键字

    MySQL基础知识 一.检索数据 1. SELECT select是使用最广泛的检索数据的语句. 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: s ...

  8. PCIe基础知识及Xilinx相关IP核介绍

    补发以下以前学习PCIe总结的知识. PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054] ...

  9. linux增删查改语句,mysql基础知识之增删查改使用介绍

    mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...

最新文章

  1. 脑机接口技术重大突破!首次帮助瘫痪男子恢复运动和触觉
  2. dcn和dcnv2 torch
  3. MapReduce实现共同朋友问题
  4. Dubbo Admin —— Spring Cloud Alibaba 2021.1 + Nacos + Dubbo Admin参考配置
  5. 耶鲁计算机科学专业,Top3美国名校耶鲁大学录取 计算机科学专业
  6. Ubuntu软件安装
  7. EMC业务连续性和容灾服务
  8. 例2.3 日期差值 - 九度教程第6题(日期类问题)
  9. system.gc()和system.runFinalization()区别作用
  10. Matlab调用系统命令行利用Internet Download Manager(IDM)实现批量下载
  11. 【漏扫工具】AWVS12使用介绍
  12. 谷歌Android flash,取消支持Flash 谷歌TV升级安卓4.2.2
  13. 单片机(STM32)内部RC振荡器误差时间到底有多少
  14. Google Chrome OS
  15. root认证失败 tera term_(转载)linux ssh telnet TeraTerm终端中文显示乱码解决方法
  16. 模型--vgg16.npy下载
  17. NetBIOS编程获取本机MAC地址及一个小坑
  18. 【Python编写漏洞测试工具入门】
  19. C#中的Obsolete
  20. Python——计算器

热门文章

  1. Spark登录错误Unable to verify certificate和Certificate hostname verification failed
  2. 金笛邮件系统功能清单
  3. STM32使用9bit SPI驱动LCD
  4. STM8 IAP升级程序设计详解 - IAR环境
  5. html 实现3d效果代码,纯CSS实现3D的代码
  6. 通用流程化应用审批单设计思路(一)
  7. 钉钉审批流的调用(官方推荐审批流)
  8. Spring MCV基于注解的控制器
  9. 超好看的网站极简导航网址网站源码模板
  10. 不要钱 5个在线印章制作工具