zoukankan      html  css  js  c++  java
  • 44、数据库

    一数据库概述

    1.1、什么是数据库

      即存放数据的仓库,只不过这个仓库是共享的

      为了保证安全性,独立性,以及可扩展性,因此需要将文件分开保存,在一台计算机上分成不同的文件夹存放

    1.2、什么是数据库管理系统

      MYSQL,Oracle,sqlite,access等等,都是一种用来管理数据库的系统软件。

      由于MySQL开放源代码,并且数据库是免费的,因此这个软件也是最常用的。

      Oracle数据库功能强大,并且安全性高,但需要收费,属于甲骨文的产品

      SQqite是微软公司的产品,应用于中大型企业

    1.3、数据库服务器的内部关系

      数据库服务器(计算机,对内存要求比较高)====》数据库系统软件(MySQL,一个软件)====》数据库(文件夹)====》表(文件)====》数据(代码,信息)

    1.4、数据库的特点

      1.数据结构化

      2.数据共享,低冗余,易扩充

      3.数据独立性高

      4.数据由DBMS(数据管理系统)统一管理

        1.数据的安全性保护

        2.数据的完整性检查

        3.并发控制

        4.数据库恢复

    1.5、数据库管理系统的分类

      数据管理系统分为两种:关系型和非关系型

      关系型(有表结构):MySQL,SQLLITE,Oracle

      非关系型(没有表结构,使用key-value储存的):MongoDB,Redis

    二、MySQL

    2.1、MySQL的客户端与服务端

      任何基于网络通信的应用程序底层用的都是socket

      服务端(mysqld.exe):

        基于socket通信

        收发信息

        SQL语句

      客户端(mysql.exe):

        基于socket通信

        收发信息

        SQL语句

      在前期配置MySQL的时候尽量使用管理员权限,普通用户终端有一些命令是无法执行的

      MySQL不仅支持自己使用的客户端,还支持其他语言来充当客户端

      这需要服务器不仅可以兼容所有的语言,并且要求使用相同的SQL语句

    2.2、启动

      1.切换到MySQL的bin目录下,输入mysql

      2.保留原来的cmd窗口重新打开一个

      MySQL第一次用管理员登录时,是没有密码的,直接回车即可

    2.3、常用软件默认端口号

      客户端连接服务端完整的指令:mysql -h 127.0.0.1 -p 3306 -uroot -p

        MySQL  3306
        redis  6379
        mongodb 27017
        django  8000
        flask   5000

    2.4、初识SQL语句

      1.MySQL中SQL语句是以分号;作为结束的标志

      2.基本指令:show databases(查看所有的数据库)

      3.连接服务端的命令可以简写:mysql -uroot -p

      4.当输入的命令不对时就可以输入c取消错误命令:c

      5.客户端退出:quit或者exit

      6.查看当前进程:tasklist

        查看当前具体进程:tasklist |findstr mysqld

      7.结束当前进程:taskkill/F/pid pid号

      8.当你在连接服务端时,只输入mysql也能连接,这说明你使用的是游客模式,而不是管理员身份

    2.5、环境变量和系统服务

      环境变量:将mysql的启动路径加入环境变量中

      系统服务(开机自启动):

        查看当前进程:services.msc

        制成系统服务:mysqld --install

        移除系统服务:mysqld --remove

    2.6、设置密码

      mysqladmin -uroot -p原密码 password 新密码

      直接在终端输入就行,不需要进入客户端

    2.7、忘记密码的情况下重设密码

      1.跳过登录验证功能:mysql --skip-grant-tables

        8.0版本后使用:mysqld --console --skip-grant-tables --shared-memory

      2.直接使用无密码登录:mysql -uroop -p  直接回车

      3.修改当前密码:update mysql.user set password=password(123)where user=‘root’ and host=‘localhost’;

      4.将密码更新到硬盘:flush privileges;

      5.关闭当前服务端,以正常授权的方式进入

    三、统一编码

    3.1、配置文件

      程序在执行前会先加载配置文件,之后才会真正的启动

      以ini结尾的文件一般是配置文件:my-default.ini

    3.2、配置文件设置编码以及登录信息

      为防止输入乱码,将输入的格式先设定好,并且可以将登录的账号密码放置配置文件内,可以直接登录,保存后重启服务才能生效

    [mysqld]    #一旦服务器启动,立刻执行下面的配置
    character-set-server=utf8           #将输入的格式设置成utf-8
    collation-server=utf8_general_ci
    [client]     #其他的客户端启动,执行下面的配置
    default-character-set=utf8
    [mysql]  # 一旦客户端启动,立刻执行下面的配置
    user="root"             #将账号密码放入客户端的配置文件中,可以直接登录
    password=123456
    default-character-set=utf8

    四、基本SQL语句

    4.1、针对库的增删改查(文件夹)

      1.增:create database db1;

         create database db2 charset=‘gbk’;(而外指定库的格式)

      2.查:show database;

         show database db1;

      3.改:alter database db2 charset=‘utf-8’;(更改库的格式)

      4.删:drop database db2

    4.2、针对表的增删改查(文件)

      在操作表的前提下,需要现在到库

      查看当前库的名字:select database();

      切换到库:use db1

      1.增:create table t1(id int,name char(4));

         create table db2.t1(id int);(使用绝对路径进行增加)

      2.查:show tables;

         show create table t1;

         desc t1;

      3.改:alter table t1 modify name char(16);

      4.删:drop table t1;

     4.3、针对数据的增删改查

      需要现有库,再有表,最后才能有数据

      1.增:insert into t1 values(1,‘Jason’);

         insert into t1 values(1,‘Jason’),(2,‘egon’),(3,‘tank’);(一次性可以增加多行数据,前面为每次增加时的序号)

      2.查:select * from t1;(当数据量特别大时,不建议使用该命令)

         select name from t1;

      3.改:update t1 set name=‘dsb’ where id>1;

      4.删:delete from t1 where id > 1;

           delete from t1 where name=‘jason’;

         delete from t1;(将表内数据删除)

  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12827352.html
Copyright © 2011-2022 走看看