MySQL数据库的终结_python中数据库的操作终结

1.什么是数据库:

数据库是按照数据结构来组织存储和管理数据的仓库

2.mysql用户设置:

(1).进入数据库:mysql -u root -p 然后输入密码:xxxxx

(2).里面有个user表存储的就是表的信息: desc user;

(3)创建用户

1.INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)

VALUES ('主机名', '用户名', PASSWORD('密码'), '', '', '');

由于 mysql 数据库的 user 表中,ssl_cipher、x509_issuer 和 x509_subject 这 3 个字段没有默认值,

所以向 user 表插入新记录时,一定要设置这 3 个字段的值,否则 INSERT 语句将不能执行。

在8.0的版本里面已经不支持password函数加密了可以使用MD5或者其他的函数进行加密

2.CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限

使用这个创建用户时必须有INSERT 权限或全局 CREATE USER 权限。

3.GRANT 设置权限(SELECT,INSERT,UPDATE,DELETE,CREATE,DROP) ON 权限范围(数据库.表) TO 参数指定新用户的账号,由用户名和主机名构成; [IDENTIFIED BY [加密方式] '密码']

8.0后不支持这种方式创建,要先创建用户用上面俩种方式在设置权限

eg:create user '牛魔王'@'localhost' identified by '123456';

grant all on *.* to '牛魔王'@'localhost' ;

在注意需要执行最后FLUSH PRIVILEGES 语句

(4)删除用户 Delete FROM user Where User='xxx' and Host='xxx';

数据库的常用操作:

1.use 数据库; 使用某个数据库

2.show databases; 查看mysql中的所有数据库

3.show tables;查看某个数据库的所有表

4.SHOW COLUMNS FROM 数据表: 显示莫格表的属性

5.desc 数据表

6.create database 要创建的数据库名称 charset "utf8"; 创建数据库并且指定可使用的编码;

7.drop database 数据库名称 ;#删除数据库

8.SHOW INDEX FROM 数据表:显示数据表的详细索引信息,包括PRIMARY KEY(主键)

mysql在python的操作:

第一步利用connect()函数链接数据库,并且返回数据库链接对象

数据库链接对象里面的方法与属性:

1.cursor():打开游标

2.close():关闭数据库

3.commit():提交事务

4.rollback():回滚事务

5:in_transaction:判断是否还在事务中

6.isolation_level:返回或者设置数据库链接中的事务的隔离等级

第二步:获取游标

游标对象的方法:

1.execute(要执行的sql语句):执行一条sql语句

2.executemany(要执行的sql语句,几次):重复执行sql语句

3.executescript(要执行的sql语句):执行多条sql语句(不是2.0的标准方法)

4.fetchone():查询下一跳条,如果没有了放回None

5.fetchmany():查询下M行组成列表

6.fetchall():查询所有的行组成的列表

7.close()关闭游标

游标对象的属性:

1.rowcount:返回受sql影响的行数:

2.lastrowid:获取最后修改的rowid

3.arraysize:用于设置或者获取fetchmany()默认获取的条数

4.description():用于查询最后一次查询放回所有列的的信息

5.connection:放回创建游标的数据库链接对象

第三步:执行利用游标sql语句

第四步:关闭游标

第五步:关闭数据库链接对象

1.创建表:CREATE TABLE 表名 (column_name column_type);

eg:

c.execute('''create table order_tb(

order_id int primary key auto_increment,

name varchar (255),

pass varchar (255),

gender varchar (255)

)''')

c.execute("""

create table order_tb(

order_id integer primary key auto_increment,

item_name varchar (255),

item_price double,

item_number double,

user_id int,

foreign key(user_id) references user_tb(user_id)

)

""")

# 4.关闭游标

c.close()

# 5.关闭链接

conn.close()

2.插入语句 :INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );

eg:

import mysql.connector

# 1.连接数据库,mysql必须现在mysql服务器上创建数据库

conn = mysql.connector.connect(user='root', password='123456', host='localhost'

, port='3306', database='python')

# 2.获取游标

c = conn.cursor()

# 3.执行sql语句

c.execute('insert into user_tb values (null ,%s,%s,%s)', ('孙悟空', '12345', 'male'))

c.execute('insert into order_tb values (null ,%s,%s,%s,%s)',

('鼠标', '32.2', '3', 7))

# 4.关闭游标

c.close()

# 5.提交事务

conn.commit()

# 6.关闭链接

conn.close()

3.查询:

SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ] [LIMIT N]

你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

你可以使用 LIMIT 属性来设定返回的记录数。

import mysql.connector

# 1.连接数据库,mysql必须现在mysql服务器上创建数据库

conn = mysql.connector.connect(user='root', password='123456', host='localhost'

, port='3306', database='python')

# 2.获取游标

c = conn.cursor()

# 3.执行sql语句

c.execute('select * from user_tb where user_id>%s',(1,))

for col in (c.description):

print(col[0], end='\t')

print('\n---------------------------------------')

for row in c:

print(row) # 游标本身就是一个可迭代对象

# 4.关闭游标

c.close()

# 5.关闭链接

conn.close()

4.更改 :UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

import mysql.connector

# 1.连接数据库,mysql必须现在mysql服务器上创建数据库

conn = mysql.connector.connect(user='root', password='123456', host='localhost'

, port=3306, database='python, charset='utf8')

# 2.获取游标

c = conn.cursor()

# 3.执行sql语句

c.execute('update user_tb set name="猪八戒",pass="2222" where user_id =%s',(7,))

# 4.关闭游标

c.close()

# 5.关闭链接

conn.commit()

conn.close()

5.删除:DELETE FROM table_name [WHERE Clause]

6.模糊查询:

SELECT field1, field2,...fieldN table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

1%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)eg(''%猪%')

2._: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

3.[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

4.[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符

7.排序:

SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]

使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

eg: select *from student where name like binary "%Li" order by stu_id desc;

8.统计:

SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;

eg:SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;

eg:SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

9.1增加字段:alter table 表名 add 字段名 字段类型; #添加phone字段

9.2删除字段:alter table 表名 drop 字段名称;

9.3修改字段: alter table表名 MODIFY 字段名 修改成什么类型;

alter table表名 change i j BIGINT;

9.4修改表名:alter table表名 rename TO 新表名;

10.连接JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录.

eg: select * from a INNER JOIN b on a.a = b.b 相当与 select a.*,b.* from a,b where a.a = b.b

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

eg:select * from a LEFT JOIN b on a.a = b.b;

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

eg:select * from a RIGHT JOIN b on a.a = b.b;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值