数据库:认识数据库、安装数据库、如何建库(database)、表(table)、数据(data)

ⅰ亾dé卋堺 提交于 2019-12-14 07:52:10

数据库

一.数据库是什么?

字面意思:存数据的仓库。

二. 为啥使用数据库?(***)

之前使用的是Excel来进行管理数据。

Excel的缺点:

1.管理不了大量的数据(10w量级的数据)

2.并发操作同一个数据表格。

3.数据支持高级的操作,比如:分组,连表等

三.数据库的分类。

关系型数据库

对买一列的数据类型会有约束,id(整型),name(字符串类型)

MYSQL,maridb---》用的比较多,因为是免费的

SqServer,-----》 微软,大学, 政府  (汽车之家)

Oracle,-----》甲骨文,收费。一般金融公司用得多。

sqlite,-----》自己理解,随便玩玩。

等

非关系型数据库

memcache -----》 十年前的产品(新浪微博)

mongodb-----》文档型数据库

redis  -----》 微博

redis分布式缓存,微博。以key,values的形式存储。

最大区别:

关系型数据库,把数据存在硬盘中。

非关系型数据库,把数据存在内存中。mongodb,redis解决了内存断电消失的问题。

四.mysql的架构。

类似于 socket 的客户端和服务端。

流程:

1.mysql服务端先启动,监听在某一个特定的端口(3306)

2.MySQL客户端连接数据库服务端

3.MySQL客户端就可以发送相关的操作命令,去操作服务端存储数据。

五.mysql的安装(windows)

windows安装:

1.先去官网

先去官网(https://dev.mysq.com/downloads/mysql/)

2、解压

如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64

3、添加环境变量

【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MiYvOkpF-1576057471033)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110136.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KK93zxOB-1576057471034)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110203.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdR83fmX-1576057471035)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110214.png)]

4、初始化

mysqld --initialize-insecure

5、启动MySQL服务

mysqld          :    # 启动MySQL服务

6、启动MySQL客户端并连接MySQL服务

mysql -u root -p      :     # 连接MySQL服务器

常用的参数:(************************************)

-u :user  用户名

-p:password 密码

-h:host 主机名或ip   mysql  -u root -p -h 192.168.1.10

-P:port 默认是3306   mysql -u root -p -h 192.168.1.10  -P 3307

登录,设置密码:

初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
[在cmd中执行]# mysqladmin -uroot password "123"        设置初始密码 由于原密码为空,因此-p可以不用(无密码直接进入 ---》 不需要“-p 密码”)
[在cmd中执行]# mysqladmin -uroot -p"123" password "456"        修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码

命令格式:
[在cmd中执行]# mysql -h172.31.0.2 -uroot -p456
[在cmd中执行]# mysql -uroot -p
[在cmd中执行]# mysql                    以root用户登录本机,密码为空

忘记密码:

#1 关闭mysqld的服务
		#2 在cmd中执行:mysqld --skip-grant-tables  ===》 不用密码就可以登录,绕过密码验证的权限
		#3 在cmd中执行:mysql   ===》 mysql -uroot -p 
		#4 执行如下sql指令:
			update mysql.user set authentication_string=password('') where user = 'root';
			flush privileges; (一定要操作)
		#5 tskill mysqld #或taskkill -f /PID 7832
		#6 重新启动mysql服务

6.退出数据库客户端:

- exit;
- quit;

注意: SQL语句末尾必须加 “;” 号。
    
- 查看操作系统中是否已经启动mysqld 服务端
- tasklist | findstr "mysqld"

- 杀死mysqld进程
  - taskkill /F /PID pid号

- *****做服务端操作时,必须先以管理员身份打开

六.初始mysql

操作数据库

#### 增:

create + database + 数据库名称 +  类似于socket +分号  ;

命名规范:

1. 具有描述意义
2. 只能由数字/字母/下划线组成,不能以数字开头
3. 不能用python关键字

#### 删:

drop database 数据库名称 + 分号 ;

#### 改:

删除在添加

如果数据库中有数据的话,直接drop会导致数据库中的数据丢失

在线上环境,不能够直接删除数据,在删除之前

#### 查:

show databases + 分号;

对 :数据库(database)

- 库的操作 ---> 类似于文件夹
-:
语法: create database 库名;
	- create database db1;

- 查
语法: show databases;  # 查看所有库
	show create database db1;  # 查看db1库中的信息

- 改
语法: alter database 库名 charset="字符编码类型";
     - alter database db1 charset="utf8";

- 删
语法: drop database db1;


   - 表的操作 ---> 类似于文件
      - 操作表前,需要先切换到指定库
          语法: use 库名;
             - use db1;

查看当前所在的库: select database()

对:表(table)的操作

 - 增
varchar与char 都是字符串类型;
varchar(20)
 语法: create table 表名(字段名 字段类型);
create table user_info(name varchar(20), age int);


- 查
show tables;  # 查看当前库中所有的表
desc user_info;  # 查看表结构


- 改
语法: alter table 表名 modify name varchar(28);
- alter table user_info modify name varchar(28);


- 删
语法: drop table 表名;
- create table test(id int);
- drop table test;


对:data数据的操作

- 记录 的操作 ---> 类似于文件中的一行行数据
-:
语法: insert into 表名 values('字段类型的数据1', 字段类型的数据1);
# 插入一条:
- insert into user_info values('tank', 17);

# 插入多条:
- insert into user_info values('jason', 71), ('sean', 78);

- 查:
*: 指的是所有
语法: select * from 表名;  # 查看表中所有的数据
    - select * from user_info;

# 查看name 字段为 tank 的记录
    - select * from 表名 where 条件;  # 条件成立则查看成功!
    - select * from user_info where name="tank";

# 查看name 字段为 tank 的age字段
    - select age from user_info where name="tank";

# 查看所有的名字:
    - select name from user_info;

- 改
语法: update 表名 set 字段名=字段值 where 条件判断;  # 若条件成立,则修改成功!

# 修改age为17的记录中name属性为 handsome
    - update user_info set name='handsome' where age=17;

# 修改age>16的记录 中name属性为 d_sb
    - update user_info set name='d_sb' where age>16;

- 删

语法: delete from 表名;
# 清空表记录,不提交,可恢复。
     - delete from user_info;

语法: truncate table 表名;
# 删除,不可恢复
     - truncate table user_info;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!