python之MySQL数据库增删改

#查看当前默认存储引擎
SHOW VARIABLES LIKE 'storage_engine%';
#修改引擎
CREATE TABLE test_myisam(
	tib INT
)ENGINE=MYISAM
#-----------------------------------
#新增

#表中添加数据
INSERT INTO `student`(`studentNo`,`loginPwd`,`studentName`,`gradeId`,`phone`,`bornDate`,`identityCard`)
VALUES(30013,'123','黄小平6',1,'13956799999','1996-5-8','789456123'),
(30014,'123','黄小平7',1,'13956799999','1996-5-8','789458123'),
(30015,'123','黄小平8',1,'13956799999','1996-5-8','789446123');

#插入多条数据记录
INSERT INTO `subject`(`subjectName`,`classHour`,`gradeID`)
VALUES('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);

#将查询的结果保存到新表
#如果新表已存在 将会报错
CREATE TABLE new_phone(
 SELECT studentName,phone FROM`student`
 )
 
 #new_phone 必须存在new_phone中列
 #的数据类型要和原表的数据类型一致
 INSERT INTO new_phone(studentName,phone)
 SELECT 
 studentName,phone
 FROM student;
#------------------------------
 
#更改数据
#如若改一个就加条件
UPDATE student SET sex='男'
WHERE studentName='郭靖';
#把编号大于10005的改成2年级并且密码改123456
UPDATE student SET gradeid=2,loginPwd='123456'
WHERE studentNo>10005#基本匹配机制 逐行匹配

#删除数据
#删除其中的数据,可以加条件进行删除,但最少删除一行
DELETE FROM `new_phone`
WHERE `add`>3 AND LENGTH(studentName)=6
#删除表内的所有数据,但表依然存在
TRUNCATE TABLE `new_phone`;
#查询名字的长度
SELECT LENGTH(studentName) FROM `new_phone`
#------------------------------------------

#
SELECT `studentNo`,`studentName`,`gradeId`,`phone`,`bornDate`
FROM student
WHERE `gradeId`=1
#根据什么来排序  desc降序 默认升序   ase
ORDER BY `bornDate` DESC

SELECT `studentNo`  AS '学生编号',`studentName` AS '学生姓名', 
	`gradeId`+studentNo,borndate,
	phone+'_'+studentName
FROM `student`
WHERE `gradeId`=1 AND `address` <> '地址不详'
ORDER BY `bornDate` DESC
#1. + 连接的数据类型必须兼容
#2. 如果 + 连接字符型数据,结果为字符串数据的连接
#3. 如果 + 连接数值型数据,结果为数值的和

#查看空行
SELECT `studentName` FROM `student` WHERE `email` IS NULL;

#加上常量列
SELECT *,'北京信息中心' AS '学校名称' FROM student
WHERE email IS NULL

#统计 某列 产生一个结果
SELECT AVG(`studentResult`) AS '平均成绩',
	COUNT(*) AS 参加人数,
	MAX(`studentResult`) AS 最高,
	MIN(`studentResult`) AS 最底,
	SUM(`studentResult`) AS 总和
FROM `result`

#字符串连接
SELECT CONCAT('我','稀罕','你')
#字符串替换  原,开始,长度,新
SELECT INSERT('小哥哥',2,3,'姐姐');
#将字符串转为小写
SELECT LOWER('HELLO MYSQL!');
#将字符串转为大写
SELECT UPPER('hello mysql!');
SELECT UPPER(LOWER('HELLO MYSQL!'));
#字符串截取  截取按第7个开始,长度是5
SELECT LOWER(SUBSTRING('HELLO MYSQL!',7,5));

#常用函数——时间日期函数
#获取当前日期
SELECT CURDATE();
#获取当前时间
SELECT CURTIME();
#获取当前日期和时间
SELECT NOW();
#返回日期date为一年中的第几周
SELECT WEEK(NOW());
#返回日期date的年份
SELECT YEAR(NOW());
#返回时间time的小时值
SELECT HOUR(NOW());
#返回时间time的分钟值
SELECT MINUTE(NOW());
#返回日期参数date1和date2之间相隔的天数
SELECT DATEDIFF(NOW(),
     '2008-8-8');
#计算日期参数date加上n天后的日期
SELECT ADDDATE(NOW(),5);

#常用函数——数学函数
#返回大于或等于数值x的最小整数
SELECT CEIL(2.3)
#返回小于或等于数值x的最大整数
SELECT FLOOR(2.3)
#返回0~1间的随机数
SELECT RAND()


#把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序
SELECT *,(`studentResult`*0.9+5) >=60
FROM `result`
WHERE (`studentResult`*0.9+5) >=60
ORDER BY studentResult DESC;


#MySQL查询语句中使用LIMIT子句限制结果集 分页
#查询所有年级编号为1的学员信息,按学号升序排序

SELECT  <字段名列表>
FROM  <表名或视图>
[WHERE  <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY  <排序的列名>[ASC 或 DESC]]
[LIMIT [位置偏移量,]行数];


SELECT *FROM student
WHERE `gradeId` = 1
ORDER BY studentNo
LIMIT ((页数-1)*条数),条数


#编写SQL语句,查看年龄比“李斯文”小的学生,要求显示这些学生的信息 
#第一步:查询得到“李斯文”的出生日期
SELECT `bornDate` FROM `student` WHERE `studentName` = '李斯文';
#第二步:利用WHERE语句,筛选出生日期比“李斯文”大的学生
SELECT * FROM student
WHERE borndate>'1993-07-23 00:00:00'

#子查询
SELECT * FROM student
WHERE borndate>(
	SELECT borndate FROM student WHERE studentName='李斯文'
	)

你可能感兴趣的:(python)