当前位置: 首页 > news >正文

MYSQL学习笔记

登录:

MYSQL是个服务,服务往往都会监听一个端口

连接到MySQL服务(MySQL数据库)的指令:mysql -h 主机IP -P 端口 -u 用户名 -p密码

1.-p密码不要有空格

2.如果-p后面没有写密码,回车后会要求输入密码

3.如果没有写-h主机,默认就是本机

4.如果没有写-P端口,默认就是3306 #在实际的工作中往往要改,增加安全度

登录之前要保证MySql服务是运行的状态 : net start mysql服务名

结束服务: net stop mysql服务名 

Mysql的三层结构: 数据库管理系统 (DBMS)- 数据库- 数据库管理对象(表\视图\触发器等等)

客户端: 命令行\java\SQLyog等等

终端通过端口连接数据库

对于Mysql数据库, 表的本质仍然是文件

所有的内容最终落在文件中才能持久化

所谓安装Mysql数据库,就是在主机上安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库,DBMS(database massage system)        

一个数据库可以创建多个表,以保存数据(信息)

数据库中数据的存储方式主要是表

表的一行称为一条记录

在java程序中往往一个记录使用一个对象来表示

SQL语句分类(数据库的创建备份恢复):

31c9dd09adb3458b9cf77a36d5449059.png

在数据库中建立表时,如果不指定表的校对规则就是默认为数据库的校对规则

创建数据库时,如果不指定校对规则,默认是 utf8_general_ci(不区分大小写)

utf8_bin是区分大小写的

创建数据库时,可以指定字符集和校对规则,如果不指定字符集,则默认是utf8

创建数据库的指令: CREATE DATABASE [IF NOT EXISTS] db_name SHARACTER SET charset_name COLLATE collation_name

如果不加[IF NOT EXISTS] 则如果这个名字的数据库已经存在的话会报错

#一条查询语句:

SELECT * FROM t1 WHERE NAME = 'tom'

select 表示查询        * 表示所有字段        from 表示从哪个表        where表示从哪个字段        name='tom'表示查询名字是tom

在创建数据库\表的时候,为了规避关键字可以使用反引号 例如: CREATE DATABASE `CREATE`

显示数据库: SHOW DATABASES(带s) 

显示数据库创建语句: SHOW CREATE DATABASE db_name

数据库删除语句[一定要慎用]: DROP DATABASE [IF EXISTS] db_name

413b60441c864ed286b15201042e5e71.png

d44e885cfc9445c4ade8ffe40a80668e.png

mysqldump -u root -p -B db01 db02 > d:\\bak.sql

16eaf9706f8246fba5fb213b2a49b93c.png

表格的创建:

86d44411976d4889983e1f5a71a4b4d0.png

命令行的格式示例:

34e839b5dc2d4a4da33c14e5d82d582a.png

常用数据类型(在mysql里面数据类型又叫做列类型):a1bd51bedf2c42508326f161ec8afdb2.png

ef45dc3cb8104f06b822ef8a5ab3cbc9.png

bit:

01bdb32d4fa44ef09501e2c7766fd860.png

5735db0041d3439d888d6f6fc3b93b1d.png

小数:

ee82ee941a0e4853863c8ad5b39cabf6.png

3f989d6b8392412eaab4da797bef2b97.png

字符:

不同的编码方式存储一个字符的大小不同, utf8编码是三个字节, gbk编码是两个字节表示一个字符

b5b1e1d67c8c464db16a201e82b58599.png

eb930ed4643e4c7da0cbea1b02f88c83.png

char(4) varchar(4)中的4表示的是字符数量而不是字节数

6e32dff95e5b4b1ea9c2cacf59e23184.png

ed6ca2454436436d999236ae5524e511.png

c99245441b864bbb87dde888b4300438.png

a03467708b124167918967a5bd64a29b.png

date:

9f87884116ab4c0ca96aadd5ebf24b8f.png

NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

8b5c84b1a6cb4259bb152406ee8ced40.png

修改表:

97781e5ed21d47e591f4a182c39601f0.png

修改列的属性:

使用modify:

使用change:

第三行是可选,用来指示修改列在表中的位置

修改列名的指令:

ALTER TABLE employees
CHANGE COLUMN emp_id employee_id INT NOT NULL

即使没有修改列其他的属性,也要写上

e31ec70273604e1eb2fbd67619a72713.png

crud程序员: 只会增删查改的程序员

insert:

a3e60b723e6c4f2f965cdc69b5dcec17.png

72d2bf80633a4958acc9e49f227bbe2b.png

在Java和MySQL中,字符串都会尝试转换为整型(如果可以的话) 例如 '30'在MySQL底层就能转换成整型 即可以向int 类型的列添加 '30' ,但是 'Abc'不行

update:

 5c09b60c4d024593b548a920cf4d287d.png

如果where语句不写则是对某列的所有数据进行修改 

acabdfac45bf45d1a0cf8409f13ead6c.png

delete:

941563ae4f7645e0a802aeadea33a2e9.png

不加where语句会删除表中所有记录

dd554c96cb934c6dbcebb3acd2d70c11.png

select:

f136ced699b344899c89b5902b1364ad.png

c6a08a7292e048abac44c72212466ac8.png

7fe15f78087d4dd097064c413d57a497.png

`name` LIKE '韩%' 是一种模糊查询 表示名字为韩开头的都可以,  %表示零到多

BETWTTN        AND是个闭区间

group by:

597b4198534f45b9bffcbb112b5aa6ba.png

order by:

8fa0504e1cc940c1b219022800a167ba.png

函数:

函数不能用在where上, where是对结果起过滤作用

c11cc332ed934edd80c29b0440591c03.png

count(*)和count(列)的区别:
count(*)返回满足条件的记录的行数

count(列)返回满足条件的某列有多少个,但是会排除为null的情况

347eed3733ed40f3bed22354e864c45b.png

sum函数仅对数值起作用,否则会报错

对多列求和","逗号不能少

240ab24fba46421c8803c5720ba32a20.png

也是仅对数值起作用

95e7efa3bdc244b88186d2f3b438a894.png

字符串相关函数:

200b38f8b4184e3384a0a5dc8efe9b98.png

DUAL为系统的亚元表,当没有表可用时,可以用DUAL

数学相关函数:

78ba5398ee5e42819399950e643f3c24.png

在RAND()中添加一个数字时将产生一个固定的随机数, 例如 : RAND(3) 不添加数字, 只是RAND()时,每次执行都会产生不同的随机数

日期相关函数:

4ba92e2fd53649f19b89bbb2442ec95f.png

75e0f19f79174b9ca612957585051d60.png

21136a3963e54cfc847423ce0b411ac7.png

8812751e4318495f9e0ccd9da049c881.png

加密和系统函数:

15e70a2c78e84da0b571d09e7010d937.png

PASSWORD(str) 和 MD5(str)是两个不同算法的加密函数,前者为MySQL用户密码默认的加密函数

流程控制函数:

89fb13b2aac747c89dc59fa2fafbc796.png

MySQL表查询(加强):

25faca6b8e1b4f8c99b7a89ae94650a2.png

在MySQL中日期类型可以直接比较

判断某一列的值是否为null是要用 is 不要用等号

查询表结构的语句 : DESC 表名

3999fcc467474a17bf488a181bbd48bc.png

分页查询:

0bbe70be8dc544c0ab9d32399061ba39.png

feb77df318ae4e8dae53fe3f35d4465c.png

bb89be4c16994dc5b81e79079dd425ec.png

77b0b2b05d2644f1b8eb13031a55616d.png

f85f73dc5f904a72a39a7d5ff0587308.png

在默认情况下,当查询两个表时,会将第一个表中的一行和另一个表中的每一行组合,返回结果,包含两张表的所有列,一个返回的记录数是两张表的行数乘积,这样多表查询默认处理方式返回的结果, 称为笛卡尔积`        

解决这个多表的关键就是写出正确的过滤条件 WHERE

a6b49507011c471fb9fe83b474369d92.png

8fcb0630312340dda99e157fb3176157.png

5c6a6c6dd7ff47a093f9d72dfe4b39dc.png

子查询:

4731d973f28b45afb406afd32049143f.png

MySQL中判断是否相等是一个等号'=', 不等有两种 : !=   <>表示

ee73376d24114895a35fc0fba3d78ee1.png

把子查询的结果当成一张临时表可以解决很多很多复杂的查询

e88e0db013c242c2aaa58d9b3dbf3ba5.png

bbcd8a3ec40f4a4caa36b800f912d90b.png

多列子查询的语法:

6f5729ebd6534e718e9ecdf4374f93a2.png

合并查询:

表名.* 表示把该表的所有的列都表示出来

915771089be6410d831cc0049475bb51.png

ab245d8e430c42a4af4da541e6ee2bbc.png

复制(insert ,表):

f5dcf8bb3be745009a78cc1a63498cae.png

MySQL表外连接:

6124c20835004283b3ecc0c849cc0217.png

435c6461e3e84572880d02713ee4c412.png

约束:

27badb45ad6546edb6a135435298b4c0.png

c6c8acb134e14b3295c9fa87d473c54b.png

902bd722d97847a7a6b136ef29c18dad.png

自增长:

索引:

MySQL事务:

事务隔离级别:

MySQL表类型和存储引擎:

视图:

MySQL用户创建与授权:

不同的数据库用户登录到DBMS后根据相应的权限可以操作的数据库和数据对象(表, 视图,触发器)是不同的

一个数 + null = null;

last_day(日期) 可以返回该日期所在月份的最后一天


http://www.mrgr.cn/news/64561.html

相关文章:

  • SpringBoot在线教育系统:安全与维护
  • 23.智能停车计费系统(基于springboot和vue的Java项目)
  • 大数据与智能算法助力金融市场分析:正大的技术创新探索
  • 【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
  • 基于Spring Boot的志愿服务管理系统设计与实现,LW+源码+讲解
  • 油饼,舌尖上的思乡情
  • 在Docker中安装和配置Nginx
  • 【算法-选择排序】挑挑拣拣,排出顺序——选择排序入门
  • 教育数据知识图谱创建
  • 适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇
  • 【微服务】Spring AI 使用详解
  • 中国书画、
  • AI写诗:自动版大唐宫体诗
  • distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK
  • Halcon区域分割之分水岭分割法
  • APP的设置页面,应该怎样尽可能减少用户的输入操作呢
  • Python 一维列表基础语法
  • HashMap的实现原理
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第二题
  • 【热门主题】000024 探索人工智能学习框架:开启智能未来之门
  • JDBC学习笔记
  • Maven随笔
  • C#数组基础:声明、初始化与访问指南
  • InsuranceclaimsController
  • 【k8s】-运维技巧-1
  • ngxin系列--(二)--stream模块的加载、accept、read/write