1、数据库的基本类型
1.关系数据库
特点:以表和表的关联构成的数据结构
优点:能表达复杂的数据关系。强大的查询语言,能精确查找想要的数据
缺点:读写性能比较差,尤其是海量数据的读写。数据结构比较死板
用途:存储结构复杂的数据
代表:Oracle、MySql、Sql Server
2.非关系型数据库
特点:简单的结构存储数据,文档型,键值对
优点:格式灵活,海量数据读写效率很高
缺点:难以表示复杂的数据结构,对于复杂查询效率不好
用途:存储结构简单的数据
代表:MongoDB,Redis,Membase
3.面向对象数据库
2、数据库术语
DB: database 数据库
DBA:database administrator 数据库管理员
DBMS:database management system 数据库管理系统
DBS:database system 数据库系统
3、数据库基本语句
1.创建库
create database db1 charset utf8;
2.查找库
show create database db1;
3.切换当前库
use db1;
4.删除库
drop database db1;
4、表记录的增删改查
1.增 CREATE
增加一条数据:
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (值1,值2,值3,值4...);
增加多条数据(用,分隔开即可):
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (值1,值2,值3,值4...),
(值1,值2,值3,值4...);
2.改 UPDATE
UPDATE student SET `字段`='值' //修改字段的所有值
WHERE id=num; //修改增加条件
3.删 DELETE
ELETE FROM 表名 //清空
WHERE name='值'; //增加条件删除
4.查 select
4.1单表查询
select
*,as,case,distinct
from
where
=,in,is,is not,>,<,>=,<=,between,like,and,or
order by
asc 升序,desc降序
limit(n,m)
n,m 跳过n条数据,取出m条数据
运行顺序
from -> where -> select -> order by -> limit
4.2联表查询
左连接
左外连接,left join
右连接
右外连接,right join
内连接
inner join
5.练习语句
单表查询
-- 1. 查询user表,得到账号为admin,密码为admin的用户
-- 登录SELECT * FROM `user` WHERE loginId = 'admin' and loginPwd = 'admin'
-- 2. 查询员工表,按照员工的入职时间降序排序,并且使用分页查询
-- 查询第3页,每页5条数据SELECT * FROM `employee` ORDER BY joinDate DESC LIMIT 10,5
-- 3. 查询工资最高的女员工
SELECT * FROM employee WHERE `ismale` = 0 AND salary=(select max(salary)from employee)
联表查询
-- 1. 创建一张team表,记录足球队
-- 查询出对阵表SELECT t1.name,t2.name FROM team as t1 , team as t2 WHERE t1.name != t2.name
-- 2. 显示出所有员工的姓名、性别(使用男或女显示)、入职时间、薪水、所属部门(显示部门名称)、所属公司(显示公司名称)
SELECT e.name'姓名', CASE ismale WHEN 1 THEN "男" ELSE "女" END as '性别',e.joinDate'入职时间',e.salary'薪资',d.`name`'部门',c.`name`'公司' FROM employee as e INNER JOIN department as d ON e.deptId = d.id INNER JOIN company as c ON c.id = d.companyId;
-- 3. 查询腾讯和蚂蚁金服的所有员工姓名、性别、入职时间、部门名、公司名
SELECT e.name '姓名',CASE ismale WHEN 1 THEN "男" ELSE "女" END as '性别',e.joinDate '加入时间',e.salary '薪资',d.`name`'部门',c.`name`'公司' FROM company as c INNER JOIN department as d ON c.id = d.companyId INNER JOIN employee as e ON d.companyId = e.deptId WHERE c.id in (1,3)
-- 4. 查询百里半教学部的所有员工姓名、性别、入职时间、部门名、公司名
SELECT e.name'姓名',e.ismale'性别',e.joinDate'入职时间',d.name'部门',c.name'公司' FROM company as c INNER JOIN department as d ON c.id = d.companyId INNER JOIN employee as e ON e.deptId = d.id WHERE c.`name` = "百里半" and d.`name` = "教学部"
-- 5. 列出所有公司员工居住的地址(要去掉重复)
SELECT DISTINCT location FROM employee