当前位置:Gxlcms > 数据库问题 > Python之路(二十七):Mysql(下)

Python之路(二十七):Mysql(下)

时间:2021-07-01 10:21:17 帮助过:16人阅读

 

本结目录

  • 数据库操作
  • 数据表操作
  • 外键约束
  • 多表查询
  • 索引
  • 事务
  • python连接Mysql

数据库操作

此操作针对windows环境下

该操作再Mysql服务器启动以及客户端连接之后

对数据库操作之前,引申一些较为听的懂的白话

1 2 3 4 5 6 概念    数据库(文件夹)    数据库表(文件)    数据行(文件中的一行数据)   一个数据库就是一个文件夹

1、显示数据库

show databases;                  -- 后面记得跟英文字符的分号
show create database 数据库名称;  -- 查看数据库创建信息

默认数据库:
  mysql - 用户权限相关数据
  test - 用于用户测试数据
  information_schema - MySQL本身架构相关数据

2、创建数据库

技术分享图片
show databases;            --查看当前Mysql都有那些数据,根目录都有那些文件夹

create database 数据库名;   --创建文件夹

use 数据库名;               --使用选中数据库,进入目录

show tables;               --查看当前数据库下都有那些表

create table 表名(nidint, namevarchar(20), pwdvarchar(64));  --创建数据库表
/*阐释
相当于创建一个tb1的表 有nid,name,pwd三列
nid int 为int类型 varchar(20) 为字符类型最多20*/

select * from 表名;         --查看表中的所有数据

insert into 表名(nid, name, pwd) values(1, alex, 123);  --插入数据
技术分享图片

3、修改数据库

alter databases 数据库名称 character set utf8; -- 修改数据库编码格式

4、删除数据库

drop database [if exists] db_name;

5、用户管理

显示当前使用的数据库中所有表:show tables;

PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)

技术分享图片
show databases;

use mysql;

show tables;
可以看到mysql下有多少张表

user表是用户表

desc user; 查看user表有多少列

select host,user from user;  可以看到用户
技术分享图片 技术分享图片
创建用户
    create user 用户名@IP地址 identified by 密码;
删除用户
    drop user 用户名@IP地址;
修改用户
    rename user 用户名@IP地址; to 新用户名@IP地址;;
修改密码
    set password for 用户名@IP地址 = Password(新密码)
技术分享图片

 

数据表操作

1、创建数据表

create table 表名(
    列名  类型  是否可以为空,
    列名  类型  是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8

-- ENGINE=InnoDB 表示引擎 后为默认编码格式为utf
技术分享图片
-- 是否可空,null表示空,非字符串
not null    -- 不可空
null          -- 可空
技术分享图片
-- 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
create table tb1(
    nid int not null defalut 2,
    num int not null
)
技术分享图片 技术分享图片
-- 主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

create table tb1(
    nid int not null auto_increment primary key,
    num int null
)
或
create table tb1(
    nid int not null,
    num int not null,
    primary key(nid,num)
)
技术分享图片 技术分享图片 技术分享图片
-- 自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
create table tb1(
    nid int not null auto_increment primary key,
    num int null
)
或
create table tb1(
    nid int not null auto_increment,
    num int null,
    index(nid)
)

      -- 对于自增列,必须是索引(含主键)。
      -- 对于自增可以设置步长和起始值
 show session variables like auto_inc%;
 set session auto_increment_increment=2;
 set session auto_increment_offset=10;

 shwo global  variables like auto_inc%;
 set global auto_increment_increment=2;
 set global auto_increment_offset=10;
技术分享图片

2、查看数据表

show tables;           -- 显示当前数据库所有表

desc 表名;             -- 查看表结构

show create table 表名 -- 查看完整表创建信息

3、修改表结构

技术分享图片
--增加列(字段)
--添加多字段用逗号隔开进行

alter table 表名 add 列名 类型 [约束条件];

--删除列(字段)
--多字段删除也用逗号隔开,无需加数据类型

alter table 表明 drop 列名1,列名2...;

--修改列(字段)
    --列类型修改
    alter table 表名 modify 列名 类型 [约束条件][first|after 列名];
    --列名称修改
    alter table 表名 change 原列名 新列名 类型 [约束条件][first|after 列名];
技术分享图片

4、修改表名

rename table 原表名 to 新表名;

5、删除表

drop table 表名;

表记录操作

1、增

insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert intoset 列名=值,列名=值...;

-- insert into 表 (列名,列名...) select (列名,列名...) from 表

2、删

技术分享图片
delete from 表名 where 字段键值对;     -- 可多条多虑
delete from 表名;
truncate table 表名;

-- 如不进行筛选,则删除表的所有记录(表依旧存在)
-- delete    逐条删除,留下空表
-- truncate  先删除表,而后copy一个与之前相同的空表
技术分享图片

3、改

updateset name = Tony where id>1

-- 多条可以用逗号隔开进行修改
-- 进行筛选则单独对筛选的那部分进行修改
-- 不进行筛选,则修改所有符合的部分

4、查(*****)

select * from-- 查看表中的所有数据
select * fromwhere id > 1  -- 筛选id大于1的所有数据
select nid,name,gender as gg fromwhere id > 1 -- 查看id大于1的nid,name,gender的三个字段  as ... 表示进行别名设置
技术分享图片
A、条件
    select * fromwhere id > 1 and name != alex and num = 12; -- 筛选id>1且name不为alex且num为12的数据

    select * fromwhere id between 5 and 16; -- 筛选id值在5到16范围内的数据

    select * fromwhere id in (11,22,33)     -- 筛选id值为11或22或33的数据
    select * fromwhere id not in (11,22,33) -- 反之
    select * fromwhere id in (select nid from 表)

B、SQL通配符
    select * fromwhere name like %le%      -- 选取name包含有le的所有数据
    select * fromwhere name like ale_      -- ale开头的所有(一个字符)
    select * fromwhere name regexp "^[awv]"; -- 选取name以‘a‘、‘w‘或‘v‘开始的所有数据
    select * from tb where name regexp "^[a-c]"; -- 选取name以a到c开头范围内的所有的数据
    select * from tb where name regexp "^[^a-c]";
                        
                    

人气教程排行