zoukankan      html  css  js  c++  java
  • 数据库基础知识:介绍

    数据库

    一.数据库是什么?

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

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

    之前使用的是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目录路径追加到变值值中,用 ; 分割】
    

    ![](C:UsersDELLPicturesCamera RollQQ图片20191210110136.png)

    ![](C:UsersDELLPicturesCamera RollQQ图片20191210110203.png)

    ![](C:UsersDELLPicturesCamera RollQQ图片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;
    
  • 相关阅读:
    整数数组中最大子数组的和有溢出如何处理
    返回一个整数数组(环形数组)中最大子数组的和
    cnblogs用户体验评价
    SCRUM报告(一)
    Spring冲刺计划会议
    Spring冲刺计划会议
    团队合作项目----冲刺目标确定
    结队开发
    组队开发----卖书问题
    团队开发---NABC分析
  • 原文地址:https://www.cnblogs.com/WQ577098649/p/11752674.html
Copyright © 2011-2022 走看看