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-win32\bin
mysql -- initialize - insecure
启动mysql: cd E:\mysql-5.7.19-win32\bin
mysqld
启动mysql客户端连接mysql服务: mysql -uroot -p 提示输入密码默认为空,直接回车
添加环境变量:
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【将MySQL的
bin
目录路径追加到变值值中,用 ; 分割】
将mysql制作成Windows服务:
上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令: "c:\mysql-5.7.16-winx64\bin\mysqld" --install # 移除MySQL的Windows服务,在终端执行此命令: "c:\mysql-5.7.16-winx64\bin\mysqld" --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,可以用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,然后就可以以新密码登录了
在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');
初识授权:
一, 创建用户: 命令: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;