一、正则表达式

正则表达式用于模糊查询,模糊查询已经讲过了 
like 仅支持 % 和 _ 远没有正则表达式灵活
当然绝大多数情况下 like足够使用

#语法
select *from table where name regexp "正则表达式"; #实例
#准备数据
create table emp (id int,name char(10),sex char,age int,dept_id int,job char(10),salary double);
insert into emp values
(1,"刘备","男",26,1,"总监",5800),
(2,"张飞","男",24,1,"员工",3000),
(3,"关羽","男",30,1,"员工",4000),
(4,"孙权","男",25,2,"总监",6000),
(10,"刘备2","男",26,2,"总监",5800),
(5,"周瑜","男",22,2,"员工",5000),
(6,"小乔","女",31,2,"员工",4000),
(7,"曹操","男",19,3,"总监",10000),
(8,"司马懿","男",24,3,"员工",6000); mysql> select *from emp where name regexp('司*');
+------+-----------+------+------+---------+--------+--------+
| id | name | sex | age | dept_id | job | salary |
+------+-----------+------+------+---------+--------+--------+
| 8 | 司马懿 | 男 | 24 | 3 | 员工 | 6000 |
+------+-----------+------+------+---------+--------+--------+ mysql> select *from emp where name regexp('懿$');
+------+-----------+------+------+---------+--------+--------+
| id | name | sex | age | dept_id | job | salary |
+------+-----------+------+------+---------+--------+--------+
| 8 | 司马懿 | 男 | 24 | 3 | 员工 | 6000 |
+------+-----------+------+------+---------+--------+--------+

二、用户管理

MYSQL 是一个tcp 服务器,用于操作服务器上的文件数据,接收用户端发送的指令, 接收指令时需要考虑安全问题

atm 购物车中的用户认证和mysql的用户认证原理是一样的,mysql中把文件称为表

在mysql自带的mysql数据库中有4个表用于用户管理的
优先级从高到低,分别是: user -> db -> tables_priv -> columns_priv

注:对用户管理进行操作后,要使用flush privileges;刷新

1.创建用户

#语法
create user 用户名@'客户端地址' identified by '密码'; #实际操作(在本地上操作)
mysql> create user xcq@'localhost' identified by '123';
Query OK, 0 rows affected (0.13 sec) #查看是否创建完成
mysql> use mysql mysql> select *from user \G;
************************** 4. row ***************************
Host: localhost
User: xcq
Password: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
#但此时的用户没有任何的权限

2.授权

#语法
grant 全部[all]/权限名称[select(字段名),updata(字段名),alter(字段名),delete(字段名)] on 数据库名.表名 to 用户名@'主机地址'; #可以访问 所有库和表
grant all on *.* to xcq@"localhost" identified by "123";
#可以访问day42库的所有表
grant all on day42.* to xcq@"localhost" identified by "123";
#可以访问day42库的emp表
grant all on day42.emp to xcq@"localhost" identified by "123";
#仅能查看和添加 day42库的emp表中的 id和name字段
grant select(id,name),insert(id,name) on day42.emp to xcq@"localhost" identified by "123"; #all可以给用户添加除了grant(赋予权限)以外的所有权限
#如果想把拥有的权限赋予别人
#使用 with grant option
#如果授权时,被授权的用户不存在,直接创建用户
grant 全部[all]/权限名称[select(字段名),updata(字段名),alter(字段名),delete(字段名)] on 数据库名.表名 to 用户名@'主机地址' with grant option;

3.删除权限

#语法
revoke 权限的名称 on 数据库名.表名 from 用户名@'主机地址'; #实例
revoke all on *.* from xcq@'localhost';

4.删除用户

#语法
drop user 用户名@"主机地址"; #实例
drop user xcq@'localhost';

注:每次对用户进行操作都要刷新权限flush privileges;

三、pymysql模块

1.pymysql

python编写的mysql客户端
pip install pymysql

2.基本使用

import pymysql

#1.链接数据库
conn=pymysql.Connect(
host='127.0.0.1',#服务器地址
user='root',#用户名
password='root',#密码
database='day41',#数据库名称
port=3306,#端口号,可选
charset='utf8'#编码,可选
) #2.获取游标对象
cursor=conn.cursor(pymysql.cursors.DictCursor) #3.sql语句
sql='select *from emp' #4.执行语句
res=cursor.execute(sql)#返回执行的行数
print(res) # fetchall\fetchone\fetchmany 获取查询结果
# print(cursor.fetchall())#全部取出来 # print(cursor.fetchone())#每次取一个,然后游标往下一位
# print(cursor.fetchone())#每次取一个,然后游标往下一位
#
# print(cursor.fetchmany(1))#取的时候指定行数
# print(cursor.fetchall())#将剩下全部取出来 #scroll 游标移动
# cursor.scroll(1,'relative')#个数与模式。relative相对位置;absolute绝对位置 #5.关闭游标
cursor.close() #6.关闭链接
conn.close()

3.commit和rollback

import pymysql

#1.链接数据库
conn=pymysql.Connect(
host='127.0.0.1',#服务器地址
user='root',#用户名
password='root',#密码
database='day41',#数据库名称
port=3306,#端口号,可选
charset='utf8'#编码,可选
) #2.获取游标对象
cursor=conn.cursor(pymysql.cursors.DictCursor) #3.sql语句
sql='insert into emp value(15,"黄月英","女","市场","员工",4500)' #4.执行语句
res=cursor.execute(sql)#返回执行的行数
print(res) cur=cursor.fetchall()
for i in cur:
print(i) #撤销数据,只要数据还没提交,都可以撤销
#conn.rollback() #提交数据,因为pymysql 默认是启用事务,对记录操作的sql语句如果不提交,不会执行。
#但是对于库和表得操作会默认提交
conn.commit(); #5.关闭游标
cursor.close() #6.关闭链接
conn.close()

05 数据库入门学习-正则表达式、用户管理、pymysql模块的更多相关文章

  1. Linux学习之用户管理命令与用户组管理命令(十五)

    Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...

  2. 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】

    MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...

  3. 数据库04 /多表查询、pymysql模块

    数据库04 /多表查询.pymysql模块 目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 2.1 inner join 内连接 2.2 left join 左连接 ...

  4. MySQL数据库(五)--用户管理、pymysql模块

    一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv > columns_pri ...

  5. MySQL数据库(五)—— 用户管理、pymysql模块

    用户权限管理.pymysql模块 一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv ...

  6. 子查询,用户管理,pymysql使用

    当我们的一条记录 分散不同的表中时,就需要进行多表查询例如 一对一 一对多 多对多 1.笛卡尔积查询 意思就是将两个表中的所有数据 全部关联在一起例如A表有两条 B表有三条 一共有6条会产生大量的错误 ...

  7. Oracle数据库——常用命令(用户管理、数据库导入导出)

    --==cmd控制台==-- --==日常用户管理SQL==-- --连接到SQLPLUS >sqlplus /nolog --以dba身份连接 sql>conn / as sysdba ...

  8. oracle 学习笔记--用户管理

    oracle 用户管理 创建用户(需要具有dba权限的用户) create user 用户名 identified by 密码 defaule tablespace users     //默认表空间 ...

  9. Python11/23--mysql用户管理/pymysql

    1.mysql用户管理 定义:数据安全是很重要的,不能随便分配root账户,应该按照不同开发岗位分配不同的账户和权限 mysql中将用户相关的数据放在mysql库中 user→db→tables_pr ...

随机推荐

  1. form表单提交参数封装

    function getFormValues(element,options) { var data = {}; if(element == null || element == undefined) ...

  2. My97DatePicker基本用法

    网址:http://my97.net/demo/index.htm 网址:http://www.my97.net/ My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 1.下载M ...

  3. delphi XE7 判断手机返回键

    Using the Android Device's Back Button To make your application handle when users press the Back but ...

  4. AS3 注意点

    当主类new 一个主影片来放内容的时候.在gc此swf时,一定要检查此主影片是否存在,如 private function initStart() { //trace("RightMenu类 ...

  5. Ubuntu下面网络固定ip

    https://jingyan.baidu.com/article/e5c39bf5bbe0e739d7603396.html

  6. eclipse新建maven项目出现红叉解决办法

    新建的maven项目,项目内代码及pom.xml没有任何问题,但项目上就是有红叉,这时点开Markers(Window–>show veiw–>Markers),查看错误的详细信息,信息上 ...

  7. html标签对应的英文原文(转载)

    标签  对应英文 说明 <!--> / 注释 <!DOCTYPE> document type 文档类型 <a> anchor 超链接 <abbr> a ...

  8. 37. Sudoku Solver (Array;Back-Track)

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  9. 可重入函数reentrant function

    可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数:而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能 ...

  10. 【校招面试 之 C/C++】第26题 C++ 智能指针(二)之 share_ptr

    1.综述 shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. shared_ptr 是为 ...