05 数据库入门学习-正则表达式、用户管理、pymysql模块
一、正则表达式
正则表达式用于模糊查询,模糊查询已经讲过了
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模块的更多相关文章
- Linux学习之用户管理命令与用户组管理命令(十五)
Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...
- 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】
MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...
- 数据库04 /多表查询、pymysql模块
数据库04 /多表查询.pymysql模块 目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 2.1 inner join 内连接 2.2 left join 左连接 ...
- MySQL数据库(五)--用户管理、pymysql模块
一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv > columns_pri ...
- MySQL数据库(五)—— 用户管理、pymysql模块
用户权限管理.pymysql模块 一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv ...
- 子查询,用户管理,pymysql使用
当我们的一条记录 分散不同的表中时,就需要进行多表查询例如 一对一 一对多 多对多 1.笛卡尔积查询 意思就是将两个表中的所有数据 全部关联在一起例如A表有两条 B表有三条 一共有6条会产生大量的错误 ...
- Oracle数据库——常用命令(用户管理、数据库导入导出)
--==cmd控制台==-- --==日常用户管理SQL==-- --连接到SQLPLUS >sqlplus /nolog --以dba身份连接 sql>conn / as sysdba ...
- oracle 学习笔记--用户管理
oracle 用户管理 创建用户(需要具有dba权限的用户) create user 用户名 identified by 密码 defaule tablespace users //默认表空间 ...
- Python11/23--mysql用户管理/pymysql
1.mysql用户管理 定义:数据安全是很重要的,不能随便分配root账户,应该按照不同开发岗位分配不同的账户和权限 mysql中将用户相关的数据放在mysql库中 user→db→tables_pr ...
随机推荐
- js改变div高度
用bootsrap响应式布局的时候,遇到个很恶心的问题:左边栏很短很难看!! 于是,想用js来自动改变左边的高度,没成功!!原来是设置的时候,没加单位,坑爹了. 参考:http://blog.sina ...
- can't load package the specified module could not be found
can't load package the specified module could not be found 用 Dependency Walker 2.2Dependency Walker ...
- 前端开发-2-HTML
1.开发环境 市面上有很多的HTML编辑器可以选择,常见的Hbuild.Sublime Text.Dreamweare都可以用来开发HTML. 当然PyCharm也支持HTML开发. 2.文件后缀名规 ...
- inline和inline-block的间隙问题
我们在前端布局的时候,会偶尔发现,在具有inline/inline-block属性的元素间存在一小段间隙,网上有些文章说这个间隙是6px,但我觉得应该是一个空格的宽度. 这里以inline-block ...
- sql server 2000能否得到一个表的最后更新日期?
如果是SQL 2005 或 2008.运行下面的代码.就可以看到从上次启动SQL 服务以来,某个表的使用情况,包括select/update/delete/insert. SELECT * FROM ...
- 查看android sha1
Android百度定位SDK自v4.0版本之后开始引入了百度地图开放平台的统一AK验证体系.通过AK机制,开发者可以更方便.更安全地配置自身使用的百度LBS资源(如设置服务配额等).随着LBS开放平台 ...
- FP真验货客户的成品和半成品编码部分没有带尾续,导致FP规划错误 IN_SALES_ORDER数据不带CZ
错误描述:真验货客户的成品和半成品编码部分没有带尾续,导致FP规划错误 IT角度: IN_SALES_ORDER数据不带CZ 现时前台页面数据: 现时后台数据: 一.跟进情况 1.执行SAP_SALE ...
- sqldatareader无法得到output参数的解决
只需要在所有的sqldatareader结束后,加上一句就可以得到输出参数了. sdr.Close(); Object ObjCount = cmd.Parameters["@Count_P ...
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Weixin' did not find a matching property.
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclips ...
- zoj1003-Max Sum (最大连续子序列之和)
http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) Mem ...