python3数据库MySQL语句(入门)

  • 目录:

    • 一、数据库的分类和比较
    • 二、安装
    • 三、Mysql服务(shell)
      • (一)XAMPP下
      • (二)Linux下
    • 四、授权
    • 五、语法基础
      • (一)分类
      • (二)事务
        • 1. 事务启动
        • 2. 事务存点
        • 3. 事务点回滚
        • 4. 事务点删除
        • 5. 事务提交
        • 6. 事务回滚
        • 7. 事务隔离
      • (三)库语句
        • 1. 创建库
        • 2. 删除库
        • 3. 查看已有的库
        • 4. 使用库
        • 5. 查看当前所在的库
        • 6. 查看存储引擎
        • 7. 查看库搜索路径
        • 8. 查看库的字符编码
      • (四)表语句
        • 1. 表层
          • 1)查看库中表
          • 2)查看表创建时信息
          • 3)查看表结构
          • 4)删除表
          • 5)修改表名
          • 6)创建表
        • 2. 索引
          • 1)创建索引
          • 2)添加索引
          • 3)查看索引
          • 4)删除索引
          • 4)添加主键
          • 5)删除主键
          • 6)添加外键
          • 7)删除外键
        • 3. 表导入、导出、复制
          • 1)导入
          • 2)导出
          • 3)复制
      • (五)字段语句
        • 1. 增加字段
        • 2. 修改字段名
        • 3. 修改字段类型
        • 4. 修改字段类型及名称
        • 5. 修改字段默认值
        • 6. 删除字段
      • (六)记录语句
        • 1. 插入记录
        • 2. 查看记录
        • 3. 修改记录
        • 4. 删除记录
        • 5. select查询的条件格式和执行顺序
    • 六、python 数据库编程


一、数据库的分类和比较

  • 数据库的分类和比较详情地址

二、安装

  • MySQL安装

    • 直接安装 (www.mysql.com/downloads)

    • 集成安装(XAMPP软件)

  • 图形化管理工具

    • phpMyAdmin
      免费软件 (官网下载地址)

    XAMPP软件已集成phpMyAdmin

    • Navicat
      收费软件 (官网下载地址)

三、Mysql服务(shell)

(一)XAMPP下

  • 启动步骤:

    打开XAMPP
    启动Apache(Start)
    启动MySQL(Start)

  • 打开MySQL图形界面:

    XAMPP中MySQL项的 Admin

(二)Linux下

1. 查看运行状态

sudo /etc/init.d/mysql status

2. 启动、停止、重启

sudo /etc/init.d/mysql start

sudo /etc/init.d/mysql stop

sudo /etc/init.d/mysql restart

3. 连接、退出

mysql -h主机IP -u用户名 -p
或
mysql -hlocalhost -uroot -p

exit  或  quit  或  \q

4. 修改密码

mysqladmin -u用户名 -p旧密码 password 新密码

5. 数据库备份

mysqldump -h 主机IP -u root -p 源库名 [表名1,...,表名n] > 路径/新库名.sql
或
mysqldump -h 主机IP -u root -p --all-databases > 路径/新库名.sql
或
mysqldump -h 主机IP -u root -p -B 源库名1,...,源库名n > 路径/新库名.sql

6. 库导入(恢复)

mysql -u 用户名 -p 目标库名 [目标表名] < 路径/备份库名 [表名].sql
或
mysql -u用户名 -p --all[或one]-database 目标库名 < 路径/备份库名.sql

四、授权

1. 查看授权用户

select  user  host  from  mysql.user;

2. 新增用户并授权

grant 类型1 on 库名.表名 to '用户名'@'类型2' identified by '[密码]' [with grant option];
类型1 作用
select 选择
insert 插入
update 更新
delete 删除
类型2 作用
IP地址 要登陆主机的IP地址
localhost 本机
% 任意主机
with grant option 允许再授权

创建一个可以从任何地方连接服务器的一个完全的超级用户:

grant all privileges on *.* to user@localhost  identified by '密码' [with grant option];

3. 添加授权用户

create user '用户名'@'登录主机IP' identified by '密码';

4. 删除授权用户

drop user '用户名'@'登录主机IP';
或
delete from user where user='用户名' and host='%';

5. 删除授权

revoke all privileges on 库名.表名 from '用户名'@'%';

6. 重新加载权限表

flush privileges;

五、语法基础

(一)分类

  • DDL(数据定义语句)

    定义(创建)表/数据库:
    CREATE TABLE/DATABASE
    
    修改表/数据库:
    ALTER TABLE/DATABASE
    
    删除(覆盖)表/数据库:
    DROP TABLE/DATABASE
    
  • DML(数据管理语句)

    INSERT 新增
    DELETE 删除
    UPDATE 修改
    SELECT 查询
    

(二)事务

1. 事务启动

begin;start transaction;

2. 事务存点

    savepoint 存点名;

3. 事务点回滚

    rollback to 存点名;

4. 事务点删除

    release savepoint 存点名;

5. 事务提交

commit;

6. 事务回滚

rollback;

7. 事务隔离

    set 字段名='隔离级别';
语句 隔离级别
read-uncommitted 读未提交:能读取各事务未提交的内容
read-committed 读已提交:仅读取各事务提交的内容
repeatable-read 可重复读:事务提交前不读取其他事务提交的内容
serializable 可串行化读:前一事务未提交后一事务无法提交

(三)库语句

1. 创建库

    CREATE DATABASE '库名' [default charset=utf8];

2. 删除库

    drop  database  库名;

3. 查看已有的库

SHOW DATABASES;

4. 使用库

    USE '数据库名';

5. 查看当前所在的库

select  database();

6. 查看存储引擎

show engines;

7. 查看库搜索路径

show variables;

8. 查看库的字符编码

    show create database 库名;

(四)表语句

1. 表层

1)查看库中表
show tables;
2)查看表创建时信息
show create table 表名;
3)查看表结构
desc 表名;
show columns from 表名;
4)删除表
drop table 表名;
5)修改表名
alter table 原表名 rename to 新表名;
6)创建表
create table 表名
(
字段名1 数据类型1 [not null], 
字段名1 数据类型1 [null], 
字段名2 数据类型2 [primary key] [auto_increment[=初始值]],
字段名n 数据类型n(值) [default 默认值] 

[index(字段名1), index(字段名n)] [或unique(字段名1), unique(字段名n)]

[foreign key(字段名) references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作]
)
[default charset='默认字符集']
;
语句 说明
null 允许字段值有空记录
not null 不允许字段值有空记录
default 默认约束
index 普通索引
unique 唯一索引
primary key 主键
foreign key 索引
auto_increment 主键自增长初始值
default charset 默认字符值,设定字符集为 default charset=utf8
数据类型 数字(分默认的有符号,无符号unsigned,自动补零zerofill)
int[(总长)] [unsigned] [zerofill] 普通整数值,总长默认为11。有符号范围(-2147483648, 2147483647),无符号范围(0, 4294967295)
tinyint[(总长)] [unsigned] [zerofill] 小整数值,总长默认为4。有符号范围(-128, 127)、无符号范围(0, 255)
smallint[(总长)] [unsigned] [zerofill] 小整数值,总长默认为6。有符号范围(-32768, 32767)、无符号范围(0, 65535)
mediumint[(总长)] [unsigned] [zerofill] 大整数值,总长默认为9。有符号范围(-8388608, 8388607)、无符号范围(0, 16777215)
bigint[(总长)] [unsigned] [zerofill] 极大整数值,总长默认为20。有符号范围 (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807)、无符号范围(0, 18 446 744 073 709 551 615))。
float[(总长,小数位)] [unsigned] [zerofill] 单精度浮点数值:(-3.402 823 466 E+38,-1.175 494 351 E-38)和0和(1.175 494 351 E-38,3.402 823 466 351 E+38)、(1.175 494 351 E-38,3.402 823 466 E+38), 最多显示7个有效位
double[(总长,小数位)] [unsigned] [zerofill] 双精度浮点值:(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308)和0和(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)、(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) ,最多显示15个有效位
decimal[(总长,小数位)] [unsigned] [zerofill] 小数值:DECIMAL(M,D) ,如果M>D,为M+2否则为D+2。最多显示28个有效位
数据类型 字符(字符串:字节)
char() 定长,0-255
varchar() 变长,0-65535
tinyblob() 二进制,0-255
blob() 二进制长文本,0-65535
tinytext() 短文本,0-255
text() 长文本,0-65535
mediumblob() 二进制中长文本,0-16777215
mediumtext() 中长文本,0-16777215
longblob() 二进制极大文本,0-4294967295
longtext() 极大文本,0-4294967295
数据类型 枚举类型:(值以 , 分隔)
enum() 多选,可65535个不同值
set() 单选,可64个不同值
数据类型 日期时间类型:(格式)
year YYYY
date YYYY-MM-DD
time HH:MM:SS
datetime YYYY-MM-DD HH:MM:SS
timestamp YYYYMMDDHHMMSS
级联动作 说明
cascade 数据级联更新。当主表删除记录 或者 更新被参考字段的值时,从表会级联更新。
restrict 默认值。当删除主表记录时,如果从表中有相关联记录则不允许主表删除;更新同上。
set null 当主表删除记录时,从表中相关联记录的参考字段值自动设置为null;更新同上。
no [on delete no action on update no action] 同理 restrict

2. 索引

1)创建索引
create index 索引名 on 表名(字段名(数据类型));
2)添加索引
在修改表结构中添加索引:
alter table 表名 add index 索引名(字段名);
或
创建索引的值必须是唯一的:
alter table 表名 add unique 索引名(字段名);
或
指定索引为全文索引:
alter table 表名 add fulltext 索引名(字段名);
3)查看索引
desc 表名;
或
show index from 表名[\G];
4)删除索引
drop index 索引名 on 表名;
4)添加主键
alter tavle 表名 modify 字段名 数据类型 not null;alter table 表名 add primary key(字段名);

注意:键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空。

5)删除主键
alter tavle 表名 modify 字段名 数据类型;
或
alter table 表名 drop primary key;

注意:先删除自增长属性,再删除主键。

6)添加外键
alter table 表名 add foreign key(参考字段名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作;
7)删除外键
alter table 表名 drop foreign key 外键名;

3. 表导入、导出、复制

1)导入
1. 在数据库中创建对应的表(Mysql)

2. 将要导入的文件拷贝到数据库默认搜索路径(shell)
    sudo cp /etc/passwd /var/lib/mysql-files/

3. 执行数据导入语句(Mysql)
    load data infile '绝对路径文件名'
    into table 表名
    fields terminated by '分隔符'
    lines terminated by '\n';

查看数据库的默认搜索路径:
show variables like ‘secure_file_priv’;
chmod 666 表名.csv # 增加权限

2)导出
select  库名1,...,库名n  from  表名
into  outfile  '路径文件名.txt'
fields  terminated  by  '分隔符'
lines  terminated  by  '\n';
3)复制
create table 表名 select 查询命令;
或
复制表结构:
create table 表名 select 查询命令 where false;

(五)字段语句

1. 增加字段

alter table 表名 add 字段名 类型 [其他];

2. 修改字段名

alter table 表名 rename 字段名 类型 ;

3. 修改字段类型

alter table 表名 modify 字段名 新类型;

4. 修改字段类型及名称

alter table 表名 change 原字段名 新字段名 类型;

5. 修改字段默认值

alter table 表名 alter 字段 set default 新值;
或
alter table 表名 alter 字段 drop default;
或
alter table 表名 alter 字段 modify 字段 类型 not NULL default 值;

6. 删除字段

alter table 表名 drop 字段名;

(六)记录语句

1. 插入记录

insert into 表名[(字段1, ..., 字段n)] values(记录1, ..., 记录n);

2. 查看记录

select * from 表名 [条件];
或
select [distinct] 字段1, ..., 字段n, from 表名 [条件];

distinct : 不显示字段的重复值

3. 修改记录

update 表名 set 字段名1=新值1,... 字段名n=新值n  [where 条件];

4. 删除记录

delete from 表名 [where 条件];

5. select查询的条件格式和执行顺序

3. select  字段[或聚合函数(字段名)]  from  表名
1. [where  条件]
2. [group  by  条件]
4. [having  条件]
5. [order  by  条件]
6. [limit  条件];
类型 语句 函数/说明
聚合函数 select 函数([distinct] 字段名) [as 新结果名] from 表名 avg:求平均值。sum:求和。max:求最大值。min:求最小值。count:统计记录个数。distinct:不显示字段的重复值。
条件 where 字段名 from 表名 运算符 条件 运算符:数值比较:=、!=、>、>=、<、<=。字符比较:=、!=。逻辑比较:and、or。范围比较:between 值1 and 值2 ; in(值1, …, 值n) ; not(值1, …, 值n)。匹配(非)空: is [not] null。模糊比较:like ‘%’ # _ 为单个字符, % 为0到多个字符。正则表达式匹配:regexp ‘正则表达式’。
去重 group by 字段名 分组去重。先分组,再聚合,后去重。
再筛选 having 字段名 运算符 条件 对查询结果进一步筛选。通常用于过滤group by语句返回的记录集。
排序 order by asc 为升序,默认。desc 为降序
显示限制 limit 限制显示记录个数。m : m+1 条开始。n : 显示 n 条记录

六、python 数据库编程

  • python3数据库编程(MySQL)详情地址

你可能感兴趣的:(python,数据库,mysql)