在以前按写的选课系统或则是ftp项目中,咱们都引用了db这个文件夹,那么数据量太大,或则须要快速对文件进行操做时,单一的文件已经没法进行处理,这是就引出了咱们的数据库,数据库是属于C/S架构html
描述事物的符号记录称为数据,描述事物的符号既能够是数字,也能够是文字、图片,图像、声音、语言等,数据由多种表现形式,它们均可以通过数字化后存入计算机。
在计算机中描述一个事物,就须要抽取这一事物的典型特征,组成一条记录,就至关于文件里的一行内容,如:
xiaomage,male,18,1999,山东,计算机系,2017,oldboy
单纯的一条记录并无任何意义,若是咱们按逗号做为分隔,依次定义各个字段的意思,至关于定义表的标题node
这样咱们就能很清晰的看清楚一条命令所描述的信息了python
什么是数据库(DateBase,简称DB):mysql
什么是数据库管理系统(DateBase Management System 简称DBMS):linux
在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键,这就用到了一个系统软件---数据库管理系统,实际上是一个软件web
如MySQL、Oracle、SQLite、Access、MS SQL Serverredis
mysql:主要用于大型门户,例如搜狗、新浪等,它主要的优点就是开放源代码,由于开放源代码这个数据库是免费的,他如今是甲骨文公司的产品。 oracle: 主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。 sql server:是微软公司的产品,主要应用于大中型企业,如联想、方正等。sql
数据库管理软件分两大类:
关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
能够简单的理解为:
关系型数据库须要有表结构
非关系型数据库是key-value存储的,没有表结构
数据库服务器:mongodb
什么是数据库管理员(DateBase Administrator,简称:DBA)数据库
数据库的优点
1.程序稳定性 :这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务。
2.数据一致性 :全部的数据都存储在一块儿,全部的程序操做的数据都是统一的,就不会出现数据不一致的现象
3.并发 :数据库能够良好的支持并发,全部的程序操做数据库都是经过网络,而数据库自己支持并发的网络操做,不须要咱们本身写socket
4.效率 :使用数据库对数据进行增删改查的效率要高出咱们本身处理文件不少
数据库的特色
数据库系统的特色:
1 数据结构化(如上图odboy_stu)
2 数据共享,冗余度低,易扩充
3 数据独立性高
4 数据由DBMS统一管理和控制
a:数据的安全性保护
b:数据的完整性检查
c:并发控制
d:数据库恢复
须要注意的是,安装的时候若是遇到下列状况:
缘由是MRVCR.dll没法找到,是系统缺乏插件,能够下载插件安装便可
若是实在找不到缘由,或则各类没法解决的问题,那么能够在网上下载VC运行库,这个库为咱们虚拟了一个Mysql管理系统,咱们能够直接用。
# mysqld install
# mysqld.exe install 要安装mysql的server端
# net start mysql 启动server端
# mysql -uroot -p 启动client端
# 重启server
# net stop mysql
# net start mysql
刚安装的mysql后:
一、打开终端,使用root登录,输入:mysql -uroot -p;回车,最开始是没有密码的直接回车就行。
查看当前用户
select user(); #查看当前用户
退出
exit # 也能够用\q quit退出
管理员为root(拥有最高权限,管理员帐号),密码为空,以无密码的方式登陆了管理员帐号,是很是危险的一件事情,因此要为管理员帐号设置密码
设置root用户密码
mysql> set password = password('root'); # 给当前数据库设置密码,这是在mysql内部设置
windonws> mysqladmin -uroot -p password "123" #设置初始密码 因为原密码为空,所以-p能够不用
修改root用户密码
windows> mysqladmin -uroot -p"123" password "456" #讲旧密码修改成456
忘记mysql密码:
1、以管理员身份打开cmd;
2、net stop mysql 关掉mysql
3、执行下列命令跳过受权表:
C:\WINDOWS\system32> mysqld --skip-grant-tables #执行完后,窗口会挂起,先别关闭
4、新开一个窗口登录:mysql -uroot # 此时会跳过密码直接登录
5、使用select user() # 查看当前用户
6、如今能够任意的更改密码,执行下面的代码,讲密码设置为空:
update mysql.user set authentication_string = password('') where user = 'root';
7、刷新权限,执行下面的命令:
flush privileges;
8、关闭全部窗口,(退出mysql,关闭挂起的窗口);新开个窗口让用户加载权限,以管理员身份进入cmd,查看 当前mysql进程
tasklist |findstr mysql #查看当前mysql的进程
9、杀死当前的进程,(固然也能够在任务管理器中关闭)
taskkill /F /PID 6052 # 杀死当前的进程pid
10、重启mysql,使用新密码登录
统一字符编码:有时mysql的配置默认字符编码不是utf8,此时就要咱们手动切换
进入mysql界面:执行\s,能够查看相应的配置信息
咱们在my.ini文件中配置信息,直接保存,重启便可(在MySQL文件中默认有个ini文件,可是里面是一些提示信息,就是指导咱们本身写)
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql\mysql-5.6.43-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-5.6.43-winx64\data
# 容许最大链接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 建立新表时将使用的默认存储引擎
default-storage-engine=INNODB
#进入mysql客户端
$mysql
mysql> select user(); #查看当前用户
mysql> exit # 也能够用\q quit退出
# 默认用户登录以后并无实际操做的权限
# 须要使用管理员root用户登录
$ mysql -uroot -p # mysql5.6默认是没有密码的
#遇到password直接按回车键
mysql> set password = password('root'); # 给当前数据库设置密码
# 建立帐号
mysql> create user 'eva'@'192.168.10.%' IDENTIFIED BY '123'; # 指示网段 相应网段的人能够访问,且给用户配置了密码
mysql> create user 'eva'@'192.168.10.5' # 指示某机器能够链接
mysql> create user 'eva'@'%' #指示全部机器均可以链接
mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限
# 远程登录
$ mysql -uroot -p123 -h 192.168.10.3 -p
# 给帐号受权
mysql> grant all on *.* to 'eva'@'%';
mysql> flush privileges; # 刷新使受权当即生效
# 建立帐号并受权
mysql> grant all on *.* to 'eva'@'%' identified by '123'
# grant 权利 on 数据库名.表名 to '用户名'@'ip地址' identified by '123'; 建立某个密码的用户有对某文件的某权力
#(权利 : SELECT INSERT UPDATE DELETE ALL)
# select * from performance_schema.users; #能够查看管理员用户
设想一下,当咱们想要从文件中存取数据的时候,是一个很是繁琐的过程,主要是由于文件中全部的内容对咱们来讲是连续的,没有规则的。若是咱们将数据按照规则存在一个文件中,在设计一种规则能够拼凑组合成咱们须要的操做,并经过这些指示在文件中存取数据,那么操做数据是否是可以变得更加简单快速呢?这串规则就被咱们成为SQL。
SQL : 结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
一、DDL语句
数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
二、DML语句
数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
三、DCL语句
数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
增 : create database 文件名; (create database db1 charset utf8; #这里能够指定编码)
查 :
查看当前建立的数据库
show create database db1; #也就是查看对应库里的详细信息
查看全部的数据库mysql
show databases;
改:alter database db1 charset gbk;
#这里修改的是文件的属性,如编码等
删: drop database db1;
#删除某个文件(库)
切换文件夹:
use db1; #切换文件夹
select database(); #查看当前所在文件夹
查:这里是查找文件夹里面文件,当咱们进入文件后,须要查看里省得内容时,使用show tables,查看详细信息是desc 表名。
#查看当前的这张t1表
show create table t1;
# 查看全部的表
show tables;
# 查看表的详细信息 ,有什么属性,什么字段
desc t1;
改: 修改文件内某个表内属性
# modify修改的意思
alter table t1 modify name char(6);
# 改变name为大写的NAME
alter table t1 change name NAME char(7);
删除表:
drop table t1;
增:对表内每一个属性添加值
# 插入3条数据,规定id,name数据,一次能够插入多个,插入一条使用value
insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");
#使用set
insert into t1 set id=4,name='wang';
查:查找表内的某些字段,返回主目录 >use mysql
#只显示id字段:
select id from db1.t1;
#执行显示2个字段
select id,name from db1.t1;<br>
#查询全部字段
select * from db1.t1;
改:经过条件修改数据
#修改表中的全部行,name等于zhang。很是危险,当心使用
update db1.t1 set name='zhang';
#修改id为2的行,name等于alex。推荐使用!
update db1.t1 set name='alex' where id=2;
删:删除某个数据
xxxxxxxxxx
#清空表<br>delete from t1;<br>#删除表
delete from t1 where id=2;