初识数据库和mysql数据库
初识数据库
数据库是什么
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用。
数据库是长期存放在计算机内、有组织、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据又是什么
描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机
在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:tank,不详,83,1935,广东,oldboy
单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题:
id,name,sex,age,birth,born_addr,company # 字段/列名
1,tank,不详,83,1935,山东,oldboy # 数据
这样我们就可以了解tank,性别不详,年龄83岁,出生于1935年,住的养老院是老男孩
什么是数据库管理系统(DataBase Management System 简称DBMS)
在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键。
这就用到了一个系统软件---数据库管理系统,如MySQL、Oracle、SQLite、Access、MS SQL Server。
- mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
- oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
- sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
而对数据库管理的人员一般称之为:数据库管理员 DBA(Database Administrator)
数据库服务器、数据管理系统、数据库、表与记录的关系(重点)
记录:1 老王 15201413111 22(多个字段的信息组成一条记录,即文件中的一行内容)
表:userinfo,studentinfo,courseinfo(即文件)
数据库:db(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
- 数据库服务器:运行数据库管理软件
- 数据库管理软件:管理数据库
- 数据库:即文件夹,用来组织文件/表
- 表:即文件,用来存放多行内容/多条记录
初识MySQL
MySQL
MySQL是一个关系型数据库管理系统 ,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码 这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
数据库的分类
# 1)关系与非关系
# 关系:数据库中表与表之间有联系 - mysql
# 非关系:没有表概念 - redis、mongodb(介于关系与非关系)
# 2)内存与硬盘
# 硬盘:数据可以永久存储 - mysql、mongodb
# 内存:数据的存取效率极高 - redis、memcache
# 3)sql与nosql
# sql:数据库操作通过sql语句
# nosql:数据库操作就是key-value形式(value就是一条记录)
# stu - {'name': 'Bob', 'age': 18}
# stus - [{'name': 'Bob', 'age': 18}, {'name': 'Tom', 'age': 18}]
# name - 'Jerry'
卸载
"""
前提)启动终端,输入 mysql,如果不是提示 不是内部或外部命令,代表已安装数据库
1)直接连入
i 搜索:服务,检索mysql服务,有
停止服务,并移除服务 - 启动管理员终端:mysqld --remove
ii 搜索:服务,检索mysql服务,无 (mysql使用命令启动)
停止服务,启动管理员终端
tasklist | findstr mysql
taskkill /pid 进程pid /f
2)连接超时
搜索:服务,检索mysql服务,移除服务即可
3)移除环境变量
总结:如果能连入,先停止服务 | 如果添加了服务,就移除服务 | 取消环境变量配置
"""
安装
"""
1、解压免安装版本(5.6 - 没有初始密码)
2、配置环境变量:数据库绝对路径下的bin
3、配置服务:
启动管理员终端:mysqld --install [nmysql]
"""
连接数据库
1)游客登陆(不一定能登入,登入了也啥都不能干)
>: mysql
2)账号密码登录
>: 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;
3)root登录下,删除游客(操作后要重启mysql服务)
mysql>: delete from mysql.user where user='';
4)root登录下,修改密码(操作后要重启mysql服务)
mysql>: update mysql.user set password=password('12345678') where host='localhost';
5)没有登录
>: mysqladmin -u用户名 -p旧密码 -h域名 password "新密码"
eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root"
6)root登录下,创建用户
mysql>:grant 权限们 on 数据库名.表名 to 用户名@主机名 identified by '密码';
数据库的基本操作
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;
创建用户权限管理(修改需要重启服务)
新建用户
格式: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 *.* to 'xx'@'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;
8)查看权限
show grants;
9)查看某个用户的权限
show grants for 'xx'@'%';
10)删除某个用户的某个表的某个权限
revoke delete on test.* from 'xx'@'localhost';