数据库
1. 什么是数据库?
存储数据的仓库, 叫做数据库。英文单词:database 简称:db。
2. 数据库的分类
- 关系型数据库: MySQL, Oracle, SqlServer, 华为高斯 …
- 非关系型数据库(缓存、秒杀、搜索引擎 …): Redis, MangoDB, ES
3. SQL:
中文名字: 结构化查询语言
4. 启动数据库
5. 测试一下数据库
-
查看当前数据库的版本:
select version();
-
查看系统当前时间:
select now();
一. 数据库相关
-
查看当前数据库系统中有哪些数据库?
show databases;
-
新建数据库:
create database 数据库名 default charset utf8;
例子: 新建数据库
mydb0517
create database mydb0517 default charset utf8;
-
删除数据库:
drop database 数据库名;
例子: 删除数据库
mydb0517
drop database mydb0517;
-
设置当前数据库:
use 数据库名;
例子: 将
mydb0517
设置为当前数据库use mydb0517;
二. 表相关
- 创建表
- 常用的数据类型: int (整型), varchar (字符型), date (日期)
- 格式:
create table 表名( 字段名 数据类型(长度), 字段名 数据类型(长度), 字段名 数据类型(长度), ... 字段名 数据类型(长度) );
hero
,字段:id
,name
,job
(职位),money
(薪水)create table hero( id int, name varchar(50), job varchar(50), money float );
# 查看当前数据库的版本
```sql
select version();
查看系统当前时间
select now();
表相关
例 新建表 hero
字段: id
, name
, job
(职位), money
(薪水)
create table hero(
id int,
name varchar(10),
job varchar(10),
money int
);
三. 插入数据
格式:
insert into 表名(字段列表) values(值列表);
插入数据例子:
insert into hero(id, name, job, money) values (1, '诸葛亮', '法师', 18888);
insert into hero(id, name, job, money) values (2, '周瑜', '法师', 13888);
insert into hero(id, name, job, money) values (3, '刘备', '战士', 8888);
insert into hero(id, name, job, money) values (4, '孙尚香', '射手', 6888);
insert into hero(id, name, job, money) values (5, '黄忠', '射手', 6888);
insert into hero(id, name) values (6, '赵云');
四. 查询数据
1. 查询全部记录
格式:
select 字段列表 from 表名;
- 查询
hero
表中的全部记录
select id, name, job, money from hero;
select * from hero;
- 给字段起别名
as
可以省略
select id 编号, name 姓名, job 职位, money 薪水 from hero;
select id as 编号, name as 姓名, job as 职位, money as 薪水 from hero;
- 查看
hero
表中的全部记录以及他们的年薪情况
select id, name, job, money, money * 12 年薪 from hero;
2. 查询部分记录
- 查询
hero
表中员工的姓名和工资
select name, money from hero;
- 查询
hero
表中员工的姓名、工资和年薪情况
select name, money, money * 12 from hero;
- 查询
hero
表中员工的姓名和职位
select name, job from hero;
- 扩展:
concat()
: 字符的拼接
select concat(name, "的职业是", job) from hero;
3. 根据条件进行查询 where
查询条件
- 查询刘备的相关信息
select id, name, job, money from hero where name = '刘备';
- 查询所有职业是法师的员工记录
select id, name, job, money from hero where job = '法师';
select * from hero where job = '法师';
- 查询刘备的职业
select job from hero where name = '刘备';
- 查询工资高于10000的员工记录
select id, name, job, money from hero where money > 10000;
- 查询不是法师的员工记录
select id, name, job, money from hero where job != '法师';
select id, name, job, money from hero where job <> '法师';
select id, name, job, money from hero where not job = '法师';
-
查询工资在10000到20000之间的员工信息
- 方法1:
select id, name, job, money from hero where money >= 10000 and money <= 20000;
- 方法2:
between ... and ...
select id, name, job, money from hero where money between 10000 and 20000;
-
查询没有职位的员工的姓名
select name from hero where job is null;
-
查询有职位的员工的姓名
select name from hero where job is not null;
练习
-
表
emp
create table emp( id int, name varchar(10), sal int, deptId int );
-
表
dept
create table dept( id int, name varchar(10), loc varchar(10) );
-
插入
dept
表insert into dept(id, name, loc) values (1, '神仙部', '天庭'); insert into dept(id, name, loc) values (2, '妖怪部', '盘丝洞');
-
插入
emp
表insert into emp(id, name, sal, deptId) values (1, '悟空', 5000, 1); insert into emp(id, name, sal, deptId) values (2, '八戒', 2000, 1); insert into emp(id, name, sal, deptId) values (3, '蜘蛛精', 8000, 2); insert into emp(id, name, sal, deptId) values (4, '白骨精', 9000, 2);
查询练习
-
查询工资低于6000的员工
select name, sal from emp where sal < 6000;
-
查询工资在2000和5000之间的员工
select * from emp where sal >= 2000 and sal <= 5000; select * from emp where sal between 2000 and 5000;
-
查询悟空的年薪
select sal * 12 from emp where name = '悟空';
-
查询
deptId
为 2 且工资高于8000的员工select * from emp where deptId = 2 and sal > 8000;
-
查询
deptId
不是 1 的员工select * from emp where deptId != 1; select * from emp where deptId <> 1; select * from emp where not deptId = 1;
-
查询妖怪部的地点
select loc from dept where name = '妖怪部';
-
查询
deptId
为 2 的所有员工select * from emp where deptId = 2;
数据库练习
一. 新建表练习
-
在数据库中创建员工表
emp
字段:id
,name
,sal
,deptId
(部门 id)
建表语句如下:create table emp( id int, name varchar(10), sal int, deptId int );
-
创建部门表
dept
字段:id
,name
,loc
(部门地址)create table dept( id int, name varchar(10), loc varchar(10) );
二. 添加记录练习
-
部门表(
dept
)插入如下记录id name loc 1 神仙部 天庭 2 妖怪部 盘丝洞 insert into dept(id, name, loc) values (1, '神仙部', '天庭'); insert into dept(id, name, loc) values (2, '妖怪部', '盘丝洞');
-
员工表(
emp
)插入如下记录id name sal deptId 1 悟空 5000 1 2 八戒 2000 1 3 蜘蛛精 8000 2 4 白骨精 9000 2 insert into emp(id, name, sal, deptId) values (1, '悟空', 5000, 1); insert into emp(id, name, sal, deptId) values (2, '八戒', 2000, 1); insert into emp(id, name, sal, deptId) values (3, '蜘蛛精', 8000, 2); insert into emp(id, name, sal, deptId) values (4, '白骨精', 9000, 2);
三. 条件查询
-
查询工资6000以下的员工姓名和工资
select name, sal from emp where sal < 6000;
-
查询工资在2000~5000的员工的记录
select * from emp where sal >= 2000 and sal <= 5000; select * from emp where sal between 2000 and 5000;
-
查询悟空的年薪
select sal * 12 as 年薪 from emp where name = '悟空';
-
查询2号部门工资高于8000的员工记录
select * from emp where deptId = 2 and sal > 8000;
-
查询不是1号部门的员工记录
select * from emp where deptId != 1; select * from emp where deptId <> 1; select * from emp where not deptId = 1;
-
查询妖怪部的地址信息
select loc from dept where name = '妖怪部';
-
查询2号部门的员工信息
select * from emp where deptId = 2;