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.decr 数据表 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')# 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.bLEFT 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;
来源:https://www.cnblogs.com/KingOfCattle/p/12641525.html