目录
数据库
什么是数据库?
字面意思:存数据的仓库
为什么使用数据库?(*************)
之前都是使用Excel来进行管理数据,
Excel的缺点:
- 管理不了大量的数据(10w量级的数据)
- 并发操作同一个数据表格
- 数据支持高级的操作,比如:分组,连表等
数据库的分类:(*********)
关系型数据库
对每一列的数据类型会有约束,id(整型),name(字符串)
maridb,MySQL ——》用的比较多,免费
SqlServer ——》微软,大学,政府(汽车之家)
Oracle ——》甲骨文,收费,金融公司,阿里
sqlite ——》小型的文件数据库,自己玩玩
等
非关系型数据库
memcache ——》十年前的产品(新浪博客)
mongodb ——》文档型数据库
redis ——》微博
使用类似字典的格式 {"name":'zekai'}
最大区别:
关系型数据库,把数据存在硬盘中
非关系型数据库,把数据存在内存中
mysql的架构
类似于 socket 的客户端和服务端
流程:
- mysql服务端先启动,监听在某一个特定的端口(3306)
- mysql客户端连接服务端
- mysql客户端就可以发送相关的操作命令,去操作服务端 的数据
mysql的安装(windows)
windows安装:
先去官网(https://dev.mysql.com/downloads/mysql/)
1、下载:
MySQL Community Server 5.7.28
http://dev.mysql.com/downloads/mysql/
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件移动指定目录
3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
4、初始化
mysqld --initialize-insecure 创建data目录,初始化的数据
5、启动MySQL服务
mysqld 启动MySQL服务
6、启动MySQL客户端并连接MySQL服务
mysql -u root -p 连接MySQL服务器
mysql服务端不会阻塞住
制作windows的服务:
"D:mysql-5.7.28\bin\mysqld" --install
修改mysql的密码:
C:\Windows\system32>mysqladmin -uroot -p "原密码" password "新密码"
出现的错误:
C:\Windows\system32>mysql -uroot -p Enter password: ERROR 1045 (28000):Access denied for user 'root'@'localhost'(using password:NO)
如果出现上述错误,代表密码输入错误
常用参数:(*********************)
-u : user 用户名 -p : password 密码 -h : host 主机名或ip # mysql -uroot -p -h 192.168.0.1 -P : port 默认端口是3306 # mysql -uroot -p -h 192.168.0.1 -P 3307
忘记密码,操作方式:
- 关闭mysqld的服务
- 在cmd中执行:mysqld --skip-grant-tables ===》不用密码就能登录,绕过密码验证额权限
- 在cmd中执行:mysql ===》mysql -uroot -p
- 执行如下sql指令:
update mysql.user set authentication_string=password('') where user='root'; flush parivileges;
- tskill mysqld 或taskkill -f/PID 7832
- 重新启动mysql服务
初始mysql
SQL指令
操作数据库(*******************************************************)
增
create database 数据库名称 charset utf8; 命名规范: 可以用字母、数字、下划线、@、#、$ 区分大小写 唯一性 不能使用关键字 如 create select 不能单独使用数字 最长128位 show create database 数据库名
删
drop database 数据库名称;
改
删除再添加
如果数据库中有数据的话,直接drop会导致数据库中的数据丢失
在线上环境,不能够直接删除数据,在删除之前,需要进行备份
查
show databases;
使用数据库
user 数据库名;
操作数据表
增
create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] );
删
DROP TALE 表名
改
1.修改表名 alter table 表名 rename 新表名; 2.增加字段 alter table 表名 add 字段名 数据类型 [完整性约束条件...], add 字段名 数据类型 [完整性约束条件...]; alter table 表名 add 字段名 数据类型 [完整性约束条件...] first; alter table表名 add 字段名 数据类型 [完整性约束条件...] after 字段名; 3.删除字段 alter table 表名 drop 字段名; 4.修改字段 alter table 表名 modify 字段名 数据类型 [完整性约束条件...]; alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件...]; alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件...];
查
describe 表名; #查看表结构,可简写为desc 表名
show create table 表名\G; # 查看表详细结构
复制表
create table new_service select * from service # 复制表结构+记录
create table t4 like employees; # 复制表结构
操作记录
插入数据insert
1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3…值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); 3. 插入多条记录 语法: INSERT INTO 表名 VALUES (值1,值2,值3…值n), (值1,值2,值3…值n), (值1,值2,值3…值n); 4. 插入查询结果 语法: INSERT INTO 表名(字段1,字段2,字段3…字段n) SELECT (字段1,字段2,字段3…字段n) FROM 表2 WHERE …;
更新数据update
语法: UPDATE 表名 SET 字段1=值1, 字段2=值2, WHERE CONDITION; 示例: UPDATE mysql.user SET password=password(‘123’) where user=’root’ and host=’localhost’;
删除数据delete
语法: DELETE FROM 表名 WHERE CONITION; 示例: DELETE FROM mysql.user WHERE password=’’; 练习: 更新MySQL root用户密码为mysql123 删除除从本地登录的root用户以外的所有用户