python3数据库MySQL语句(入门)

3 篇文章 0 订阅
2 篇文章 0 订阅
  • 目录:


一、数据库的分类和比较


二、安装


三、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个不同值
数据类型日期时间类型:(格式)
yearYYYY
dateYYYY-MM-DD
timeHH:MM:SS
datetimeYYYY-MM-DD HH:MM:SS
timestampYYYYMMDDHHMMSS
级联动作说明
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 byasc 为升序,默认。desc 为降序
显示限制limit限制显示记录个数。m : m+1 条开始。n : 显示 n 条记录

六、python 数据库编程

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值