mysql 数据库

数据库:

数据库是指长期存储在计算机内,有组织,可共享的数据集合。数据库中的数据按照一定的数学模型组织,描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为多个用户共享。

数据库管理软件:

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,Mysql(开源,免费,跨平台).

数据库系统:

数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。

                        

mysql 数据库:

下载安装  :http://dev.mysql.com/downloads/mysql/

初始化   : 打开cmd   cd E:mysql-5.7.19-win32in

        mysql -- initialize - insecure

启动mysql:    cd E:mysql-5.7.19-win32in

         mysqld

启动mysql客户端连接mysql服务: mysql -uroot -p   提示输入密码默认为空,直接回车

添加环境变量:

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

将mysql制作成Windows服务:

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

注意:--install前,必须用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

设置密码:

-- mysqladmin -uroot password '123'   #设置初始密码,初始密码为空因此-p选项没有用
-- mysqladmin -u root -p123 password '1234' #修改root用户密码

登录:

-- mysql               #本地登录,默认用户root,空密码,用户为root@127.0.0.1
-- mysql -uroot -p1234 #本地登录,指定用户名和密码,用户为root@127.0.0.1
-- mysql -uroot -p1234 -h 192.168.31.95 #远程登录,用户为root@192.168.31.95

破解密码:

#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
#6 重新启动mysql
方法1:启动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,然后就可以以新密码登录了
方法2配置文件

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

#在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables#跨过注册表
port=3306#端口号
character_set_server=utf8#指定编码
#解压的目录
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]为准

 初识sql语句:

#1 操作文件夹(库)
    增
        create database db1 charset utf8;

    查
        show databases;
        show create database db1;
    改
        alter database db1 charset gbk; 
    删
        drop database db1;

#2 操作文件(表)
    切换到文件夹下:use db1

    增
        create table t1(id int,name char(10))engine=innodb;
        create table t2(id int,name char(10))engine=innodb default charset utf8;
    查
        show tables;
        show create table t1;

        desc t1;#查看表结构
    改
        alter table t1 add age int;
        alter table t1 modify name char(12);

    删
        drop table t1;

#3 操作文件的一行行内容(记录)
    增
        insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
        insert into db1.t1(name) values('egon1'),('egon2'),('egon3');
    查
        select * from t1;
        select name from t1;egon
        select name,id from t1;
    改
        update t1 set name='SB' where id=4;
        update t1 set name='SB' where name='alex';
    删
        delete from t1 where id=4;


        #对于清空表记录有两种方式,但是推荐后者
        delete from t1;
        truncate t1; #当数据量比较大的情况下,使用这种方式,删除速度快



    #自增id
    create table t5(id int primary key auto_increment,name char(10));
    create table t4(id int not null unique,name char(10));

insert into t5(name) values
('egon5'),
('egon6'),
('egon7'),
('egon8'),
('egon9'),
('egon10'),
('egon11'),
('egon12'),
('egon13');
简单的sql语句

初识授权:

一, 创建用户: 

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 

说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器. 

例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; #创建本机用户
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456'; 
CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; 
CREATE USER 'pig'@'%' IDENTIFIED BY ''; 
CREATE USER 'pig'@'%'; 

#insert,delele,update,select
#级别1:对所有库,下的所有表,下的所有字段
grant select on *.* to 'lin1'@'localhost' identified by '123';

#级别2:对db1库,下的所有表,下的所有字段
grant select on db1.* to 'lin2'@'localhost' identified by '123';

#级别3:对表db1.t1,下的所有字段
grant select on db1.t1 to 'lin3'@'localhost' identified by '123';

#级别4:对表db1.t1,下的id,name字段
grant select (id,name) on db1.t1 to 'lin4'@'localhost' identified by '123';
grant select (id,name),update (name) on db1.t1 to 'lin5'@'localhost' identified by '123';

#修改完权限后,要记得刷新权限
flush privileges;

删除账户及权限:>drop user 用户名@'%';

        >drop user 用户名@ localhost; 

 mysql存储引擎:

存储引擎就是如何存储数据,如何为存储的数据建立索引和如何更新、查询等技术的实现方法。

查看mysql的存储引擎:

SHOW ENGINES#查看所有的存储引擎
SHOW VARIABLES LIKE '%storage_engine%';#查看正在使用的存储引擎

使用存储引擎:

mysql 默认的存储引擎电话INNODB

mysql> CREATE DATABASE db1;#建库

mysql> use db1;#进库

 CREATE TABLE t1(id int,name varchar(20))ENGINE = INNODB;#建表,指定引擎为INNODB

mysql> SHOW CREATE TABLE t1;#查看表

+-------+-------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                            |
+-------+-------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
创建四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试

MariaDB [db1]> create table t1(id int)engine=innodb;
MariaDB [db1]> create table t2(id int)engine=myisam;
MariaDB [db1]> create table t3(id int)engine=memory;
MariaDB [db1]> create table t4(id int)engine=blackhole;
原文地址:https://www.cnblogs.com/shengzhongqiu/p/7486810.html