数据库
数据库相关概念
数据库服务器(本质就是一台计算机,该计算机上安装有数据库管理软件的服务端) 数据库管理系统RDBMS(本质就是一个C/S架构的套接字软件) 库(文件夹)---->数据库 表(文件) 记录:抽取一个事物的所有典型的特征/数据数据库管理软件分类
关系型:有表结构,存取数据前必须先定义表结构,存数据必须按照字段的类型或者约束来 典型代表:MySQL,Oracle,DB2,SQL Server 非关系型: 存取数据都是采用key:value的形式 代表:mongodb,redis基本管理(windows平台)
1、安装
2、加环境变量3、把mysqld软件做成系统服务 注意:制作之前先把mysqld关掉tasklist |findstr mysqld
taskkill /F /PID 8372
制作:mysqld --install
查看:windows+r
输入services.msc
4、启动:
未制作系统服务的启动方式: 1、启动服务端mysqld
2、启动客户端mysql -uroot -p -h127.0.0.1 -P 3306
如果是在本机登录mysqld服务端可以简写:mysql -uroot -p
制作完系统服务后就可以鼠标点击启动或关闭mysql:windows+r 输入services.msc 找到mysql,启动或关闭
5、破解管理员密码
1、先关闭mysqld服务端 2、以跳过授权表的方式在命令行中启动mysqld服务端mysqld --skip-grant-tables
3、客户端直接以无密码的方式登录root用户,修改密码mysql -uroot -p
update mysql.user set password=password("123") where user="root" and host="localhost"; flush privileges;(权限刷新)
4、在命令行中用taskkill杀死mysqld服务,然后正常启动mysqldtaskkill /F /PID 131312
6、统一字符编码
1、在mysql安装目录下新建my.ini文件 2、修改my.ini1 [mysqld] 2 character-set-server=utf8 3 collation-server=utf8_general_ci 4 [client] 5 default-character-set=utf8 6 [mysql] 7 default-character-set=utf8
3、重启mysqld
4、客户端登录,输入\s查看结果基本SQL语句
文件夹(库)
增1create database db1 charset utf8;
改
1 alter database db1 charset gbk;
查
1 查看所有库的库名 2 show databases; 3 单独查看某一个库的信息 4 show create database db1;
删
1drop database db1;
文件(表)
首先切换文件夹:1use db1; 2select database(); #查看当前所在文件夹、
增
1create table t1(id int,name char);
改
1alter table t1 modify name char(16);
查
1 查看当前库下所有的表名 2 show tables; 3 查看t1表的详细信息 4 show create table t1; 5 查看表结构 6 desc t1;
删
1 drop table t1;
文件的一行内容(记录)
增1insert into db1.t1 values 2(1,'egon'), 3(2,'alex'), 4(3,'lxx');
改
1update db1.t1 set name='sb' where id > 1;
查
1select id,name from db1.t1;
删
1delete from db1.t1 where name = "SB" ;
存储引擎
什么是存储引擎
数据库中不同类型的表,会对应mysql不同的存取机制,表类型又称为存储引擎存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎
SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL 的插件式存储引擎可以让存储引擎层的开发人员设 计他们希望的存储层,例如,有的应用需要满足事务的要求,有的应用则不需要对事务有这 么强的要求 ;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据 的查询。
存储引擎的使用
方法1:建表时制定1MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb; 2MariaDB [db1]> create table innodb_t2(id int)engine=innodb; 3MariaDB [db1]> show create table innodb_t1; 4MariaDB [db1]> show create table innodb_t2;
方法2:在配置文件中指定默认的存储引擎
1/etc/my.cnf 2[mysqld] 3default-storage-engine=INNODB 4innodb_file_per_table=1
查看
1[root@egon db1]# cd /var/lib/mysql/db1/ 2[root@egon db1]# ls 3db.opt innodb_t1.frm innodb_t1.ibd innodb_t2.frm innodb_t2.ibd
小练习
1MariaDB [db1]> create table t1(id int)engine=innodb; 2MariaDB [db1]> create table t2(id int)engine=myisam; 3MariaDB [db1]> create table t3(id int)engine=memory; 4MariaDB [db1]> create table t4(id int)engine=blackhole; 5MariaDB [db1]> quit 6[root@egon db1]# ls /var/lib/mysql/db1/ #发现后两种存储引擎只有表结构,无数据 7db.opt t1.frm t1.ibd t2.MYD t2.MYI t2.frm t3.frm t4.frm 8#memory,在重启mysql或者重启机器后,表内数据清空 9#blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录