数据库服务
数据库分类:
关系型数据库:mysql, oracle, sql server, db2
非关系型数据库: mongdb redis
安装mysql服务
1. 选择编码形式 utf-8
2. 定义端口号 3306
3. 输入密码 :
安装客户端 (navicat)
创建数据库
为每一个项目,单独的创建一个数据库
创建表
- 列名
- 数据类型
- 长度
- 是否为空
- 是否为主键
1. 基本查询
1.1 查询表指定列数据
select 列名1,列名2,... from 表名;
select * from 表名; # *:代表所有列
# 查询每一条数据,* : 每一列的值
SELECT * FROM emp_info;
#查询每一条数据,指定列的值
SELECT name, salary FROM emp_info;
#查询id, code , age
SELECT id, `code`, age FROM emp_info;
1.2 对查询的数据操作
数字
- 算数运算
- 加减乘除余
字符串
- 拼接
#对查询出的结果进行运算
SELECT id, CONCAT("AAA",code,"ccc"), age+10 FROM emp_info;
# 获取每位员工每列的数据 ,工资加200,名字前拼接 万古第一帅_ 的数据
SELECT id, CONCAT("万古第一帅_ ",name), gender, age, salary+2000 FROM emp_info;
1.3 取别名
可以对查询出的数据的列名取别称
在mysql中 单引号,双引号 都表示的是字符串的意思
select 列名1 as "别名",列名2 from 表名;
select 列名1 as '别名',列名2 from 表名;
select 列名1 '别名',列名2 from 表名;
select 列名1 "别名",列名2 from 表名;
select 列名1 别名,列名2 from 表名;
SELECT
id,
CONCAT("万古第一帅_ ",name) as "称呼",
gender as '性别',
age '年龄',
salary+2000 新工资 FROM emp_info;
1.4 去重
使用distinct去除相同的条数据
# 查询有多少种性别
SELECT gender FROM emp_info;
#如果两条数据该列的值相等,后面相同的数据就去除
SELECT DISTINCT gender FROM emp_info;
#如果两条数据该两列的值相等,后面相同的数据就去除
SELECT DISTINCT gender, age FROM emp_info;
1.5 排序
order by 列名1 [asc/desc], 列名2 [asc/desc],...
- 首先根据列名1进行排序
- 如果列名1排序,无法起作用,再根据列名2进行排序
- …
如果列的值是数字(整数,小数)那就按照大小比较
如果列的值是字符串,那就从前往后一个一个字符的比较
abcde
abde
bde
iklde
# 排序 order by 默认升序(asc) DESC 倒序
# 首先根据根据第一列进行排序, 当第一个列不能起作用的时候,第二列才会起作用
SELECT * FROM emp_info
SELECT * FROM emp_info order by salary DESC, id;
SELECT * FROM emp_info order by salary DESC, id DESC;
#根据年龄倒叙,学号升序排列
SELECT * FROM emp_info ORDER BY age DESC, code;
2. 条件查询
select 列名s from 表名 where 查询条件
-
相等
- =
-
关系判断
-
> >= < <= != <>
-
-
范围判断
-
between v1 and v2
-
-
逻辑 且 或
如果查询的条件是字符串,那就一定要添加单双引号,如果是整数,就可以不加单双引号。
#条件查询,对数据进行过滤
#查询性别:女 的员工
SELECT * FROM emp_info where gender = '女';
#查询年龄 大小等于19 的员工
SELECT * FROM emp_info where age >= 19;
#查询姓名是马云的员工
SELECT * FROM emp_info where `name` = '马云';
#查询编号是10001的员工
SELECT * FROM emp_info where `code` = '10001';
#查询工资大于10000的员工
SELECT * FROM emp_info where salary > 10000;
#性别不是男的员工
SELECT * FROM emp_info where gender != '男';
SELECT * FROM emp_info where age <> 18;
#工资在 [10000,20000]
SELECT * FROM emp_info where salary BETWEEN 10000 AND 20000;
#年龄小于20,且工资大于10000
SELECT * FROM emp_info WHERE age <20 AND salary>10000;
#性别为男,工资大于20000的员工
#性别为女,工资范围在[5000,15000]的员工信息
#工资大于20000,或者年龄小于18
SELECT * FROM emp_info WHERE (age <18 OR salary>20000);
SELECT * FROM emp_info WHERE age <18 AND salary>20000 AND gender = 'nv' OR 1=1;
# id=1 id=2 id=3
SELECT * FROM emp_info where id=1 or id=2 or id=3;
SELECT * FROM emp_info where id in (1,2,3);
# 年龄等18 或者等于19
SELECT * FROM emp_info where age in (18,19);
#模糊查询
#查询所有姓 王 的员工 后模糊
SELECT * FROM emp_info where `name` LIKE '张%';
#查询所有姓 王 的员工 前模糊
SELECT * FROM emp_info where `name` LIKE '%钱';
#查询名字包含大 的员工
SELECT * FROM emp_info where `name` LIKE '%大%';
#知道姓李,名只有一个字
SELECT * FROM emp_info where `name` LIKE '李_';
#知道姓李,名只有一个字
SELECT * FROM emp_info where `name` LIKE '_大_';
MySQL安装连接:
链接:https://pan.baidu.com/s/1ALvJNXZ7R1DQQCN_wsC2WA
提取码:czt2