数据库
2020-03-04 19:35:35 0 举报
AI智能生成
数据库
作者其他创作
大纲/内容
索引
索引使数据库程序无需对整个表进行扫描,就可以在其中找到其所需数据
数据库中的索引是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑
一条索引记录包含的基本信息处:键值(定义索引时指定的所有字段的值)+逻辑指针(指向数据页或者另一索引页)
分类
索引类型
聚集索引
表数据文件本身就是按B+Tree组织的一个索引结构文件
InnoDB
非聚集索引
frm:存储表的定义信息
myd:存储表的数据行
myi:存储索引
MyISAM
唯一索引
组合索引
索引底层
顺序文件的索引
B+树索引
散列索引
位图索引
事务
ACID
原子性
一致性
隔离性
永久性
定义:事务作为单个逻辑工作单元执行的一系列操作
操作
开始事务
提交事务
回滚事务
Mysql
表操作
创建数据库
CREATE DATABASE name;
删除数据库
DROP DATABASE name;
创建表
CREATE TABLE table_name (column_name, type);
插入数据
INSERT INTO table_name (column1, column2) VALUE (...),(...);
删除表
DROP TABLE table_name;
删除数据
DELETE FROM table_name WHERE ...;
删除所有数据,但保留表格
TRUNCATE TABLE table_name;
修改数据
UPDATE table_name SET column1=value1, column2 = value2 WHERE ...;
修改表
删除某列
ALTER TABLE table_name DROP column;
增加一列
ALTER TABLE table_name ADD column_name type;
修改字段类型
ALTER TABLE table_name MODIFY column1 new_type;
修改字段名字
ALTER TABLE table_name CHANGE column1 new_column1 new_type;
修改字段默认值
ALTER TABLE table_name ALTER column1 SET DEFAILT 1000;
表查询
查询所有数据
SELECT * FROM table_name;
条件查询
SELECT * FROM table_name WHERE conditions;
DISTINCT
SELECT DISTINCT * FROM table_name;
AS
SELECT s.class_id AS id FROM students s;
AS可以省略
AND
OR
NOT
=
等于
<>
不等于
LIKE
name LIKE '%bc%'
%表示任意字符
LIMIT N
查询前N条数据
SELECT * FROM table_name LIMIT N:
投影查询
SELECT column1, column2 FROM table_name;
ORDER BY
DESC
从高到低
ASC
从低到高
SELECT column1, column2 FROM table_name WHERE conditios ORDER BY column3 DESC;
分页查询
LIMIT N OFFSET M
从M号记录开始最多打印N条
SELECT *FROM table_name ORDER BY column1 LIMIT 3 OFFSET 0;
聚合查询
COUNT
计算行数
SELECT COUNT(*) FROM table_name WHERE conditions;
SUM
AVG
MAX
MIN
分组
GROUP BY
SELECT COUNT(*) num FROM students GROUP BY class_id;
多列进行分组时
SELECT class_id, COUNT(*) num FROM students GROUP BY class_id, gender;
HAVING
分组后的条件
SELECT class_id, gender COUNT(*) num FROM students GROUP BY class_id, gender HAVING gender = 'F';
多表查询
SELECT * FROM table_name1, table_name2;
两个表的乘积,这种查询称为笛卡尔查询
连接查询
INNER JOIN
交叉部分
RIGHT OUTER JOIN
SELECT c.id, s.name, s.class_id, c.name class_name, s.gender, s.score FROM students s RIGHT OUTER JOIN classes c ON s.class_id = c.id;
右表所有的行
LEFT OUTER JOIN
左表所有的行
FULL OUTER JOIN
两张表的所有记录全部选择出来
UNION
将两个查询的结果组合到一个结果集合中
0 条评论
下一页