当前位置:博客首页 > Python > 正文

第22课 Mysql数据库教程

作者: Jarvan 分类: Python,数据库 发布时间: 2019-07-30 10:33 百度已收录

一、数据库启动、停止、创建、删除

#启动mysql
#  net start MySQL57
#停止mysql
#  net stop MySQL57

# create database [数据库名]; 比如:create database xiaoshuo;
create database xiaoshuo default character set utf8;  # 创建数据库名,并设置对应的编码为utf8

# 选择数据库:
# use 数据库名;
use xiaoshuo;

二、数据库表新建、插入

# 新建数据库表:
# create table 表名(
#  表字段信息
# ) 字符集和数据库引擎信息;

# 例子:
CREATE TABLE posts(
id int primary key  auto_increment,  # 设置id字段为主键,并且自增
author varchar(30),  # 作者 最大长度是30个字符
title varchar(200) not null unique,  # 标题 最大长度是200个字符,不能为空,是唯一的
content text not null ,  # 内容,文本类型最大64k,不能为空
time datetime default current_timestamp()  # 发布时间,默认值是当前的时间
) default  character set utf8 ENGINE InnoDB; # 数据库引擎是用InnoDB 可以省略。

alter table posts default character set utf8;  # 更改数据表的字符集为utf8
# 插入数据:
# INSERT INTO 表名(字段名)VALUE (字段值); VALUE则是插入一条数据
# INSERT INTO 表名(字段名)VALUES (字段值),(第二条数据),(第三条数据)...;
VALUES则是可以插入多条数据
# 例子:
insert into posts values
(4, 'jack', '设置MYSQL数据库编码为UTF-8', '设置MYSQL数据库编码为UTF-8的内容',
    '2018-10-15 14:24:50');  # 没有指定插入的列的时候,就需要填完所有的数据
insert into posts(author, title, content) VALUE('jarvan', '这是标题', '这是内容');
# 一次性插入多条数据:
insert into posts(author, title, content)
values ('xiaohong', 'python大法好', 'Python是真的很棒'),
       ('xiaoming', 'java大法好', 'Java比Python牛多了'),
       ('laowang', 'php大法好', 'php是世界上最好语言');

三、数据库表的查询、模糊查询、排序、指定条数条件、统计条数

# 查询数据:
# select 字段名 from 表名 [条件]; # 字段名星号代表所有
select * from posts;
select author, title, content from posts;  # 只查询作者,标题,内容
select * from posts where author = 'jarvan';  # 查询jarvan发布分文章信息
# 查询jarvan和xiaohong发布的文章 in是代表集合
select author, title, content from posts where author in('jarvan', 'xiaohong');

select * from posts where author != 'jarvan';  # 查询非jarvan发布的文章

# 模糊查询 like %字符%
select * from posts where title like '%大法好%';  # 查询标题包含大法好的文章

select * from posts where title like '%大法好';  # 查询标题中以大法好结尾的数据

# 排序 order by 字段名 desc/asc desc 降序,asc 升序
select * from posts order by id desc;
select * from posts where title like '%大法好%' order by id desc;

# 查询指定条数的数据
# limit n 表示查询结果不多于n行
# limit n,m 表示从第n行开始(不包含n这行),查询m条数据
select * from posts limit 4;  # 查询前面4条数据
select * from posts order by id desc limit 4;  # 查询后面4条数据
select * from posts where id > 3 limit 2;  # 查询id大于3的2条数据
select * from posts limit 3,2;  # 同上
select * from posts where content like '%Python%' and author='xiaohong';

# 统计条数,as是字段别名关键字
select COUNT(*) as total from posts where author='jarvan';

——————————————补充———————————————
# 多条件删除,如下面市里,筛选出包含"批发"的关键词中,不包含'许可|证|资质|执照'中的任何一个的词

select * FROM baidu_relatekw WHERE keyword REGEXP '批发' and keyword not REGEXP '许可|证|资质|执照';

四、更改数据、删除数据

# 更改数据
# 语法 update 表名 set 字段名=字段值 条件
update posts set title='python大法好啊,是真的吗' where author='xiaohong';

# 删除数据
# delete from 表名 条件
delete from posts where author='laowang';