第十三章 数据库

目录

一、数据库

1.1 基础操作

1.1.1 连接数据库

1.1.2 指定端口

1.1.3 mysql授权语句

1.1.4 创建数据库

1.1.5 查看数据库

1.1.6 选择数据库&查看你当前使用的数据库

1.1.7 删除数据库 DROP  DATABASE;

1.1.8 创建表

1.1.9 插入表数据&查询表数据

1.1.10 删除表数据

1.1.11 更新表数据

1.1.12 删除所有表数据

1.1.13 删除表数据及表结构

1.1.14 delete、truncate、drop的区别

1.1.15 查看是否设置自动提交

1.1.16 查看表创建的语句

1.1.17 查看表字段信息

1.1.18 添加/删除表索引

1.1.19 事务

1.1.20 union、union all

1.1.21 时间相关

1.1.22 临时表

1.1.23 视图

1.1.24 存储过程

1.1.25 触发器

1.2 扩展资料

1.2.1 数据操纵语言(DML)

1.2.2 数据定义语言(DDL)

1.2.3 数据控制语言(DCL)

1.3 pymysql

1.3.1 安装pymysql

1.3.2 pymysql.connect()连接数据库函数

1.3.3 conn.cursor():获取游标

1.3.4 执行sql语句execute和executemany

1.3.5 创建数据库

1.3.6 创建数据表

1.3.7 执行单条插入语句

1.3.8 批量插入多条数据

1.3.9 查询数据

1.3.10 更新数据

1.3.11 删除数据

1.3.12 数据回滚


一、数据库

1.1 基础操作

1.1.1 连接数据库

在win-doc窗口中,连接数据库:

mysql -h127.0.0.1 -uroot -p
mysql -h127.0.0.1 -uroot -p123456
mysql -hlocalhost -uroot -p

1.1.2 指定端口

mysql -hlocalhost -uroot -P3306 -p

1.1.3 mysql授权语句

# 此语句适用于mysql5版本,若你装的是mysql8.0高版本,这样使用会报错
GRANT ALL PRIVILEGES ON test.* TO 'abuser'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 

# 报错原因:高版本数据库把创建用户和赋予权限分开了,所以高版本数据库应该按照如下步骤创建用户并授权
create user 'lappin'@'%' identified by '123456';
GRANT ALL PRIVILEGES ON test.* TO 'lappin'@'%' WITH GRANT OPTION;

# 刷新
flush privileges;

说明:
all  privileges :表示所有的权限 ,增删改查权限全部都有了
*.*: 所有的数据库下面所有的表,test.*,表示test库下面所有表
'lifuche'@'%' :test库下面所有表,所有的权限,全部都给lifuche用户  , % 表示lifuche用户可以在任意机器上面进行连接登录
identified by '123456' :远程登录连接的密码
WITH GRANT OPTION: 表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项,导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
flush   privileges:刷新权限列表

1.1.4 创建数据库

CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

说明:
CREATE DATABASE:创建数据库
IF NOT EXISTS test:如果test库不存在
DEFAULT CHARSET utf8:默认utf8字符集
COLLATE utf8_general_ci: COLLATE指规则和限制,utf8_general_ci中的ci指大小写不敏感

mysql> CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.02 sec)

1.1.5 查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

1.1.6 选择数据库&查看你当前使用的数据库

mysql> use test; # 选择数据库test
Database changed
mysql> select database();# 查看你当前用的数据库
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

1.1.7 删除数据库 DROP  DATABASE;

1.1.8 创建表

mysql> show tables;
Empty set (0.03 sec)
mysql> create table user(id int(10) primary key auto_increment,name varchar(20));
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.01 sec)

1.1.9 插入表数据&查询表数据

mysql> insert into user(id,name) values(1,"张三");
Query OK, 1 row affected (0.02 sec)

mysql> insert into user(name) values("李四"); # id是自增的,可省略不写
Query OK, 1 row affected (0.01 sec)

mysql> insert into user values(3,"王老师"); # 前面省略字段名时,values中每个字段值都要写
Query OK, 1 row affected (0.01 sec)

mysql> insert into user values(4,"吴老师"),(5,"小明"),(6,"王五");# 插入多行数据
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from user;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王老师 |
|  4 | 吴老师 |
|  5 | 小明   |
|  6 | 王五   |
+----+--------+
6 rows in set (0.01 sec)

1.1.10 删除表数据

mysql> delete from user where id = 1;
Query OK, 1 row affected (0.01 sec)

mysql> select * from user;
+----+--------+
| id | name   |
+----+--------+
|  2 | 李四   |
|  3 | 王老师 |
|  4 | 吴老师 |
|  5 | 小明   |
|  6 | 王五   |
+----+--------+
5 rows in set (0.00 sec)

1.1.11 更新表数据

mysql> update user set name="赵小明",id=10 where id = 5;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from user;
+----+--------+
| id | name   |
+----+--------+
|  2 | 李四   |
|  3 | 王老师 |
|  4 | 吴老师 |
|  6 | 王五   |
| 10 | 赵小明 |
+----+--------+
5 rows in set (0.00 sec)

 

1.1.12 删除所有表数据

1)delete from user;

2)truncate table user;

1.1.13 删除表数据及表结构

drop table user;

删除表字段

 alter table 表名 drop 字段名;

 alter table studentinfo drop status; 

1.1.14 delete、truncate、drop的区别

参考:drop、truncate和delete的区别_青青angle的博客-CSDN博客_truncate和delete的区别

1.1.15 查看是否设置自动提交

MySQL默认操作模式就是autocommit=1自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。

mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set, 1 warning (0.01 sec)

参考:关于mysql的参数autocommit_三斤和他的朋友们的博客-CSDN博客_autocommit

autocommit变量验证:

第一步:先在客户端A中执行

mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set, 1 warning (0.01 sec)

mysql>  select * from user;
+----+------+
| id | name |
+----+------+
|  1 | 一小 |
+----+------+
1 row in set (0.00 sec)

第二步:从客户端B查询表数据

第三步:然后在客户端A中执行

mysql> insert into user values(2,"小明");
Query OK, 1 row affected (0.01 sec)

第四步: 在客户端A中设置autocommit = 0,并插入一条新纪录,但不commit

mysql> set autocommit = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set, 1 warning (0.00 sec)

mysql> insert into user values(3,"小张");
Query OK, 1 row affected (0.00 sec)

第五步: 在客户端A中commit

mysql> commit;
Query OK, 0 rows affected (0.01 sec)

总结:

设定了autocommit=1后,所有的内容都被自动commit,除非写了begin,begin后的内容需要单独再commit一次才可以。
设定了autocommit=0后,所有的操作都需要commit后才会生效
如果2个终端尝试修改同一行数据,且都没有commit,第二个修改的终端则会卡死,等待第一次修改的commit。 

1.1.16 查看表创建的语句

show create table user;

mysql> show create table user;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                               |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 |
+-------+-------------------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值