数据库--1

事物处理:把几个SQL语句组合一起,同时成功、有一个失败所有语句组合都返回
数据行锁定:有人修改数据库的时候,会锁定正在修改的语句
全文索引:相当于字典的目录,有便于查询

使用MyISAM: 不需事务,空间小,以查询访问为主

使用InnoDB: 多删除、更新操作,安全性高,事务处理及并发控制

查看当前默认存储引擎

SHOW VARIABLES LIKE ‘storage_engine%’;

修改存储引擎
:修改my.ini配置文件

default-storage-engine= InnoDB

设置表的存储引擎:
语法:CREATE TABLE 表名(
#省略代码
)ENGINE=存储引擎;

示例:CREATE TABLE myisam (
id INT(4)
)ENGINE=MyISAM;

MyISAM类型表文件

1:*.frm:表结构定义文件
2:
*.MYD:数据文件
3:
*.MYI:索引文件

InnoDB类型表文件
1:
*.frm:表结构定义文件
2:
ibdata1文件

存储位置:因操作系统而异,可查my.ini
datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”
innodb_data_home_dir=“D:/MySQL Datafiles/”

DML语句–插入单条数据记录:
语法:INSERT INTO 表名【(字段名列表)】VALUES(值列表)

示例:
INSERT INTO
student(loginPwd,studentName,gradeId,phone,bornDate)
VALUES(‘123’,‘黄小平’,1,‘13956799999’,‘1996-5-8’);

注意:
1:字段名是可选的,如省略则依次插入所有字段
2:
多个列表和多个值之间使用逗号分隔
3:
值列表和字段名列表一一对应

4:如插入的是表中部分数据,字段名列表必填

插入多条数据记录:
INSERT INTO 新表(字段名列表)

VALUES(值列表1),(值列表2),……,(值列表n);

INSERT INTO subject(subjectName,classHour,gradeID)
VALUES(‘Logic Java’,220,1),(‘HTML’,160,1),(‘Java OOP’,230,2);

为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

将查询结果插入新表:主要用来备份
CREATE TABLE phoneList(

SELECT studentName,phone

FROM student);
注:查询student内studentName,phone的值 插入到新建表phoneList中

将查询结果插入新表:
CREATE TABLE 新表(SELECT 字段1,字段2…… FROM 原表);

CREATE TABLE phoneList(
SELECT studentName,phone
FROM student);

更新数据记录:
UPDATE 表名
set 字段1=值1,字段n=值n;

UPDATE student SET sex = ‘女’;

UPDATE student SET address = ‘北京女子职业技术学校家政班’
WHERE address = ‘北京女子职业技术学校刺绣班’;

删除数据记录:
DELETE FROM 表名 [WHERE条件];

TRUNCATE TABLE 表名;

DELETE FROM student WHERE studentName = ‘王宝宝’;
TRUNCATE TABLE student;

TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快

删除数据记录:
DELETE FROM 表名 [WHERE条件];#一条条的删除

TRUNCATE TABLE 表名;#全部删除此表

DELETE FROM student WHERE studentName = ‘王宝宝’;
#删除student内studentName王宝宝

TRUNCATE TABLE student;删除整个student表

TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快

查询:
查询产生一个虚拟表
看到的是表形式显示的结果,但结果并不真正存储
每次执行查询只是从数据表中提取数据,并按照表的形式显示出来

查询语法:
SELECT <列名|表达式|函数|常量>

FROM <表名>

[WHERE <查询条件表达式>]

[ORDER BY <排序的列名>[ASC或DESC]];

示例:
SELECT studentNo,studentName,phone,address,bornDate

FROM student

WHERE gradeId = 1

ORDER BY studentNo;

查询全部的行和列:SELECT * FROM phoneList;

查询部分列:
SELECT studentNo,studentName,address

FROM student

WHERE address=‘河南新乡’;

使用AS命名列:
SELECT studentNo AS 学生编号,studentName AS 学生姓名,
addressAS 学生地址

FROM student

WHERE address <> '河南新乡‘;

SELECT firstName + ‘.’ + lastName AS 姓名
FROM employees;

查询空行:
SELECT studentName FROM student WHERE email IS NULL;

使用常量列:

SELECT studentName AS 姓名,address AS 地址,

’北京信息中心’ AS 学校名称

FROM student;

聚合函数:
AVG() 返回某字段的平均值
COUNT() 返回某字段的行数
MAX() 返回某字段的最大值
MIN() 返回某字段的最小值
SUM() 返回某字段的和

select avg(r.studentresult) from result r;#求平均分

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ORDER BY子句实现按一定顺序显示查询结果:
把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序
SELECT studentNo AS 学生编号,(studentResult*0.9+5 ) AS 综合成绩
FROM result
WHERE (studentResult*0.9+5) >=60
ORDER BY studentResult DESC;

MySQL查询语句中使用LIMIT子句限制结果集:
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名>[ASC 或 DESC]]
[LIMIT [位置偏移量,]行数];

SELECT studentNo,studentName,phone,address,bornDate
FROM student
WHERE gradeId = 1
ORDER BY studentNo
LIMIT 4,4;#从第五条开始显示四条—limit分页显示
注意:第1条记录的位置是0!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wxj_0923/article/details/82760652
今日推荐