一、什么是数据库:
一个专门管理数据的软件.特点是:管理数据便捷,高效,安全,支持高并发.
数据库专业的名字叫:数据库管理系统(英语:Database Management System,简称DBMS)我们平常讲的mysql是数据库的一种
数据库现在主流两个大类:
关系型数据库(RDBMS):
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(mysql就是关系型数据库,是一款基于CS架构的软件).操作关系型数据库的命令,我们称之为SQL.不同数据库系统之间的SQL不能完全相互通用
非关系型数据库
注意: 数据库里面的指令必须要用;分号结尾,然后才能执行
一些简单语法介绍: 1.开启服务端,mysqld\ net start mysql 2.使用mysql自带的客户端进行连接,cmd下输入mysql -u root -p,然后回车,会提示你输入密码,此时初始的root用户还没有密码,所以还是直接回车就可以连接上了 3.show databases;先不讲里面的内容,说一下这是几个库,每个项目可以有自己单独的一个库,里面放这个项目的所有数据表 4.创建一个库:create database CRM;然后show databases;查看一下就有了这个crm库,不分大小写,统一会变成小写,对照着我们mysql安装目录下的data文件夹里面的内容看一下,库就是对应的文件夹。 5.我们目前在所有数据库之上,想在我们自己项目的库里面操作数据,就需要切换到我们自己这个crm项目的库里面进行数据的操作,切换数据库使用use + 库名,例如:use crm;就提示你切换成功了。 6.我们说过,库里面维护的数据就像一张一张的数据表,类似excel,对不对,那我们创建一张表看一下,命令: create table student( id int, name char(10), age int,); 7.再执行show tables;就可以看到有了一个student表 8.查看一下这个表里的数据select * from student;发现什么数据也没有
二、mysql文件介绍:
重点看一下data文件夹:如果你找不到自己建立的库或者表的文件,可能不在这个data文件夹下面,连接上mysql之后,输入show global variables like "%datadir%";
来查看数据文件存储路径,找到路径之后,到对应路径下如果找不到这个文件夹,那么可能是隐藏的,把隐藏的文件显示一下就行了。
三、设置密码和忘记密码的解决方案
方法1: 用SET PASSWORD命令 首先登录MySQL,使用mysql自带的那个客户端连接上mysql。 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for root@localhost = password('123');
方法2:用mysqladmin (因为我们将bin已经添加到环境变量了,这个mysqladmin也在bin目录下,所以可以直接使用这个mysqladmin功能,使用它来修改密码) 关于mysqladmin的介绍:是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库、修改用户密码等等的功能,
格式:mysqladmin -u用户名 -p旧密码 password 新密码 例子:mysqladmin -uroot -p123456 password 123
注意:只用mysqladmin的时候,会出现一个warning警告信息:Warning: Using a password on the command line interface can be insecure.,这个没关系,是提示你,
你直接在cmd下使用明文设置密码的时候,是不安全的,因为别人可以通过翻看你输入指令的历史记录来查看到你设置的密码,所以提示你一下,不信你按上下键,
可以看到自己之前输入的命令.所以我们最好连接进入到mysql里面之后,再进行密码的修改和设置
方法3:用UPDATE直接编辑那个自动的mysql库中的user表 1.首先登录MySQL,连接上mysql服务端。 2.mysql> use mysql; #use mysql的意思是切换到mysql这个库,这个库是所有的用户表和权限相关的表都在这个库里面,我们进入到这个库才能修改这个库里面的表。 3.mysql> update user set password=password('123') where user='root' and host='localhost'; #其中password=password('123') 前面的password是变量,
后面的password是mysql提供的给密码加密用的,我们最好不要明文的存密码,其中user是一个表,存着所有的mysql用户的信息。 4.mysql> flush privileges; 刷新权限,让其生效,否则不生效,修改不成功。
忘记密码解决方案:(链接有具体实例)
cd转到mysqll\bin目录,输入mysql --skip-grant-tables 跳过认证表来启动mysql 服务端,这样在链接的时候就不需要输入密码了,直接输入一个mysql一个回车就行了,然后到里面取修改密码.
1 https://www.cnblogs.com/clschao/articles/9907529.html#part_4
四、设置字符集编码和设置快捷登陆操作
为什么要统一字符集编码:
为了读取和写入数据时不产生乱码.(系统的编码、客户端、服务端、库、表、列,这几项的编码都要统一才不会出现乱码的情况)
第一种方法:在插入数据之前,先执行一条指令:set names latin1;临时修改客户端字符集,让客户端插入数据的时候按照服务端的字符集编码来插入数据. 第二种方法:在配置文件里面修改客户端和服务端参数,可以实现set names latin1;的效果,并且永久生效 1.修改配置文件my.ini文件(win10,unix叫做my.cnf),这个文件是mysql启动的时候加载的一些用户自定制配置的文件 2.首先在安装目录下创建一个my.ini文件(copy一份my-default.ini文件,改名为my.ini文件),使用Notepad++打开,里面写上下面的内容,保存.
我们在我们创建的my.ini文件中写上下面几行,然后保存: [mysql] #配置客户端连接的时候,指定一下用户名和密码,那么我们在进行mysql客户端连接的时候,直接输入mysql然后回车就可以了,并且用户是我们下面指定的root用户 user=root password=666 #针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效 [client] default-character-set=utf8 #只针对mysql这个客户端的配置,3中的是全局配置,而此处的则是只针对mysql这个命令的局部配置 [mysql] user=root password=222 default-character-set=utf8
#-----------------------------------------------------------------------------
然后重启mysql服务,让配置文件生效:
C:\WINDOWS\system32>net stop mysql
C:\WINDOWS\system32>net start mysql
五、数据库指令:
SQL语句主要是针对数据库里面三个角色进行操作,对象是:库、表、行,操作包括:增删改查。
1.库(data文件夹中的文件夹,每创建一个库,这个库的名称就是文件夹的名称,文件夹里面保存着一些这个库相关的初始信息)
增:create database db1 charset utf8; #创建一个库,可以指定字符集
查:show databases; #查看数据库中所有的库
show create database db1; #查看单独某个库db1的信息
改:alter database db1 charset latin1; #修改库的字符集,注意语句的格式(其他语句也是这么个格式),alter(修改)database(修改数据库)
db1(哪个数据库)charset(字符集)latin1(改成哪个字符集)
删除: drop database db1; #删除数据库
2、表(操作文件,表是上面库文件夹里面的文件)
先切换库:use db1; #要操作表文件,要先切换到对应的库下才能操作表
查看当前所在的是哪个库:select database();
增:create table t1(id int,name char(10) )
3. 行(操作文件(表)中的内容/记录)(*****将来的重中之重)
增:insert into t1 values(1,'dsb1'),(2,'dsb2'),(3,'dsb3'); #往t1表中插入三行数据,注意你插入的每行内容都要和你创建表的时候的字段个数和字段属性对应好,注意每行数据以逗号分隔。
insert后面的into可以不用写。
查:select * from t1; #查看t1表中所有字段的数据,select 字段 from 表。
select id,name from t1;#查看t1表中的id和name列的数据,其他的不看,注意格式,每个字段逗号分隔,在cmd窗口下只是展示给我们看,将来我们通过程序获取查询数据的时候,
就可以这么获取,查询字段的顺序也是可以颠倒的,name,id这样也是可以的
改:update t1 set name='sb' where id=2; #把id为2的行(记录)中的name字段的数据改为sb;id>1;id<=1;等等都可以。后面会细讲的~~~
update t1 set name='sb',id=88 where id>2; #对两个字段进行修改
update t1 set name='sb';#如果不指定where,那么会name字段的所有数据都改成sb。
删:delete from t1 where id=1; #删除id为1的行
清空表:
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
auto_increment 表示:自增
primary key 表示:约束(不能重复且不能为空);加速查找
\c #可以清除之前输入的错误指令
在创建表的时候,我们去看一下mysql安装目录里面的data文件夹里面的db1文件夹里面的文件,然后我们执行创建表的指令,看看db1文件夹里面的变化,多了两个文件,
分别是:db1.frm,db1.ibd文件,创建了一张表为什么会多了两个文件呢,这两个文件都是啥呢?
1 1.后缀名为.frm的文件:这个文件主要是用来描述数据表结构(id,name字段等)和字段长度等信息 2 2.后缀名为.ibd的文件:这个文件主要储存的是采用独立表储存模式时储存数据库的数据信息和索引信息; 3 3.后缀名为.MYD(MYData)的文件:从名字可以看出,这个是存储数据库数据信息的文件,主要是存储采用独立表储存模式时存储的数据信息; 4 4.后缀名为.MYI的文件:这个文件主要储存的是数据库的索引信息; 5 5.ibdata1文件:主要作用也是储存数据信息和索引信息,这个文件在mysql安装目录的data文件夹下。 6 从上面可以看出,.ibd储存的是数据信息和索引信息,ibdata1文件也是存储数据信息和索引信息,.MYD和.MYI也是分别储存数据信息和索引信息,那他们之间有什么区别呢? 7 主要区别是再于数据库的存储引擎不一样,如果储存引擎采用的是MyISAM,则生成的数据文件为表名.frm、表名.MYD、表名的MYI;而储存引擎如果是innoDB,开启了innodb_file_per_table=1,也就是采用独立储存的模式,生成的文件是表名.frm、表名.ibd,如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中;
六、永久设置以管理员身份运行cmd窗口
1、创建“cmd.exe”快捷方式:
2、右击选择“属性”,选择“快捷方式”,再选择“高级”,在选择“以管理员身份运行”,
再单击“确定”。
------------------------------------------------------- -------------------------------------------------------
其他零碎补充
关于pycharm里用pip 删除下载的内容
指令: pip uninstall pymysq(删除的内容)