zoukankan      html  css  js  c++  java
  • day 33

    什么是数据库

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

    为啥使用数据库

    之前使用的时excel来进行管理数据

    ​ excel的缺点: 1.管理不了大量的数据(10w量级的数据
    ​ 2.不能够并发操作同一个数据表格
    ​ 2.支持的操作比较少

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

    数据库的分类

    • 关系型数据库
      对每一列的数据类型会有约束,id(整型),name(字符串类型)

      MySQL, SQL server , Oracle , sqlite , maridb

      MySQL , maridb -----> 用的比较多,免费

      SQL server ------> 微软 , 大学, 政府 (汽车之家)

      Oracle -------> 甲骨文, 收费 , 金融公司

      sqlite -------> 小型的文件数据库

    • 非关系型数据库
      memcache ------> 十年前的产品(新浪微博)

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

      redis ------> 微博

    最大的区别:

    ​ 关系型数据库: 把数据存在硬盘中,关系型数据库需要有表结构
    ​ 非关系型数据库, 把数据存在内存中(mongodb , redis 解决了断电数据丢失的问题
    ​ 非关系型数据库是key-value储存的,没有表结构

    MySQL的构架

    ​ 类似于 socket 的客户端和服务器

    ​ 流程:
    ​ 1.MySQL服务单先启动,监听在某一特定的端口(3306)
    ​ 2.MySQL客户端连接服务端
    ​ 3.MySQL客户端就可以发送相关的操作命令,如操作服务端储存的数据

    MySQL的安装(windows)

    ​ Windows安装:

    ​ 先去官网下载MySQL community server 5.7.16:
    http://dev.mysql.com/downloads/mysql/

    ​ 解压: 如果想要让MySQL安装在指定的目录, 如: C:/mysql-5.7.16 -winx64

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

    ​ 初始化: mysqld --initialize -insecure

    ​ 启动MySQL服务

    ​ 启动MySQL客户端并连接MySQL服务: mysql -u root -p

    ​ 在执行[mysqld]启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

    ​ 注意: --insstall前,必须用mysql启动命令的绝对路径
    ​ #制作MySQL的Windows服务,在终端执行此命令:
    ​ "c:mysql-5.7.16-winx64inmysqld” --install

    ​ #移除MySQL的Windows服务,在终端执行此命令:
    ​ "c:mysql-5.7.16-winx64inmysqld” --remove

    ​ 注册成功服务后,以后再启用MySQL服务时,仅需执行如下命令:

    ​ #启动MySQL服务
    ​ net start mysql

    ​ #关闭MySQL服务
    ​ net stop mysql

    1.mysql软件基本管理

    [root@egon ~]# systemctl start mariadb #启动
    [root@egon ~]# systemctl enable mariadb #设置开机自启动
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
    [root@egon ~]# ps aux |grep mysqld |grep -v grep #查看进程,mysqld_safe为启动mysql的脚本文件,内部调用mysqld命令
    mysql     3329  0.0  0.0 113252  1592 ?        Ss   16:19   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
    mysql     3488  0.0  2.3 839276 90380 ?        Sl   16:19   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
    [root@egon ~]# netstat -an |grep 3306 #查看端口
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN  
    [root@egon ~]# ll -d /var/lib/mysql #权限不对,启动不成功,注意user和group
    drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
    
    
    # 安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
    mac mysql error You must reset your password using ALTER USER statement before executing this statement.
    # 解决方法:
    step 1: SET PASSWORD = PASSWORD('your new password');
    step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    step 3: flush privileges;
    
    You must reset your password using ALTER USER statement before executing this statement.
    

    2.登录,设置密码

    初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
    #设置密码
    [root@egon ~]# mysqladmin -uroot password "123"        设置初始密码 由于原密码为空,因此-p可以不用
    [root@egon ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
    
    #命令格式:
    [root@egon ~]# mysql -h172.31.0.2 -uroot -p456
    [root@egon ~]# mysql -uroot -p
    [root@egon ~]# mysql                    以root用户登录本机,密码为空
    

    3.忘记密码,操作方式:

    方式一:

    1 关闭mysql
    2 在cmd中执行:mysqld --skip-grant-tables
    3 在cmd中执行:mysql
    4 执行如下sql:
    update mysql.user set authentication_string=password('') where user = 'root';
    flush privileges;
    
    5 tskill mysqld #或taskkill -f /PID 7832
    6 重新启动mysql
    
    
    

    方式二

    1. 关闭mysql,可以用tskill mysqld将其杀死
    2. 在解压目录下,新建mysql配置文件my.ini
    3. my.ini内容,指定
    [mysqld]
    skip-grant-tables
    
    4.启动mysqld
    5.在cmd里直接输入mysql登录,然后操作
    update mysql.user set authentication_string=password('') where user='root and host='localhost';
    
    flush privileges;
    
    #6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
    
    
    

    4.在Windows下,为mysql服务指定配置文件

    强调: 配置文件中的注释可以有中文,但是配置项中不能出现中文

    #在mysql的解压目录下,新建my.ini,然后配置
    #1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
    [mysqld]
    ;skip-grant-tables
    port=3306
    character_set_server=utf8
    default-storage-engine=innodb
    innodb_file_per_table=1
    
    
    #解压的目录
    basedir=E:mysql-5.7.19-winx64
    #data目录
    datadir=E:my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
    
    
    
    #2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
    [client]
    port=3306
    default-character-set=utf8
    user=root
    password=123
    
    #3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
    [mysql]
    ;port=3306
    ;default-character-set=utf8
    user=egon
    password=4573
    
    
    #!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
    
    my.ini
    

    5.统一字符编码

    #1. 修改配置文件
    [mysqld]
    default-character-set=utf8 
    [client]
    default-character-set=utf8 
    [mysql]
    default-character-set=utf8
    
    #mysql5.5以上:修改方式有所改动
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
    #2. 重启服务
    #3. 查看修改结果:
    s
    show variables like '%char%'
    

    6.初识MySQL语句

    mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他的模块来连接到mysqld,然后使用MySQL软件规定的语法格式去提交自己的命令,实现对文件夹或文件的管理.该语法即sql(Structured Query Language 即结构化查询语言)

    SQL语言主要用于存取数据,查询数据,更新数据和管理关系数据库系统,SQL语言由IBM开发.SQL语言分为三类:
    1. DDL语句	数据库定义语言:  数据库,表,视图,索引,存储过程,例如 create drop alter    
    2. DML语句	数据库操纵语言:  插入数据insert,删除数据delete,更新数据update,查询数据select
    3. DCL语句	数据库控制语言:  例如控制用户访问权限grant,revoke
    
    1.操作文件夹:
    	增: create dataase db1 charset utg8;
    	查:show databases;
    	改: show database db1 charset latin1;
    	删除: drop database db1;
    	
    2. 操作文件:
    	先切换到文件夹下: use db1
    		增: create table t1(id int,name char);
    		查: show tables
    		改: alter table t1 modify name char(3);
    			alter table t1 change name name1 char(2)
    		删: drop table t1;
    		
    3. 操作文件中的内容/记录
    	增: insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
    	查: select * from t1l
    	改: update t1 set name='sb' where id=2;
    	删: delete from t1 where id =1
    	
    	清空表:
    		delete from t1; # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始.
    		truncate table t1; 数据量大,删除速度比上一条快,且直接从零开始
    		auto_increment 表示自增
    		primary key  表示约束(不能重复且不能为空);加速查找
    
  • 相关阅读:
    Linux驱动下的platform总线架构(转)
    一生中很值得看的30个故事之一断箭
    学习嵌入式LINUX系统的笔记和体会
    DIY:自己动手做一个迷你 Linux 系统
    linux里面i386 i686 i486 i586代表什么?是什么意思
    菜鸟编译Linux内核
    LINUX核心重编与升级
    ARM 内核移植中常见的错误
    Linux 2.6.19.x 内核编译配置选项简介
    基于S3C2410平台移植Linux 2.6内核指南
  • 原文地址:https://www.cnblogs.com/LZF-190903/p/11754401.html
Copyright © 2011-2022 走看看