数据库初识
Posted xiaoqianbook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库初识相关的知识,希望对你有一定的参考价值。
什么是数据库
数据库就是存储数据的仓库
数据库管理系统(Database Management System,简写DBMS)
是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。
数据库分类
1.关系型数据库
关系型数据库把复杂的的数据结构归结为简单的二元关系
常用的关系型数据库: oracle数据库,mysql,MariaDB数据库,SQL Server数据库,Access数据库
2.非关系型数据库
非关系型数据库也被称为NoSQL数据库
常见的非关系型数据库: Memcached,Redis,MongoDB
Mysql介绍
下载地址: https://dev.mysql.com/downloads
创建服务 mysqld --install
启动指令: net start mysql
关闭指令: net stop mysql
启动mysql自带的客户端来连接操作,指令 mysql -u root -p -u:用户 -p指定密码 -h指定ip地址 -P 指定端口号
修改密码和忘记密码的解决方法
第一种方法在命令行直接输入
1.格式 : mysqladmin -u用户名 -p旧密码 password 新密码
如 mysqladmin -uroot -proot password 123
第二种方法在mysql命令行中输入
格式:mysql> set password for 用户名@localhost = password(‘新密码‘);
例子:mysql> set password for [email protected] = password(‘123‘);
忘记密码的解决方案
先打开一个dos命令框跳转到mysqlin命令下 输入mysqld --skip-grant-tables 命令行卡住再打开一个dos命令框输入mysql回车 use mysql;切换 之后修改密码 update user set password=password("123") where user="root";然后刷新权限 flush privileges;退出 quit 电脑重启就解决 用户名密码就是root 和 123
或者退出后输入 tasklist |findstr mysql 查看mysql的当前进程
taskkill /F /PID 8728 杀死进程, 然后重新启动mysql就行
修改字符集编码
查看数据库字符编码:
show create database 数据库名G;
查看表格字符编码:
show create table 表名称G;
查看各角色的字符编码
show variables like ‘%char%‘;
暂时性修改字符编码:
set names utf8
永久性修改字符编码
需要在mysql是配置文件my.ini文件中添加
[mysqld] character_set_server = utf8 [client] default-character-set = utf8 [mysql] user = root password = root default-character-set = utf8
select user();查看当前登录的用户名
初识mysql语句
创建数据库: create database 数据库名;
查询: show databases; #查看所有数据库
show database 数据库名 #查看单独数据库
修改: alter database 数据库名 charset latin1; 修改数据库字符集为latin1
删除: drop database 数据库名;
要到那个数据库下就要使用use 数据库名;进行切换
select database();查看当前是那个库
表的创建:create table t1(id int,name char(10));
创建表单后有两文件
后缀名为.frm的文件:这个文件主要是用来描述数据表结构(id,name字段等)和字段长度等信息 后缀名为.ibd的文件:这个文件主要储存的是采用独立表储存模式时储存数据库的数据信息和索引信息;
查询: show tables;查看当前库的所有表
show create table t1; 查看表单创建信息
desc t1;
desctibe t1;
改: alter table t1 modify name char(5); 修改字段的属性 ,将name字段的char长度修改为5
alter table t1 change name name1 char(2); 修改字段的名字name 为name1 长度为2
删除: drop table t1;
对文件数据的操作:
增加: insert into t1 values(1,‘alex‘);
查询: select * from t1; #查看t1表中所有字段的数据
修改: update t1 set name = "sb" where id = 1; 如果没有写 where 指定就会把所有数据都修改
删除:delete from t1 where id = 1; #删除id为1的数据
auto_increment 自增
primary key 约束 ;加快查找
c 退出
数据库存储引擎分类
1.MyISAM引擎
MyISAM引擎特点: 1.不支持事务 事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败。 2.表级锁定 数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。 3.读写互相阻塞 不仅会在写入的时候阻塞读取,MyISAM还会再读取的时候阻塞写入,但读本身并不会阻塞另外的读。 4.只会缓存索引 MyISAM可以通过key_buffer_size的值来提高缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。 5.读取速度较快 占用资源相对较少 6.不支持外键约束,但只是全文索引 7.MyISAM引擎是MySQL5.5版本之前的默认引擎,是对最初的ISAM引擎优化的产物。
2.InnoDB
InnoDB引擎 介绍:InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正称为目前MySQL AB所发行新版的标准,被包含在所有二进制安装包里。和其他的存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostGreSQL),以及参数完整性(即对外键的支持)。Oracle公司与2005年10月收购了Innobase。Innobase采用双认证授权。它使用GNU发行,也允许其他想将InnoDB结合到商业软件的团体获得授权。 InnoDB引擎特点: 1.支持事务:支持4个事务隔离界别,支持多版本读。 2.行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。 3.读写阻塞与事务隔离级别相关(有多个级别,这就不介绍啦~)。 4.具体非常高效的缓存特性:能缓存索引,也能缓存数据。 5.整个表和主键与Cluster方式存储,组成一颗平衡树。(了解) 6.所有SecondaryIndex都会保存主键信息。(了解) 7.支持分区,表空间,类似oracle数据库。 8.支持外键约束,不支持全文索引(5.5之前),以后的都支持了。 9.和MyISAM引擎比较,InnoDB对硬件资源要求还是比较高的。 小结:三个重要功能:Supports transactions,row-level locking,and foreign keys
事务的四大特性: 1.原子性(Atomicity) 事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。 2.一致性(Consistency) 事务发生前和发生后,数据的完整性必须保持一致。 3.隔离性(Isolation) 当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。也就是其他人的操作在这个事务的执行过程中是看不到这个事务的执行结果的,也就是他们拿到的是这个事务执行之前的内容,等这个事务执行完才能拿到新的数据。 4.持久性(Durability) 一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允撤销,只能通过‘补偿性事务‘。
数据库基础数据类型
unsigned: 无符号
整型:
tinyinit: 小整数
有符号: -128 ~ 127
无符号: 0 ~ 255
int 整数
有符号:
-2147483648 ~ 2147483647
无符号:
0 ~ 4294967295
bigint: 大整数
有符号: -9223372036854775808 ~ 9223372036854775807 无符号: 0 ~ 18446744073709551615
模式设置和修改
select @@sql_mode #查看当前的模式
select @@global.sql_mode #查看全局模式
设置严谨模式
在my.ini文件中添加
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
小数:
float: 单精度
double: 双精度
decimal:精确,内部使用字符串存储
字符串:
char: 简单粗暴,浪费空间,存储速度快
varchar:精准,节省空间,存储速度慢
时间类型:
datetime
以上是关于数据库初识的主要内容,如果未能解决你的问题,请参考以下文章
初识OpenGL 片段着色器(Fragment Shader)