查看当前默认引擎
myisam 类型表文件
.frm:表结构定义文件
.myd:数据文件
.myi:索引文件
innodb类型文件
.frm:表结构定义文件
ibdata1文件
储存位置
因操作系统而异,可查my.ini
插入文件
insert into 表名[(字段表列名)] values (值列表);
字段名是可选的,如省略则依次插入所有字段
多个列表和多个值之间使用逗号分隔
值列表和字段名列表——对应
如插入的是表中部分数据,字段名列表必填
查询表名2这个表的某个列 并插入到新建的表名1的表里
#将查询结果插入新表
CREATE TABLE beifen
(
SELECT studentNo,loginPwd,studentName,sex,gradied1,phone,address,bronCade,email,identityCand
FROM student1
);
INSERT INTO beifen
(
SELECT studentNo,loginPwd,studentName,sex,gradied1,phone,address,bronCade,email,identityCand
FROM student1
);
更新数据记录
update 表名
set 字段1=值1,字段2=值2
[where 条件]
删除数据
delete from 表名[where条件]
tryncate table 表名
如果不写where条件,会删除表格所有的内容
tryncate语句删除后将重置自增列,表结构及其字段,约束,索引保持不变,执行速度比delete语句快
查询
select 列名|表达式|函数|常量
from 表名
where 条件
order by 排序
使用常量列
select student1
AVG() 返回某字段的平均值
COUNT() 返回某字段的行数
MAX() 返回某字段的最大值
MIN() 返回某字段的最小值
SUM() 返回某字段的和
字符串函数
concat(str1,str2) 字符串拼接
insret(str,pos,len,newstr) 字符串替换 newstr替换str pos替换开始下标 len代表替换的长度
lower 将字符转为小写
upper(str) 将字符串转为大写
substring(str,num,len) 字符串截取 num截取开始下标 len代表截取的长度
时间日期函数
CURDATE() 获取当前日期
SELECT CURDATE();
返回:2016-08-08
CURTIME() 获取当前时间
SELECT CURTIME();
返回:19:19:26
NOW() 获取当前日期和时间
SELECT NOW();
返回:2016-08-08 19:19:26
WEEK(date) 返回日期date为一年中的第几周
SELECT WEEK(NOW());
返回:26
YEAR(date) 返回日期date的年份
SELECT YEAR(NOW());
返回:2016
HOUR(time) 返回时间time的小时值
SELECT HOUR(NOW());
返回:9
MINUTE(time) 返回时间time的分钟值
SELECT MINUTE(NOW());
返回:43
DATEDIFF(date1,date2) 返回日期参数date1和date2之间相隔的天数
SELECT DATEDIFF(NOW(),
‘2008-8-8’);
返回:2881
ADDDATE(date,n) 计算日期参数date加上n天后的日期
SELECT ADDDATE(NOW(),5);
返回:2016-09-02 09:37:07
数学函数
CEIL(x) 返回大于或等于数值x的最小整数
SELECT CEIL(2.3)
返回:3
FLOOR(x) 返回小于或等于数值x的最大整数
SELECT FLOOR(2.3)
返回:2
RAND() 返回0~1间的随机数
SELECT RAND()
返回:0.5525468583708134
limit子句
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名>[ASC升序排序 或 DESC降序排序]]
[LIMIT [位置偏移量,]行数];
代码:
CREATE TABLE student1(
studentNo
INT(4) NOT NULL COMMENT’学号’ PRIMARY KEY,
loginPwd
VARCHAR(20) NOT NULL COMMENT’密码’,
studentName
VARCHAR(50) NOT NULL COMMENT’学生姓名’,
sex
CHAR(2) DEFAULT’男’ NOT NULL COMMENT’性别’,
gradeid
INT(4) UNSIGNED COMMENT’年纪编号’,
phone
VARCHAR(50) COMMENT’手机号’,
address
VARCHAR(255) DEFAULT’不详’ COMMENT’地址’,
bronCade
DATETIME COMMENT’生日’,
email
VARCHAR(50) COMMENT’邮箱编号’,
identityCand
VARCHAR(18) UNIQUE KEY COMMENT’身份证号’
)COMMENT=‘学生表’;
#给学生表插入值
INSERT INTO student1(studentNo,loginPwd,studentName,sex,gradied1,phone,address,bronCade,email,identityCand) VALUES
(1001,‘123’,‘张小皮’,‘男’,2,‘18518777715’,‘北京’,‘1997-07-16’,‘1729924027@qq.com’,‘150421199707161999’),
(1002,‘122’,‘张中皮’,‘女’,1,‘18518777716’,‘南京’,‘1997-06-11’,‘2841118592@qq.com’,‘1513212197076111328’),
(1003,‘321’,‘张大皮’,‘男’,2,‘18518777717’,‘赤峰’,‘1997-09-30’,‘1295187465@qq.com’,‘1504211997079301465’)
#将student1里面的gradeid改成gradied1
ALTER TABLE student1 CHANGE gradeid gradied1 INT(4);
USE school;
DROP TABLE IF EXISTS student1;
CREATE TABLE grade1(
id
INT(4) PRIMARY KEY AUTO_INCREMENT,
name
VARCHAR(20) NOT NULL
)COMMENT=‘年级表’;
#给年纪表插入值
INSERT INTO grade1
(name
) VALUES(‘大一’),(‘大二’),(‘大三’),(‘大四’);
CREATE TABLE subject
(
subjectNo
INT(4) PRIMARY KEY AUTO_INCREMENT COMMENT’课程编号’,
subjectName
VARCHAR(50) COMMENT’课程名称’,
classHour
INT(4) COMMENT’学时’,
gradeID
INT(4) COMMENT’年级编号’
)COMMENT=‘科目表’;
#给科目表添加值
INSERT INTO subject
(subjectNo,subjectName,classHour,gradeID) VALUES(1,‘大学英语’,48,2),(2,‘大学数学’,36,1),(3,‘大学语文’,64,2)
CREATE TABLE result
(
studentNo
INT(4) NOT NULL COMMENT’学号’,
subjectNo
INT(4) NOT NULL COMMENT’课程编号’,
examDate
DATETIME NOT NULL COMMENT’考试日期’,
studentResult
INT(4) NOT NULL COMMENT’考试成绩’
)COMMENT=‘成绩表’;
#给成绩表添加分数
INSERT INTO result
VALUES(1001,1,NOW(),90),(1001,2,NOW(),91),(1001,3,NOW(),92),
(1002,1,NOW(),89),(1002,2,NOW(),95),(1002,3,NOW(),87),
(1003,1,NOW(),93),(1003,2,NOW(),90),(1003,3,NOW(),97);
#将查询结果插入新表
CREATE TABLE beifen
(
SELECT studentNo,loginPwd,studentName,sex,gradied1,phone,address,bronCade,email,identityCand
FROM student1
);
INSERT INTO beifen
(
SELECT studentNo,loginPwd,studentName,sex,gradied1,phone,address,bronCade,email,identityCand
FROM student1
);
#将学号为3的学生的电话更改为13211199999
UPDATE student1 SET phone=13211199999
WHERE studentNo=1003;
#将科目表中的科目名称为‘大学英语’的改为‘小学英语’
UPDATE subject
SET subjectName=‘小学英语’
WHERE subjectName=‘大学英语’;
#将成绩表中的每个学生的成绩提高2分
UPDATE result
SET studentResult=studentResult+2
#将成绩表中的每个学生的成绩提高2分,如果分数大于100就等于100
UPDATE result
SET studentResult=100
WHERE studentResult>100;
#在查询新增一列(常量列)
SELECT s.gradied1,‘北大青鸟’ AS ‘地址’ FROM student1 s;
#求平均分,总数,总和,最大值,最小值
SELECT AVG(r.studentResult) AS 平均分,
COUNT(r.studentResult) AS 总记录数,
SUM(r.studentResult) AS 总和,
MAX(r.studentResult) AS 最大值,
MIN(r.studentResult) AS 最小值
FROM result r;
#时间函数
SELECT ADDDATE(NOW(),-5);
SELECT YEAR(NOW());
#删除性别为女,年级编号为1的学生信息
DELETE FROM beifen WHERE sex=‘女’ AND gradied1=1;
#把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序
SELECT studentNo
AS 学生编号,(studentResult*0.9+5 ) AS 综合成绩
FROM result
WHERE (studentResult
*0.9+5) >=60
ORDER BY studentResult DESC;
#每页显示4条数据
SELECT * FROM student1 LIMIT 4;
#将学生表中为1002的学生的邮箱修改为 stu1002@163.com,密码改为000
UPDATE student1 SET email=‘stu1002@163.com’,loginPwd=‘000’
WHERE studentNo=1002;
#将科目表中课时数大于50且年纪编号为2的科目的课时减少10
UPDATE subject
SET classHour=classHour-10
WHERE classHour>50 AND gradeID=2;
#将所有年纪编号为1的学员姓名,性别,出生日期,手机号码信息存到新表student_grade1中
CREATE TABLE student_grade1(
SELECT studentName,sex,bronCade,phone
FROM student1
WHERE gradied1=1
);