存储数据的仓库
常见数据库分类: 大型数据库 Oracele (多用户 甲骨文 开源 使用免费 服务收费)
中型数据库 sqlserver(win) postgresql(日企)
小型数据库 mysql (甲骨文 开源免费)
微型数据库 sqllilt
数据库的 库 表 列名 约束名(auto_increment, FOREIGN KEY PRIMARY key UNIQUE `DEFAULT`(默认) not null ) 聚合函数(max min avg COUNT)
sql语句分类:
数据定义语言DDL 对库和表(库表的结构)的操作(create ALTER DROP)
数据查询语言DQL 模糊 分页查 排序 条件 分组 。。。
数据操纵语言DML 对数据的的操作 增 删 改(insert INTO update DELETE)
数据控制功能DCL 对数据库的权限 GRANT,REVOKE,COMMIT,ROLLBACK 事务的特性 ACID
DDL语句:
create database 库名 /表名
use 库名
alter 库名 /表名
drop 库名/ 表名
ALTER TABLE 表名称 ADD 字段名 字段约束
ALTER TABLE 修改前表名称 RENAME 修改后表名称
//只复制表结构及约束,但不复制数据
CREATE TABLE 复制出的表 LIKE 原表
//复制表结构及数据,但不复制约束
CREATE TABLE 复制出的表 AS SELECT * FROM 原表
//禁用约束
ALTER TABLE 表名称 DISABLE KEYS
//启用约束
ALTER TABLE 表名称 ENABLE KEYS
//删除表字段
ALTER TABLE 表名称 DROP COLUMN 字段名
//删除主键
ALTER TABLE 表名称 DROP PRIMARY KEY
//删除索引
ALTER TABLE 表名称 DROP INDEX 索引的字段名
//删除外键约束
ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名
DML语句:
insert into 表名【(字段名)】 values (字段值)
insert into 表名 (字段名) values (字段值1),(字段值2),(字段值3).。。。。
update 表名 set 字段名 = 新字段值 【条件】 如果增加条件语句对应的是修改一条语句 如果没有条件对应的是修改全部数据
delete 表名 【条件】 不加条件对应是表的中所有数据 如果加上条件删除的是单挑数据
DQL语句:
单表查
select 字段名1,字段名2 from 表名
ORDER BY DESC/ASC
GROUP BY 字段名
where 条件
like 字段名
HAVING 条件
limit 0,0
多表查
面试题:
INNER JOIN 内链接
LEFT JOIN RIGHT JOIN 外连接 {左外联 右外联}
FULL join 全连接
// DQL语句
全查
select * from student
条件查询
select * FROM student where id = 1
根据字段查询
SELECT sname,sid FROM student
排序查询
SELECT sname,age FROM student ORDER BY age asc
别名查询
SELECT sname as 姓名 ,age as 年龄 FROM student ORDER BY age asc
分组查询
select * from student GROUP BY ssex
SELECT COUNT(id),ssex as 性别 from student GROUP BY ssex
模糊查询
以%出现
select * from student where sname like "%斯%"
以_的占位符出现
select * from student where sname like "__斯"
分组后的条件查询 HAVING 用于分组后的条件查询
SELECT sname,sid,age from student GROUP BY ssex HAVING age>80
分页查询
select * from student LIMIT 1,2 (1 代表的是偏移量 从第几条数据开始 2 代表的是每页展示多少数据)
聚合查询 对应是表的主键 唯一
select COUNT(id) FROM student 用于做分页的时候用
SELECT MAX(age) FROM student
SELECT MIN(age) FROM student
SELECT avg(age) FROM student
多表查询: 2-3 测试的范围
内连接 innner JOIN
外连接 left JOIN RIGHT JOIN
select s.sname,s.ssex,s.age,se.cno,se.degree from student as s inner JOIN score as se ON s.sid = se.sno
select s.sname,s.ssex,s.age,se.cno,se.degree from student s left JOIN score se ON s.sid = se.sno
select s.sname,s.ssex,s.age,se.cno,se.degree from student as s RIGHT JOIN score as se ON s.sid = se.sno
面试题:
INNER JOIN 内连接 将两张表的相同的内容进行展示
LEFT JOIN 左外联 以左边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充
right JOIN 左外联 以右边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充
FULL join 全链接 将2张表中的所有内容全部显示
子查询 以()查出来的结果作为条件再次进行查询
select * from student
将年龄最大的名字展示
select sname from student where age = (SELECT MAX(age) FROM student)