MySQL无痛式入门
本帖最后由 15195775117 于 2022-7-17 01:21 编辑1、为什么用MySQL ?
目前数据库分2类:
[*]【关系型数据库】,属于传统类型,
[*]【非关系型数据库】(=NoSQL),属于新兴类型
MySQL是【关系型数据库】中最流行的,它的好处很多:
开源、免费、跨平台、多用户、多线程、易学、集群强于Oracle、支持多种语言的接口。
淘宝网用的数据库就是MySQL
番外:
NoSQL中缓存数据库Redis很流行,
它是常驻内存的数据库,可提高I/O吞吐速度,
适合数据量少、查询频率高的业务,
并不适合海量数据存储。
本帖最后由 15195775117 于 2022-7-16 23:20 编辑
2、MySQL长啥样?
陌生的老熟人
其实,MySQL就是由一堆表格构成的,它看起来就是表格的管理仓库,
如果你会使用Excel,那么MySQL无非是用程序处理多张表格。
灰常简单的结构:库->表->字段+记录
MySQL软件下可以新建多个【数据库】,
每个【数据库】里又新建多个表格,
每个表格需要你定义【字段】,
何谓【字段】?
如下表,名次、姓名、分数就是字段,也就是表格列的头而已!
我们按照字段的顺序,将填入,这叫新增一条【记录】
再将填入,这又是新增一条【记录】。
所以,【字段】是列,【记录】是行。
名次姓名 分数
1张三 92
2 李四 88
特殊的列:主键
我们平时使用Excel表时,第一列是有特殊用途的,经常用来表示这一行的意义,
但是,【数据库表】的第一列一般没有特殊含义,你可以对它填入序号,来表征特殊意义,
其实,列的区分看【字段】,行的区分看【主键】,
【主键】其实就是表中的某一列,只是这一列需要这列的元素不能重复!
例如,第一列是序号的话,它不会重复,这列就可以选定为【主键】,
姓名和分数会重复,所以名称列不可以选为【主键】
图形化界面更像Excel
各类数据库都是有【图形化管理工具】的,
MySQL图形管理工具包括MySQL-Workbench(默认安装),SQLyog,Navicat...
我们可以通过【图形化管理工具】,用键鼠操作,对数据库表进行【增删改查】,这时的感觉就很像Excel了!
数据库如何保存图片与二进制文件?
像图片、视频、.mat、.tiff、.nc、.grib这些文件,是不入库的,
其文件存于他处,数据库中只是保存该文件的路径而已!
所以,依旧是彻头彻尾的表格耳!
3、登录MySQL
安装MySQL中,我设置了root密码:AAAAAAAA
新建了用户woodman,密码:BBBBBBBB
在终端登录mysql:
以root登录 以用户woodman登录
本地连接 mysql –uroot -pAAAAAAAA mysql –uwoodman -pBBBBBBBB
远程连接 mysql –uroot –h10.10.1.32 –pAAAAAAAA mysql –uwoodman –h10.10.1.32 –pBBBBBBBB
以上,-u后面是用户名,-p后面是密码,-h后面是IP
报错:
ERROR 1130 (HY000): Host 'EX6R7TOJ1KIE7Q2' is not allowed to connect to this MySQL server
网上开启远程的教程:
https://blog.csdn.net/HJULKK/article/details/52563044
退出MySQL:
mysql>quit;
4、数据库和表的操作
现在,使用SQL语言来操作MySQL
SQL语法特点
[*]不区分大小写,
[*]每句以分号结尾,
[*]注释是双短杠:--drop table table0;
[*]一行写不下,直接换行不妨事,不需要续行符。
常用语句
数据库是MySQL最大单位,进入MySQL后,先查看已存在的数据库:
show databases;
创建自己的数据库mydb:create database mydb;
(删除数据库:drop database mydb;)
然后进入这个数据库:use mydb;
查看数据库中所有表:show tables;
新建表:create table mytable;
(删除表:drop table mytable;)
查看表字段:describe table0;或desc table0;
查看表中数据:select * from mytable;
改表名:alter table table0 rename table1;
5、数据操作
无需赘言的基本操作
对于表内的数据,SQL语句有着完全操纵的能力,可以:
增加字段,删除字段,移动字段位置,修改字段属性,插入数据,修改数据、删除数据......
这些操作,我就不写SQL语句了,比较繁琐,
实际业务中,都是通过接口语法来实现的,比如,
Python有MySQL接口包,Java和C#肯定也有各自的接口包,
不会用SQL语言来直接操作,
以下列出一些例子,我们只需要了解下MySQL的处理逻辑:
又一个强大的where
查询:
select direction from table0 where color not in('red','pink','green');
按数字范围查询:
select monster,id from table0 where id not between 2 and 4;
不以b开头:
select monster,id from table0 where not monster like 'B%';
第2个字母是i:
select monster,id from table0 where monster like '_i%';
查询结果倒序显示(默认正序order by id asc):
select monster,id from table0 where monster like '_i%' order by id desc;
以上select的也适用于delete,删除记录:
delete from table0 where monster='bird';
嵌套使用:
select * from table0 where value not in (select value from table1);
在这里,我们发现,强大的where可以跨字段进行选择,
它的功能跟numpy包的np.where和IDL的where函数一样强大实用!
6、批处理和函数
批处理
将sql语句逐行写入文本,后缀改为sql,执行之:
mysql> source D:\bat.sql
函数
SQL有【存储过程】和【函数】的概念,这里的【过程】和【函数】跟IDL的一样:
【过程】没有返回值,【函数】有。
新建过程和函数:create procedure,create function
具体怎么写也不用关心,这都是数据库接口来实现。
7、好消息:复杂的外键被淘汰了
为什么不要使用【外键】?
[*]在大数量的情况下,使用外键约束会导致很差的性能。一般互联网应用都不要去想外键这种东西了,连表连接查询最好都不要使用
[*]大数据量时进行表的水平切分,像外键约束、触发器、存储过程这些都是禁区
[*]数据完整性是业务的需要,因此得由业务层的应用程序来控制
[*]外键会导致表结构非常混乱,几乎是动都不能去动,一层套一层的外键约束,在表很多的情况下很可能会导致循环约束
谢谢分享!!!!!!!!!!! 赞,增删查改,可以应付百分之九十的需求
页:
[1]