初识数据库和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';
posted @ 2019-09-21 17:15  chanyuli  阅读(247)  评论(0编辑  收藏  举报