干货|Sqlite数据库知识必知必会(下篇)

大家好,我是IT共享者,人称皮皮。

前面几天给大家分享了MySQL数据库知识,没来得及看的小伙伴可以前往:Mysql查询语句进阶知识集锦,一篇文章教会你进行Mysql数据库和数据表的基本操作,关于数据库的安装可以参考:手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug。

上篇文章主要给大家介绍了Sqlite数据库的安装、图形化管理系统、基本数据类型、基本关键字和数据库的相关操作,干货|Sqlite数据库知识必知必会(上篇),今天皮皮紧接上篇文章,继续给大家分享数据库知识,一起来看看吧。

前言

前面我们学习了很多数据库,虽然它们功能非常丰富,但是占用空间比较大,使得我们的系统负荷变大,这对于我们新手小白来说不是一个理想的选择,于是乎,Sqlite闪亮登场,它受人喜爱的真正原因正是因为它足够小,无需安装和管理配置,简单容易上手,支持数据库的大小也有2TB,足够我们个人开发爱好者使用了。

一、数据表相关操作

1).创建数据表

CREATE TABLE student (
ID INTEGER DEFAULT '1406061' PRIMARY KEY AUTOINCREMENT NOT NULL,
NAME NVARCHAR(100)  UNIQUE NOT NULL,
score INTEGER  NOT NULL,
time TIMESTAMP  NOT NULL
);

我们可以使用SqliteAdmin快速生成表,如下:

干货|Sqlite数据库知识必知必会(下篇)

干货|Sqlite数据库知识必知必会(下篇)

这样我们的表就建立成功了。这里小编在软件中用的是DEMO这个数据文件,而在命令窗口中用的是TEST这个数据库文件,因为一个数据库文件不允许在两个位置打开的缘故。

2).删除表

DROP TABLE people;

3).显示表名

.tables
干货|Sqlite数据库知识必知必会(下篇)

4).数据表的增删改查

1)).增加

这里我们可以给刚创建的表添加一个数据,如下:

insert into student(ID,NAME,score,time) values(1406063,'任性的90后boy',90,'2020-07-06 12:23:32');
干货|Sqlite数据库知识必知必会(下篇)

这里我插入了三行数据,其中有一行报错是因为我使用了相同的ID号,而我的数据库的ID号是不允许重复的,故而会报错,改成其它的就好了,如果你把ID设为自增的话,就不需要你去写了,这里我用到了自增,所以大家不必写Sqlite会自动填充进去的。这里也可以省掉字段名,直接写值,如下:

干货|Sqlite数据库知识必知必会(下篇)

我们还可以给表添加新列,如下;

alter table people add  column aa char(10);#添加列并且列名为aa

注:Sqlite3并不支持带有UNIQUE约束的列

2)).删除

delete from people;#删除表数据
delete from people where score<20#删除people数据表score数值小于20的记录

3)).修改

其实就是更新操作,如下;

update people set score=100 where  age=46;#当age=46时score设置为100

4)).查找

查找不管是在哪个数据库中方法都是相当多的,因为查询操作是最常见也是最频繁的,下面我们就来详细说说:

1))).查询所有的结果

select * from student;
干货|Sqlite数据库知识必知必会(下篇)

我们可以看到虽然结果打印出了,但是并不是那么美观,我们将它的打印格式化一下,如下;

干货|Sqlite数据库知识必知必会(下篇)

这下就完美多了。虽然这种方法很不错,但是如果数据列很多的话就无法完全显示了,这个时候我们就需要设置列的宽度,如下:

.width 10 20 15

2))).查询指定结果

select NAME,score from student; #打印出NAME和score列的结果
select * from people where score<20 and age<40;#当score小于20并且age小于40的时候
select *from people where score between 10 and 30;#当score为10~30之间时
select *from people where NAME LIKE '放大%';#当name的开始处含有放大
select *from people where NAME glob '放大*';#与上同
select *from where score not in(12,23);#当score不属于12~23

3))).查找排序

select * from people order by score desc; #对score降序排序

4))).查找指定数量的数据

select * from people  limit 3 offset 2#偏移2个单位然后输出三行数据,其实就是输出后三行数据

5))).查找重复数据并消除

select distinct * from people where score>10;#当score大于10的时候消除重复数据

6))).查找数据并进行分组

select NAME ,max(age) from people where score>10 group by age#返回score大于10的时候age的最大值

7))).查找数据进行分组并过滤分组

select NAME ,max(age) from people where score>10 group by age having count(NAME)>1;#名称计数大于1

5).表的重命名

alter table people rename to man;#将表名people改为man
干货|Sqlite数据库知识必知必会(下篇)

6).数据表的连接

这里的连接分为内外交叉三种连接,使用好了可以极大提高我们的工作效率。这里我们再次创建一张表,如下:

干货|Sqlite数据库知识必知必会(下篇)

1)).交叉连接

select * from people cross join woman;
干货|Sqlite数据库知识必知必会(下篇)

2)).内连接

select * from people inner join woman;

3)).外连接

select * from people outer join woman;

注:Sqlite3只支持左外连接。

7).表的复制

create table man as select * from people where 1=0;#复制表结构
create table woman as select * from people;#复制表结构和数据

8).临时表

有时候我们不需要存储所有表的数据,这个时候临时表就很有使用的必要了。如下:

#创建一个临时表
create  temporary table temp_table(
    id int primary key,
    name varchar(50) unique not null,
    age int not null
);


#查看临时表
temp.temp_table


#删除临时表
drop table temp.temp_table;

5.索引操作

1).创建索引

create index user on people(score);#在people表的score字段上设置索引
create unique name on people(NAME);#在people表的score字段上设置唯一索引
create index pa on people(score,age)#在people表的score和age字段上设置索引

2).查看索引

SELECT * FROM sqlite_master WHERE type = 'index';
干货|Sqlite数据库知识必知必会(下篇)

这里我们之前仅仅只是创建了一个索引,那就是”user“,为何会有两个索引了,而且最上面的索引好像跟我们并没有什么关系,也不像是自己创建的,其实,这个就是隐式索引,这个隐式索引在我们创建表的时候就连带着一起创建了的,只是为了让查询更加快速而已,影响不大。

3).使用索引

这里涉及到两个关键字请配套使用,表示索引来自于哪里的意思。

select * from people indexed by user where score>10;

4).删除索引

drop index user;

注:数据量较小不应使用索引,以免给系统增压。

6.视图操作

1).创建视图

create view name as select NAME from people;#创建NAME字段的视图

2).使用视图

select *from name;
干货|Sqlite数据库知识必知必会(下篇)

这样就可以直接输出视图字段的所有值了。

3).删除视图

drop view name;

7.触发器

触发器就是使得多个表的交互增强,互相调用,满足条件就调用哪个表,语法格式如下:

create trigger 触发器 after(before) insert(delete update)
on1
begin
insert into2(表2字段,表2字段,n) VALUES(表1值, 表1值,,,,n);
END;

1).创建触发器

#给people表创建一个触发器
create trigger cf
after insert on people
begin
insert into woman(w_ID,NAME,SCORE,date) values(new.ID,'向前插入',100,datetime('now'));
end;

2).查看触发器

select * from sqlite_master where type = 'trigger'AND tbl_name='people';#查看people表的触发器

3).删除触发器

drop trigger cf;

8.事务

有了事务可以让我们的Sqlite语句工作的更加有条不紊,一般大致分为事务开始 提交 回滚 结束,下面来看看:

begin;#开始
insert into people('gf',65,datetime('now'));
rollback; #回滚就是撤销
COMMIT;提交保存数据
end;#结束

这里的数据没有插入到“people”表中哦,是不是超级简单了?

二、总结

这篇文章主要介绍了Sqlite数据库的数据表、索引、视图、触发器和事务操作知识,干货满满。

皮皮自从学过Sqlite之后,就果断卸载了Mysql和Mongo了,主要是目前还用不着Mysql数据库和Mongo那么强大的数据,够用就好。

我是皮皮,如果觉得文章不错,记得三连噢,大家有问题也可以点击下方的图片,加我好友,交个朋友也好呀~

干货|Sqlite数据库知识必知必会(上篇)

大家好,我是IT共享者,人称皮皮。

前面几天给大家分享了MySQL数据库知识,没来得及看的小伙伴可以前往:Mysql查询语句进阶知识集锦,一篇文章教会你进行Mysql数据库和数据表的基本操作,关于数据库的安装可以参考:手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug,今天皮皮继续给大家分享数据库知识,但是换了一个主角,它就是Sqlite。

前言

前面我们学习了很多数据库,虽然它们功能非常丰富,但是占用空间比较大,使得我们的系统负荷变大,这对于我们新手小白来说不是一个理想的选择,于是乎,Sqlite闪亮登场,它受人喜爱的真正原因正是因为它足够小,无需安装和管理配置,简单容易上手,支持数据库的大小也有2TB,足够我们个人开发爱好者使用了。

一、安装

既然要学Sqlite,首先我们先安装它们,前面我们说过,安装它们无需太多过程,即免安装,下载地址:

https://u062.com/dir/7715018-39794633-fbf2ca

我们下载好后直接将Sqlite的应用程序加入到环境变量中即可随意使用了,打开CMD,看到这种字样,表示安装成功,如图:

二、图形化界面管理

Sqlite已经安装上了,但是在命令提示符窗口操作总感觉不美观,小编想这时候应该需要一个图形界面工具来操纵Sqlite,这样就能更直观的显示数据了,这里我推荐SqliteAdmin,中文版的界面再加上简洁的界面设计,如图:

注意,此时的软件还无法正常工作,因为它还没有可以解析Sqlite语句的动态链接库,所以你还需要下载个动态链接库,这里小编已经准备好了下载地址了,下载后直接复制到软件的目录即可,下载地址:

https://u062.com/file/7715018-452195159

三、基本语法

Sqlite不像其它的数据库以“;”结尾,而且它是以“.”开头使得式子成立的。打开我们的SqliteAdmin,下面开始我们的装逼之旅。

1.数据类型

Null         空值
SMALLLINT    短整型
INTEGER      带符号的整数 这个就是布尔类型 0(false)和 1(true)
TINYINT      长整型
REAL         浮点值
TEXT         大量文本字符串
BLOB         二进制对象       
NUMERIC      使用所有五个存储类的值
VARCHAR(n)   变动长度字符串,只能存英文,最多8000个字符
CHAR(n)      固定长度字符串
DATA         年月日
TIME         时分秒
DOUBLE       双精度浮点数
FLOAT        单精度浮点数
TIMESTAMP    存储年月日时分秒
NCHAR        存储Unicode数据类型的固长字符串 ,可存英文汉字,做多4000个字符
NVARCHAR 存储Unicode数据类型的变长字符串
NTEXT        存储Unicode数据类型的大量文本字符串
DATATIME     存储日期时间

其实它的数据类型远不止这些,更多的数据类型需要大家发掘,这里小编列举只是常用的数据类型罢了。

2.基本关键字

了解了数据类型,在创建数据库时用于操作时需要配套使用的关键字当然也必须得了解,这样才能提高开发效率。

AND   




BETWEEN  最小值和最大值之间




EXISTS 判断是否存在




IN  判断某个值是否属于另一个值




NOT IN 判断某个值是否不属于另一个值




LIKE 使用通配符比较值与另一个值 不区分大小写 %(表示零个,一个或者多个)  _(表示一个)




GLOB  使用通配符将值与类似值进行比较,并区分大小写的 *(表示零个或多个)     ?(表示一个)




LIMIT  限制满足条件的值的数量




ORDER BY 排序  ASC(升序) | DESC(降序)




GROUP BY  数据聚合




HAVING   过滤分组,使用前一定要使用GROUP BY




DISTINCT   消除所有重复记录






NOT  不,常和in一起用




OR   




IS NULL  判断是否等于空值,类型运算符




IS  相当于‘=’




IS NOT  判断是否不等于 相当于“!=”




UNIQUE    不重复


UNION     消除所有重复行


UNIONALL  不消除重复行


WHERE   用于满足某个条件时


SELECT  选择


FROM   来自


INSERT INTO 插入表数据


PRIMARY Key  主列


DEFAULT 默认值


CHECK 检查

3.数据库相关操作

1).创建数据库文件

首先我们要创建一个数据库文件,以“.db”结尾的文件,如下:

我们还可以在命令提示符里面创建数据库,如下所示:

这样就创建了一个”test”的数据库文件了,我们创建之后我们就进入了”test”数据库中了,然后就可以进行其它操作了。

2).查看数据库

.database   .databases 两者即可

3).退出数据库

.quit

4).导出数据库

sqlite3 test.db .dump > test.sql

5).创建附加数据库

ATTACH DATABASE 'test1.db' as 'test1';
ATTACH DATABASE 'test2.db' as 'test2';

上述操作是将所有数据库数据都存放在了数据库文件“test.db”中了,不过实际开发中不建议这么做,建议多做几个数据库,或者将数据库嵌入到其它数据库中。

6).显示附加数据库

.database   .databases 两者即可

7).分离数据库

DETACH DATABASE 'test1';

四、总结

这篇文章主要介绍了Sqlite数据库的安装、图形化管理系统、基本数据类型、基本关键字和数据库的相关操作,介绍了创建数据库、查看数据库、退出数据库、导出数据库、创建附加数据库、显示附加数据库和分离数据库的方法,干货多多。下一篇文章继续给大家分享Sqlite数据库的数据表、索引、视图、触发器和事务操作知识,敬请期待!

Mysql查询语句进阶知识集锦

前言

上次咱们简单的学习了一下select的用法,一篇文章教会你进行Mysql数据库和数据表的基本操作,对数据库大概有了一些基本的了解。

咱们接着上次继续来看叭!

查询

数据如下

or查询

我们在上学时,会听到这样的话,某某某,你把谁谁谁或者谁谁谁叫过来。

这样子的话,我们我们要查询的,就是一个或(or)的关系了。

or查询只有满足一个条件即可

sql

-- 语法
SELECT * from student WHERE <条件> or <条件> ...;
-- 例如,查询姓名为张三的或者姓名为小刘的数据
SELECT * from student WHERE name="张三" or name="小刘";

执行结果

不等于(!=)查询

上述我们查询的,都是等于(=)操作,但是我们在上学时,还会有这种情况。

某个学生学习可好,背东西背的可快,放学的时候可能就人家一个人过了,这时候老师可能就说

除了某某某,其他学生本篇文章全部抄3遍,淦。。。

所以这时候就是反过来的查询的,只需要排除某个人即可!

sql

-- 语法
SELECT * from student WHERE <条件>;
-- 例如,查询姓名不是张三的其他人,排除张三
SELECT * from student WHERE name!="张三";

执行结果

in/not in查询

学生们还都是年轻人,年龄大概都在20来岁,这时候老师说,班长,把年龄在19,20,21的人统计一下!

根据上述我们学过的知识,可能你是这样婶的。

SELECT * from student WHERE age=19 or age=20 or age=21;

执行结果

通过三个or找到,其实这样也没错,但是还有一种更简单的。

sql

-- 语法
SELECT * from student WHERE <列名> in (值1,值2,...) ...;
-- 例如,需求同上
SELECT * from student WHERE age in (19,20,21);

执行结果

not in 就是不在这个范围的数据啦!

sql

-- 查询年龄不在19,20,21范围的数据
SELECT * from student WHERE age not in (19,20,21);

执行结果

between查询

between适合进行范围查询!

sql

-- 语法
select * fromwhere <列> between <开始范围> and <结束范围>;
-- 例如,查询年龄时20-22岁的学生
SELECT * from student WHERE age BETWEEN 20 and 22;

执行结果

同理,between还能用在时间上。

select * from <表名> where <时间列> between <开始时间> and <结束时间>

模糊查询(like)

假设现在数据如下,有三个姓张的。

老师可能突然有一天对你说,班长,把咱们姓张的列出来,我找他们谈点事,咋办???

我们只需要找,是以张开头的,后面是啥无所谓。

所以就要用到like模糊查询。

sql

-- 语法 %表示匹配一个或多个字符
select * fromwhere <列> like '[%]<字符串>[%]'
-- 例如,查询,以张开头的
SELECT * from student WHERE name like "张%";

执行结果

同理,这个%可以放在任意位置,他就是充当不确定的字符使用的,能够自动匹配一个或多个

例如

... WHERE name like "张%丰";
匹配:张三丰
WHERE name like "%鱼";
匹配:张甲鱼
WHERE name like "李%";
匹配:李四
...

限制(limit)

限制这个有点怪异,还是图片举例比较好。

数据如下

sql

-- 前两行
SELECT * from student LIMIT 2;

-- 从第2行开始后,再取4行
SELECT * from student LIMIT 2,4;
-- 同上,写法不同
SELECT * from student LIMIT 4 OFFSET 2

排序(order by)

不知道你有没有发现,我们之前查找的顺序都是正向的。

但是会有个问题,我们新增的数据,其实id是最大的,理论来说,应该要排在最前面。

所以,应该是倒序的是最好的。

sql

-- 语法
select * from <表名> order by <列> asc -- 从小到大排序
select * from <表名> order by <列> desc -- 从大到小排序
select * from <表名> order by <列1> desc,<列2> asc -- 先根据 列1 排序,如果数据相同,按照 列2 排序

例如

根据id正向排序

SELECT * from student ORDER BY id ASC;

执行结果

根据id反向排序

SELECT * from student ORDER BY id desc;

执行结果

hhh,这样我们就把数据反过来了!!!

分组(groupby)

分组,这个可能是难为了一批人,其实分组的核心,在于理解这个压缩这个概念。

假设数据如下

性别有男有女,如果我想知道,男的有多少个,女的有多少个怎么办???我总不能数吧。。。

所以这时候,如果能吧,男的都拿出来,女的都拿出来,就像这样!

然后我对拿出来进行压缩成一条。

如果这个你懂了,那分组就懂了。

语法

SELECT <列>,COUNT(<列>) from student GROUP BY <列>;
-- 因为分组了某个列,所以就不能再展示其他列的信息了,因为压在一块了,显示不了
-- 但是可以通过count,sum等函数计算压缩的个数,或者总值

例如

统计男女各多少人

SELECT gender,COUNT(gender) from student GROUP BY gender;

执行结果

统计同一年龄多少人

SELECT age,COUNT(age) as "数量" from student GROUP BY age;

执行结果

注意:group by必须在where之后,order by之前。

总结

本篇主要讲述的是Mysql查询语法,再单表查询中,基本上就上述这么些的内容,但是从理论到事件,是需要时间的。

一定要勤加练习,什么是or查询,like查询注意事项,尤其是group by分组查询,一定要多多思考和联系。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

不要轻易改变自己,因为你可能就是世界上那颗未加工的最亮的钻石。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。

感谢你的观看。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

一篇文章教会你进行Mysql数据库和数据表的基本操作

通常情况下,我们都是通过mysql.exe(客户端),连接mysql服务的。

但是有个问题。

  • 第一个问题就是太丑了。
  • 第二个问题是因为这不会自动提示啊…,早都习惯了各种自动提示工具,在用这么Low的

安装

下一步下一步就可以了!!!

破解

管理员运行PatchNavicat

打开之后,游览到安装Navicat for MySQL的目录,完成即可。

新建查询

连接好之后,点击查询,再点击新建查询,就可以写SQL了。

关于Mysql的一些概念理解

需要先理清一个概念,Mysql不是数据库。

我们连接的是Mysql服务,不是数据库

所以当别人听到连接数据库时,其实指的是连接跑起来的Mysql服务。

数据库的理解

数据库可以理解为文件夹

通过show DATABASES;命令查看自己下面有哪些数据库

再切换到<mysql安装位置>\data下。

同样可以发现有这个几个文件夹

如果再<mysql安装位置>\data新建一个文件夹

再通过show DATABASES;命令查看当前有哪些数据库,可以发现确实多了刚才新建文件夹(数据库)。

所以就得出了一个结论,数据库其实就是一个文件夹。

数据表的理解

数据库相当于文件夹,那数据库里面放的,就是数据表了。

表内容

其实会发现,数据表Excel很相似。

Excel有啥数据表也有啥。

通常都是表头(蓝色框),表内容(红色框)

总结

数据库就是一个个文件夹

数据表是不能单独存在的,需要放在数据库中,xlsx举例使用。

数据库又分表头,表内容,,

数据库相关命令

查看当前Mysql下的数据库

命令

show DATABASES;

结果

使用数据库

使用数据库的意思就是。

数据库其实就是一个个文件夹,使用数据库就是进入这个数据库,相当于进入到这个文件夹里里面。

命令

use <数据库名字>;
# 例如 use <mysql> 进入mysql这个数据库,

在日常使用中,要操作哪个数据库里面的表,一定要use 这个数据库

创建数据库

命令

CREATE DATABASE <数据库名称> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 示例,创建一个school数据库
CREATE DATABASE school DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

执行结果

删除数据库

DROP <数据库名称>
# 示例,删除 school 数据库
DROP school

数据表相关命令

记得一定要use 数据库,进入数据库才能操作表。

创建表

格式

create table 表名(
    列名  列类型  [其他参数1 其他参数2 ...],
    列名  列类型  [其他参数1 其他参数2 ...]
...
)ENGINE=InnoDB DEFAULT CHARSET=utf8

其他参数包括有

  • 是否可以为空
  • not null — 不可空
    null — 可空
  • 默认值
  • defalut 2 — 默认2
  • 自增自增一般用在id上,并且只能有一个自增列,插入时不需要管这个列,会自动添加值。
  • auto_increment — 自增
    — 虽然自增加这一个关键字就行了,但是由于主键是不能为空的,所以要配合其他关键字
    not null auto_increment primary key
  • 主键主键,一种特殊的唯一索引,不允许有空值。如果主键使用单个列,则它的值必须唯一。如果是多列,则其组合必须唯一。

  • primary key(nid,num)
  • 外键
  • constraint fk_cc foreign key (color_id) references color(nid)

其他参数一一对应上就行了。

示例

创建一个老师表

create table teacher(
    id  int not null auto_increment PRIMARY key,
    teacher_name varchar(16) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8

查看数据库有哪些表

命令

show TABLES;

结果

删除表

drop table <表名>

清空表

delete from <表名>
truncate table <表名>

总结

其实这章讲的还是比较简单的,在使用Mysql时,一定要注意一个问题,就是sql后面一定要加一个;

这章主要讲的是数据库的操作数据表的操作。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

敬往事一杯酒,自此不再回头。

手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug

前言

Hey,大家好,我是码农星期八,似乎还没有更新过关于Mysql的相关文章,同时也是因为工作需要,一起来学学叭。

数据库种类

常见的数据库有Mysql,Oracle,SQLite,Access,MS SQL Server。

这时候可能有人一看,what?数据库这么多,我要全部都学吗???,学这么多需要多久,是不是又是几个月。。。

我的回答是,只要学好Mysql,学会其他都是分分钟的事,数据库很多东西都是相似的,基本可以照搬使用。

需要说明的是,我们学习的是SQL语法,Mysql,Oracle只是软件,SQL语法可以让我们和这些软件进行交流,实现各种功能。

本次系列就以常用的Mysql进行讲解。

安装

下载

地址
:https://dev.mysql.com/downloads/mysql/

注意的是,这个地址是最新版本的下载地址。

但是通常情况下,我们可能选择老版本的可能性会比较大,毕竟兼容性更强,BUG更少。

历史版本下载地址

地址
:https://downloads.mysql.com/archives/community/

本教程以Mysql 5.7.27版本,win7 32位系统操作,下载的是ZIP Archive版本

各位下载就好了,这里就不做举例了!!!

下载好,解压

下载好之后,放一个有意义的目录,并且进行解压。

我一般会将软件放在其D:/programeFile文件夹下,所以这次还放到这。

初始化

如果上述都完成之后,需要进行初始化,需要cmd进到刚才的mysql-5.7.27-winx64\bin目录下。

执行命令

mysqld.exe --initialize-insecure

执行结果

如果初始化时出现…MSVCP120.dll…错误

如果出现这个错误,在这里只需要安装Visual C++ Redistributable Packages for Visual Studio 2013就行。

安装包vcredistx86x64.zip

下一步下一步就好了, 安装好之后再执行mysqld.exe –initialize-insecure即可。

将Mysql制作成服务

这里要说明一下,mysqld.exe是服务端,运行mysqld.exe,相当于Mysql服务端跑起来了客户机才能远程连接,进行各种操作。

还有一个是mysql.exe,这个是客户端,用这个来连接跑起来的mysqld.exe服务。

如上所说,我们只需要将mysqld.exe跑起来,其实就可以对外提供服务了

但是只一个黑洞洞的窗口,不是太好看,如果我们将它制作成服务,就静默在后台运行了。

还是切换到<数据库安装目录>/bin目录下。

执行命令

mysqld.exe --install

执行成功效果

如果提示Install/Remove of the Service Denied!

如果提示这个,说明权限不够,使用管理员方式打开cmd,切换到数据库安装目录,再执行上述命令即可。

服务已经安装成功

启动/关闭 Mysql服务

上述都完成之后,我们还需要两条命令。

# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql

连接Mysql服务

如果上述都完成,那你的Mysql服务必定启动

我们来尝试一下连接服务器。

上述我们说到,mysqld.exe才是服务端,并且我们也将mysqld.exe制作成了服务静默跑在后台。

mysql.exe才是客户端,需要连接服务端(做成服务的mysqld.exe)

还是在<数据库安装目录>/bin下

执行命令

mysql.exe -u root -p

如果如图所示,就表示成功连接Mysql服务端。

总结

本次文章主要讲述如何进行安装Mysql,并且使用的版本是5.x的版本。

不是最新的版本,就是为了防止一些不可预估的情况。

并且我们将Mysql制作成了服务,还是永远直接启动的,开机自启的,这就方便了下次连接。

最后我们使用Mysql提供的客户端进行连接测试,发现是没问题的,并且用户名默认root,没有密码。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

敬往事一杯酒,自此不再回头。我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止[解决方案]

这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动。可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错。

1、其中一个是:Windows无法启动MySQL57服务(位于本地计算机上)错误1067:进程意外终止,报错如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

2、紧跟着还有一个报错:本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止,报错如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

3、之后即便我垂死挣扎,在命令行窗口中不断的重启MySQL服务,但是仍然没有戳到痛点,尝试的步骤有下图为证。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

4、随后想当然的硬上进入MySQL,根本就不可能,只能撞南墙,败兴而归。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

5、后来也想过直接通过点击“我的电脑>管理>服务>MySQL”,收到启动MySQL,但是丝毫没有改观。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

6、经过一番尝试之后,还是行不通。无奈之下,不断的寻找blog,终于找到了一个可行的方法,但是代价也是很大的,基本上是给MySQL洗心革面了。如果小伙伴们的原始MySQL中有重要的数据的话,不建议使用这种方法;如果觉得已经在数据库中的数据无关紧要或者不小心遇到了这个问题,那就可以大胆的使用这种方法,只不过是重头再来,具体的解决步骤如下。

首先务必使用管理员权限进入到命令行、务必使用管理员权限进入到命令行、务必使用管理员权限进入到命令行,重要的事情说三遍,不然的话就会出现“发生系统错误 5。 拒绝访问。”这样的错误,如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

7、之后进入到MySQL安装目录下,找到bin目录,这个过程是必须的。这个过程很简单,一路上使用cd命令和dir查看目录文件的命令相互结合,直到进入到bin目录下为止。一般来说,MySQL的安装默认路径是:C:\Program Files\MySQL\MySQL Server 5.7\bin,大家可以做下参考。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

8、之后进行初始化data目录。如果在与bin目录同级的文件夹下没有data文件夹的话,则创建一个data空目录,名字务必为data。如果有该目录的话,记得要清空data目录下的所有初始文件,就酱紫。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

9、之后到bin目录下执行命令(管理员身份打开命令行窗口):mysqld –initialize,如下图所示。初始化大概需要20秒左右的时间,静观其变即可。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

之后就可以看到MySQL服务顺利启动。

而且在状态栏的MySQL Notifier中也会弹出提示,如下图所示,MySQL的状态变为从停止变为启动。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

10、此时通过命令行窗口再次登录数据库(命令为:mysql –u root -p)就可以顺利进入了,但是输入你之前的历史遗留的密码并不好使了,而且会报错,报错为:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES),如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

这是因为MySQL初始化之后,生成了一个初始密码,放在了data文件夹下以.err为后缀的文件夹下,如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

11、此时,通过电脑自带的记事本打开文件,是不太行得通的,通过sublime text就可以顺利打开了,以“password”为搜索项,很快就定位到初始密码了,如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

这个密码是随机生成的,而且相对复杂,可以直接复杂粘贴到命令行窗口。

12、将初始化密码进行复制,粘贴到MySQL登录的密码中去,如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

此时可以看到,顺利进入到了MySQL。

13、但是直接输入MySQL的简单命令之后,发现并不能操作数据库,会提示报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.,如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

14、这个报错的意思是告诉你重设密码,此时只需要输入命令重新设置密码即可。至于MySQL重设密码的方法网上有很多,在这里不展开讲述了,小编用的语法是:alter user ‘root’@’localhost’ identified by ‘123456’;,其中123456是重设的密码,大家可以自定义的,顺利设置完成之后记得刷新权限:flush privileges;,尔后你就可以正常操作数据库了。该步骤的具体操作过程如下图所示。

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

至此,问题完美的解决了,希望对日后不慎踩入此坑的小伙伴们有帮助~~

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】

相信有些小伙伴在使用数据库的过程中会经常频繁的启动和停止MySQL服务,有时候会出现“服务正在启动或停止中,请稍候片刻后再试一次。”这样的提示,如下图所示。

MySQL服务正在启动或停止中,请稍候片刻后再试一次「解决方案」

于是乎想办法去解决这个问题,但是发现连强制的数据库初始化都无济于事,而且在任务管理器的进程下也无法找到mysqld的相关进程,不能强制性的结束进程。即便在计算机服务列表中有MySQL这个服务,但是根本就不存在让其停止或者启动的按钮,似乎是“人间蒸发”一般,不复存在,确实让人无计可施。

MySQL服务正在启动或停止中,请稍候片刻后再试一次「解决方案」

不过不用慌,小编在经历过多次失败的尝试之后,终于迎来了成功,踩坑过程就不再赘述了,将整理好的顺利操作分享给大家,以免少走弯路,具体的教程如下。

首先以管理员身份打开命令行窗口,注意是管理员身份,不然无权限访问。之后输入命令“tasklist| findstr “mysql””,用于查找mysql的残留进程。果不其然,确实存在mysql的残留进程,难怪一直提示MySQL服务处于正在启动或者停止的状态中,此时要做的就是杀死MySQL进程。之后输入命令“taskkill/f /t /im mysqld.exe”,就可以将mysql残留进程全部杀死了,再次输入命令“tasklist| findstr “mysql””,查看是否还留有有其他的mysql残留进程,如果还有,则继续杀死,直到完全杀死进程为止,如下图所示。

MySQL服务正在启动或停止中,请稍候片刻后再试一次「解决方案」

当mysql残留进程全部结束之后,我们就可以正常启动MySQL服务了,如下图所示。需要注意的是此时还是要以管理员的身份进入命令行窗口。

MySQL服务正在启动或停止中,请稍候片刻后再试一次「解决方案」

由上图,我们可以看到此时便可以顺利的访问数据库了。如果不放心的话,可以继续测试一下,先停止MySQL服务,然后再次尝试启动和进行访问,如下图所示。

MySQL服务正在启动或停止中,请稍候片刻后再试一次「解决方案」

可以看到MySQL此时可以做到正常的启动和停止服务了。

最后给大家一个小提醒,如果将本地的数据库文件直接拷贝到数据库中的话,在拷贝之前务必保证MySQL数据库服务处于停止的状态,待文件拷贝完成之后,再尝试启动MySQL服务,此时便可以顺利在数据库中访问拷贝过来的数据库文件了,比直接在数据库中导入数据要快的多,尤其是导入上亿条的大数据,使用这种方法事半功倍。

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在Navicat中如何新建数据库和表并做查询

上一篇文章,小编给大家分享了在Navicat中如何远程连接数据库,没有来得及上车的小伙伴可以戳这篇文章:在Ubuntu14.04中配置mysql远程连接教程。今天小编给大家分享一下如何在Navicat中新建数据库和表。

用过远程连接数据库工具的小伙伴都知道,在Navicat中新建数据库和表并不太难,具体的教程如下所示。在这里依然以IP地址为192.168.255.131的主机数据库为例。

1、首先登陆Navicat,然后顺利连接数据库,如下图所示。

在Navicat中如何新建数据库和表并做查询

2、在IP地址为192.168.255.131数据库上右键,然后点击“新建数据库”,如下图所示。

在Navicat中如何新建数据库和表并做查询

3、之后弹出“新建数据库”对话框,在“常规”选项卡中需要设置数据库名、字符集和排序规则。

在Navicat中如何新建数据库和表并做查询

4、正常情况下,建议数据库名字以英文命名,字符集选择utf8, 排序规则选择utf8_general_ci。在这里将数据库名命名为scrapyspider,字符集选择utf8,排序规则选择utf8_general_ci,如下图所示。设置完成之后点击“确定”。

在Navicat中如何新建数据库和表并做查询

5、之后可以看到scrapyspider数据库创建成功,点击scrapyspider数据库,可以看到此时尚未创建任何的表。

在Navicat中如何新建数据库和表并做查询

6、在左侧选项卡点击“表”,然后右键点击选择“创建新表”,之后将弹出下图的新建表界面

在Navicat中如何新建数据库和表并做查询

7、在“名”这一栏添加字段,之后选择类型和长度,设置小数点和是否允许空值,如下图所示。如果想增加字段,则点击“添加栏位”即可。

在Navicat中如何新建数据库和表并做查询

8、下图中,作为演示。添加了time、name和id三个字段,并将id设置为主键,如下图所示。

在Navicat中如何新建数据库和表并做查询

9、设置完成之后,按下快捷键Ctrl+s,保存设置的内容,弹出表名菜单,如下图所示。在表名窗口中需要输入表名,在这里将表命名为article,之后点击确定即可。

在Navicat中如何新建数据库和表并做查询

10、保存之后,可以看到表名由之前的“无标题”变成了现在的article,并且可以看到所设置的字段。

在Navicat中如何新建数据库和表并做查询

11、接下来在字段中输入内容。在time字段下输入时间,在nam字段下输入dcpeng,将id字段设置为1.设置完成之后按下快捷键Ctrl+s,保存设置,如下图所示。

在Navicat中如何新建数据库和表并做查询

12、在Navicat的选项卡中点击“查询”,然后点击“新建查询”,之后弹出查询窗口,如下图所示。当前并未输入任何的SQL语句。

在Navicat中如何新建数据库和表并做查询

13、在查询窗口中输入SQL语句进行搜索,如下图所示,试图查询article表中的数据。SQL语句写完之后,点击“运行”选项卡,之后查询到的结果将会在同一个窗口下进行显示,如下图所示。

在Navicat中如何新建数据库和表并做查询

14、当然了,右键点击article,可以看到关于表格的操作还有许多,在此就不赘述了。

在Navicat中如何新建数据库和表并做查询

关于Navicat中的建库、建表和简单查询的教程已经完成,希望对大家的学习有帮助。

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在Ubuntu14.04中配置mysql远程连接教程

上一篇文章,小编带大家学会了在Ubuntu14.04中安装MySQL,没有来得及上课的小伙伴们可以戳这篇文章:如何在Ubuntu14.04中安装mysql,今天给大家分享一下,如何简单的配置MySQL,可以实现远程连接,具体的教程如下。

1、mysql的配置文件在/etc/mysql/my.cnf中,如下图所示。配置文件中的内容很丰富,我们可以看到mysql的用户、监听端口号、数据文件存储目录等。

在Ubuntu14.04中配置mysql远程连接教程

2、通过cat命令,查看my.cnf中的内容。如下图所示,在my.cnf配置文件中,bind-address默认的IP为127.0.0.1,表示只限于本机IP进行连接。如果没有配置mysql,则利用Navicat或者其他远程连接工具是无法连接到该数据库的。

在Ubuntu14.04中配置mysql远程连接教程

3、为了让外边的其他的IP正常访问到,需要设置bind-address对应的IP为0.0.0.0。使用vi或者vim,编辑my.cnf配置文件,配置完成之后如下图所示。

在Ubuntu14.04中配置mysql远程连接教程

4、更改完配置文件my.cnf之后,需要对mysql进行重启,输入命令:sudo service mysql restart,如下图所示。

在Ubuntu14.04中配置mysql远程连接教程

输入进程查看命令,可以看到mysqld进程已经存在,说明mysql启动成功。

5、接下来,通过Navicat来远程连接数据库。通过ifconfig查看IP。可以看到IP地址为192.168.255.131。

在Ubuntu14.04中配置mysql远程连接教程

6、打开Navicat,然后点击新建连接,如下图所示。

在Ubuntu14.04中配置mysql远程连接教程

7、点击“连接测试”,弹出下图界面。说明连接测试失败,原因是我们还尚未给mysql远程连接授权。Mysql的权限问题是十分严谨的,即便我们已经开放了IP地址,但是我们尚未给root用户授权,因为还是连接失败。也就是说,我们给root用户授权之后,日后在IP地址为非127.0.0.1的情况下,也能够正常访问数据库。如果没有设置的话,默认除了本地localhost连接过去的连接可以被接受之外,其他外部的IP连接过去是无效的。尽管它们的IP是在0.0.0.0上进行绑定的,但是仍然没有权限。

在Ubuntu14.04中配置mysql远程连接教程

8、接下来,我们继续进入到Ubuntu中的mysql。

在Ubuntu14.04中配置mysql远程连接教程

9、输入远程授权命令,语法模板如下:grant all privileges on 库名.表名 to ‘用户名’@’IP地址’ identified by ‘密码’ with grant option;

这里,小编根据自己的情况,在Ubuntu命令行中输入命令: grant all privileges on *.* to ‘root’@’% ‘ identified by ‘123456’ with grant option;

*.*是正则表达式,代表对所有表进行授权;root代表root用户;%代表所有的外部IP;123456代表密码。

如下图所示:

在Ubuntu14.04中配置mysql远程连接教程

10、授权之后,输入命令:“flush privileges;”以刷新权限,如上图所示。之后便可以退出mysql数据库了。

11、此时,再去Navicat中再次尝试连接测试,如下图所示。此时可以看到测试连接成功。

在Ubuntu14.04中配置mysql远程连接教程

12、点击确定,之后在Navicat主页面中可以看到IP地址为192.168.255.131的数据库已经在Navicat中了。

在Ubuntu14.04中配置mysql远程连接教程

13、双击左侧192.168.255.131数据库,可以看到数据库信息。之后就可以在Navicat中远程操作数据库了,与Ubuntu中的数据库是同步的。

在Ubuntu14.04中配置mysql远程连接教程

至此,在Ubuntu中配置mysql和设置mysql远程连接已经完成,小伙伴们学会了吗?

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在Ubuntu14.04中如何安装mysql

接触过MySQL的小伙伴们都知道,在Windows下安装MySQL是一件让人十分头大的事情,但是在Ubuntu等其他Linux系统中安装MySQL就简单很多了,具体的教程如下。

1、在Ubuntu的命令行中输入MySQL安装命令“sudo apt-get install mysql-server”,如下图所示。

如何在Ubuntu14.04中安装mysql

2、MySQL安装进行中,等待安装完成。

如何在Ubuntu14.04中安装mysql

3、如果之前已经安装过MySQL的话,此时如果碰到有新版本的MySQL,会出现需要配置的情况,如下图所示。

如何在Ubuntu14.04中安装mysql

这里如果不设置新密码的话,则密码和之前的MySQL一致;如果你想设置新的密码,则输入新密码即可。

4、在这里重新设置新密码,接下来弹出再次输入新密码的窗口,如下图所示。设置完成之后,点击“ok”即可。

如何在Ubuntu14.04中安装mysql

5、之后按照程序继续进行,如下图所示。

如何在Ubuntu14.04中安装mysql

6、等待MySQL安装完成,完成之后,如下图所示。

如何在Ubuntu14.04中安装mysql

7、此时通过命令:ps aux | grep mysqld,进行查看,看mysql是否已经启动。

如何在Ubuntu14.04中安装mysql

可以看到mysql已经启动,并且在左侧可以看到mysql的进程号为6391。

8、mysql启动完成之后,可以在命令行中输入命令:mysql –u root –p,之后输入之前设置的密码,即可进入到MySQL数据库。

如何在Ubuntu14.04中安装mysql

9、接下来就可以正常使用MySQL了,增删改查等操作都可以正常进行,如下图所示。

如何在Ubuntu14.04中安装mysql

10、如果想退出MySQL数据库,直接输入“exit”或者“quit”即可,如下图所示。

如何在Ubuntu14.04中安装mysql

至此,在Ubuntu中安装MySQL就已经完成了,小伙伴们有没有觉得比Windows下的MySQL安装更简单呢?

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】