数据库复习笔记

关系型数据库(RDBMS):

所谓的关系型数据库(Relational Database Management System),是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

非过程性语言:一条语句就只有一个执行结果

DDL(数据定义语言): create,alter,drop…
DML(数据操纵语言): update,insert,delete…
DCL(数据控制语言): grant,if…
DQL(数据查询语言): select…

单表约束的约束类型:

  • 主键约束:primary key
  • 唯一约束:unique
  • 非空约束:not null

基本语法

查看数据库中有哪些表:show tables;
查看表结构:desc 表名;
删除表结构:drop talbe 表名;

开启一个事务:start transaction;
回滚事务:rollback;

[alter]

修改表添加列:alter table 表名 add 列名 类型(长度) 约束;
修改表删除列:alter table 表名 drop 列名;
修改表的列的类型长度及约束:alter table 表名 modify 列名 类型(长度) 约束;
修改表的列名:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改表名:rename table 旧表名 to 新表名;
修改表的字符集:alter table 表名 character set 字符集;

[insert]

向数据库插入记录:insert into 表名 (列名,列名,…) values (值1,值2,…); --插入指定列的值
向数据库插入记录:insert into 表名 values (值1,值2,…); --插入所有列的值

[update]

修改记录:update 表 set 列名=值,列名=值 [ where 条件 ];
删除记录:delete from 表名 [ where 条件 ];
删除记录:turncate table 表名;
删除记录:delete table 表名;
区别:turncate 是DDL语言,是将整个表删除然后重新创建一个表。delete 是DML语言,会一条条删除记录。事务管理只能作用在DML语句上,如果在一个事务中使用delete删除所有记录,可以找回。

[select]

查询记录:select [ distinct ] *|列名 from 表 [ where 条件 ];

[where]

where语句后面可以加:

  • 条件关键字:=,>,>=,<,<=,<>
  • like关键字:可以使用占位符‘_’(匹配一个字符)和‘%’(匹配多个字符)。例:like ‘张_’
  • in 后跟一组值。例如 in(1,2,3)
  • and or not

[order by]

排序查询order by:对数据进行排序,默认升序(asc升序,desc降序),例如:

select * from exam where name like '李_' order by english desc, chinese desc;

聚合函数(通常与group by一起使用)

  • sum();
  • count();
  • max();
  • min();
  • avg();cc
select sum(english+ifnull(math,0)) from exam;	--ifnull(math,0)为空的时候用0代替计算

[group by]

select product,sum(price) from table 
	group by product 
	having sum(price) > 1500 
	order by sum(price) desc;

SQL的查询语句的顺序:select…from…where…group by…having…order by…

多表查询

多表查询方式有三:

交叉连接
select * from A,B;		--获得的是两个表的笛卡尔积
内连接:inner join
  • 显式内连接
SELECT * FROM customer c INNER JOIN orders o ON c.cid = o.cid;
  • 隐式内连接
SELECT * FROM customer c, orders o WHERE c.cid = o.cid;
外连接:outer join
  • 左外连接
SELECT * FROM customer c LIFT OUTER JOIN orders o ON c.cid = o.cid;
  • 右外连接
SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.cid = o.cid;

多表查询的子查询

一个SQL语句查询的过程中需要依赖另一个查询语句

SELECT * FROM customer c, orders o WHERE c.cid = o.cid AND c.cid IN (SELECT cid FROM orders WHERE addr LIKE '海淀%');
上一篇:50道SQL练习题及答案与详细分析


下一篇:用Python分析b站弹幕,妈妈再也不用担心我和00后有代沟了!