初识数据库(Mysql)
一、数据库管理软件的由来
1、程序所有的组件就不可能运行在一台机器上
因为这台程序一旦挂掉,这个软件就崩掉了。
2、数据安全问题
由于第一个问题的存在,我们把程序的各个组件分布不同机器上,但数据还是需要共享的,共享就意味着竞争,会发生数据不安全,需要加锁处理。
3、并发
由于问题2的存在,我们需要写一个socket服务器来管理这台机器上的数据,然后再写一个socket客户端,完成功能如下:
-
远程连接(支持并发)
-
打开文件
-
读写(加锁)
-
关闭文件
总结
有人专门写了将此类程序写成了一个软件,这就是mysql等数据管理软件的由来
二、Mysql安装与基本管理
mysql是关系型数据库,是基于socket编写的C/S架构的软件。
数据库管理软件分类
分两大类: 关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用 非关系型:mongodb,redis,memcache 可以简单的理解为: 关系型数据库需要有表结构 非关系型数据库是key-value存储的,没有表结构
mysql密码设置与破解
1.官网下载 mysql安装
2.启动mysql
vim ~/.zshrc PATH=/usr/local/mysql/bin:$PATH export PATH
暴力破解密码
1.停止mysql服务
2.通过命令打开
sudo mysqld_safe __skip-grant-tables (一会要杀死)
3.这样不用密码也能登陆进来,然后设置密码
update mysql.user set authentication_string=password('') where user='root' and host=‘localhost’;
flush privileges; 刷新权限表
统一字符编码
1.切换到管路员身份
sudo su
2.先设置密码,设置了密码才让看字符编码
sh-3.2# mysqladmin -uroot -p password ‘112233'
3.进入mysql按 \s
4.在/etc目录下创建my.cnf文件
vim /etc/my.cnf
5.复制以下配置到文件里
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
6.重启mysql在打开看,编码已经变了
三、初识mysql语句
sql语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,可以分为3类
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
简单的sql语句
操作文件夹(库)
# 增 create database db1 charset utf8; (就是在本地创建了一个文件夹) # 查 show create database db1; 查看刚刚建立的数据库 show databases; 查看所有的数据库 # 改 alter database db1 charset gbk; #删 drop database db1;
操作文件(表)
# 切换文件夹:use db1 ; # 查看当前所在文件夹:select database(); # 增 create table t1(id int, name char); # t1.frm是表结构,t1.ibd是表里面存放的数据 # 查 show create table t1; # 查看单个 show tables; # 查看所有 desc t1; # 显示更友好 # 改 alter table t1 modify name char(6); alter table t1 change name NAME char(7); #删 drop table t1 ;
# 增 insert t1(id,name) values(1,'edward1'),(2,'edward2'),(3,'edward3') insert t1(named) values('edward1',1),('edward2',2),('edward3',3) insert t1 values(1,'edward1'),(2,'edward2'),(3,'edward3') # 不写就按照默认的顺序 # 查 select id ,name from db1.t1; # 没在db1这个库下,这样在任何库下都能查看 select id,name from t1 ; # 在db1这个库下 select * from db1.t1; # 查看所有,不推荐用这个,效率低 # 改 update db1.t1 set name='NB'; # 改所有的 update db1.t1 set name='ALEX' where id=2; # 删 delete from db1.t1; # 删除所有的 delete from db1.t1 where id=2;