MySQL基础
数据库的历史(DataBase,DB)
人工管理阶段
文件系统
数据系统
MySQL是由MySQL AB公司开发,目前属于Oracle公司,是开源的关系型数据库。
Mysql存储引擎
为啥出现引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能
常用Mysql引擎
mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。
InnoDB引擎
用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。
更多引擎参考
https://www.cnblogs.com/nickchen121/p/11145788.html
Mysql工作流程
数据库的组成
库:存放多张表 - 文件夹
表:包含多条相同结构的记录 - 文件
记录:包含多个key-value键值对的一条数据 - 二进制数据
字段:描述信息 - key 附带大量的属性
数据库分类
关系与非关系
关系:数据库中的表与表之间有联系-mysql
非关系:没有表的概念-redis、mongodb(介于关系与非关系之间)
内存与硬盘
硬盘:数据可以永久存储-mysql、mongodb
内存:数据的存取效率极高-redis、memcache
sql与nosql
sql:数据库操作通过sql语句
nosql:数据库操作就是Key-Value形式
绿色版加之前有安装mysql
首先配置好环境变量
1.首先卸载服务
mysqld --remove
2.安装服务
mysqld --install
3.启动服务
net start mysql
Mysql常识
修改提示符
PROMPT
\D 完整的日期
\d 当前数据库
\h 服务器名称
\u 当前用户
显示当前服务器版本
SELECT VERSION();
显示当期时间
SELECT NOW();
显示当期用户
SELECT USER();
MySQL语句规范
关键字与函数名称全部大写
数据库名称、表名称、字段名称全部小写
SQL语句必须以分号结尾
查看MySQL警告信息
SHOW WARNINGS;
显示创建数据库时候的命令
SHOW CREATE DATABASE 数据库名;
修改数据库
ALTER
删除数据库
DROP
连接数据库
1)游客登陆(不一定能登入,登入了也啥都不能干) >: mysql 2)账号密码登录(默认登录就是localhost账号) >: mysql -u root -p 再输入密码,没有任何提示,没有密码直接回车 3)连接指定服务器的mysql >: mysql -h ip地址 -P 端口号 -u 账号 -p 回车后敲入密码 eg: >: mysql -hlocalhost -P3306 -uroot -p 4)退出数据库 >: quit >: exit
用户信息查看(修改需要重启服务)
1)查看当前登录的用户 mysql>: select user(); 2)root权限下可以查看所有用户信息 mysql>: select * from mysql.user; mysql>: select * from mysql.user \G mysql>: select user,password,host from mysql.user; 其中127.0.0.1这个host是没意义的,指定他,他密码找的还是localhost的 3)root登录下,删除游客(操作后要重启mysql服务) mysql>: delete from mysql.user where user=''; 4)root登录下,修改密码(操作后要重启mysql服务) mysql>: update mysql.user set password=password('12345678') where host='localhost'; password()为mysql的加密函数,登录的时候,输入的密码是通过加密的,所以在设置密码的时候要提前加密 5)没有登录 >: mysqladmin -u用户名 -p旧密码 -h域名 password "新密码" eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root"
创建用户权限管理(修改需要重启服务)
新建用户 格式:create user "username"@"host" identified by "password"; eg: 1.mysql->create user 'test'@'localhost' identified by 'zx'; 2.mysql->create user 'test'@'192.168.11.213' identified by 'zx'; 3.mysql->create user 'test'@'%' identified by 'zx'; 1)授予用户通过外网IP对于该数据库的全部权限 grant all privileges on test.* to 'test'@'%' ; 2)授予用户在本地服务器对该数据库的全部权限 grant all privileges on `test`.* to 'test'@'localhost'; 3)给予查询权限 grant select on test.* to 'user1'@'localhost'; 4)添加插入权限 grant insert on test.* to 'user1'@'localhost'; 5)添加删除权限 grant delete on test.* to 'user1'@'localhost'; 6)添加权限 grant update on test.* to 'user1'@'localhost'; 7)刷新权限 flush privileges;
数据库基本操作
1)查看已有数据库 mysql>:show databases; 2)选择某个数据库 mysql>:use 数据库名 3)查看当前所在数据库 mysql>:select database(); 4)创建数据库 mysql>:create database 数据库名 [charset=编码格式]; eg>: create database owen; eg>: create database zero charset=utf8; eg>: create database tank; 5)查看创建数据库的详细内容 mysql>:show create database 数据库名; eg>: show create database owen; 6)删除数据库 mysql>: drop database 数据库名; eg>: drop database tank;
表的基本操作
前提:先选取要操作的数据库 1)查看已有表 mysql>:show tables; 2)创建表 mysql>:create table 表名(字段们); eg>: create table student(name varchar(16), age int); eg>: create table teacher(name varchar(16), age int); 3)查看创建表的sql mysql>:show create table 表名; eg>: show create table student; 4)查看创建表的结构 mysql>:desc 表名; 5)删除表 mysql>: drop table 表名; eg>: drop table teacher;
记录的基本操作
1)查看某个数据库中的某个表的所有记录,如果在对应数据库中,可以直接查找表 mysql>: select * from [数据库名.]表名; 注:*代表查询所有字段 2)给表的所有字段插入数据 mysql>: insert [into] [数据库名.]表名 values (值1,...,值n); eg:如果给有name和age两个字段的student表插入数据 1条>:insert into student values ('Bob', 18); 多条>:insert into student values ('张三', 18), ('李四', 20); 指定库>:insert owen.student values ('张三', 18), ('李四', 20); 3)根据条件修改指定内容 mysql>: update [数据库名.]表名 set 字段1=新值1, 字段n=新值n where 字段=旧值; eg:> update student set name='王五', age='100' where name='张三'; 注:i) 可以只修改部分字段 ii) 没有条件下,所有记录都会被更新 eg:> update student set name='呵呵'; 4)根据条件删除记录 mysql>: delete from [数据库名.]表名 where 条件; eg:> delete from student where age<30;