关于mysql:训练营数据库day01

46次阅读

共计 3682 个字符,预计需要花费 10 分钟才能阅读完成。

数据库概述

什么是数据库?

所谓的数据库就是指存储和治理数据的仓库

扩大内容 1:数据库有哪些分类?(理解)

晚期: 档次式数据库、网络型数据库
当初:关系型数据库、非关系型数据库

什么是关系型数据库?

底层以二维表的模式保留数据的库就是关系型数据库

stu- 学生表

扩大内容 2:常见的关系型数据库有哪些?(理解)

  • Sql Server:微软提供,免费,实用于一些中型或大型的我的项目中,在 java 中的应用占比不高(.NET 中应用的较多)
  • Oracle:甲骨文公司提供,免费,实用于一些大型或者超大型的我的项目中,在 java 中的应用占比十分高
  • mysql:瑞典 MySQLAB 公司提供,收费开源,实用于一些小型或者中型的我的项目中,在 Java 中的应用占比拟高(玲珑轻量)mariadb 其实就是 MySQL 的一个分支,用法和 MySQL 齐全一样。
  • DB2:IBM 公司提供,免费,在一些银行、金融等行业中应用较多。在 java 中的应用占比也不高。
  • Sqlite:迷你数据库,嵌入式设施中(安卓、苹果手机、pad)

数据库相干概念

1、什么是数据库服务器

数据库服务器就是一个软件(比方 mysql 软件)将数据库软件装置在电脑上,以后电脑就是一个数据库服务器。就能够对外提供存取数据的服务

在一个数据库服务器中能够创立多个数据库(dataBases),每一个数据库都是一个独自的仓库。

2、什么是数据库

数据库就是存储和治理数据的仓库,通常状况下,一个网站的中的所有数据会寄存在一个数据库中。例如:

jd.com db_jd(数据库)
taobao.com db_taobao(数据库)

3、什么是表

一个数据库中能够创立多张表,每张表用于存储一类信息(数据库),例如:

jd.com 中的用户数据 tb_user(表)

jd.com 中的商品数据 tb_product(表)

jd.com 中的订单数据 tb_order(表)

4、什么表记录

一张表中能够蕴含多行表记录,每一行表记录用于存储某一个具体的数据

什么是 SQL 语言?

SQL 是一门用于操作关系型数据库的通用的语言(应用 SQL 能够操作所有的关系型数据库)

应用 SQL 能够操作数据库、表、表记录

(1)创立数据库、删除数据库、批改数据库、查询数据库

(2)创立表、删除表、批改表、查问表

(3)新增表记录、删除表记录、批改表记录、查问表记录

应用 SQL 也能够操作存储过程 / 视图 / 索引等。

提醒:SQL 是一个规范通用的操作关系型数据库的语言(普通话),每个数据库厂商为了加强本人数据库的性能,都提供了反对本人数据库的语言,称之为数据库的方言。方言不通用!

连贯 mysql 服务器

通过命令行工具能够登录 MySQL 客户端,连贯 MySQL 服务器,从而拜访服务器中的数据。

1、连贯 mysql 服务器:

mysql -uroot - p 明码

-u:前面的 root 是用户名,这里应用的是超级管理员 root;

-p:(小写的 p)前面的 root 是明码,这是在装置 MySQL 时就曾经指定的明码;

2、连贯 mysql 服务器并指定 IP 和端口:

mysql -uroot -proot -h127.0.0.1 -P3306

-h:前面给出的 127.0.0.1 是服务器主机名或 ip 地址,能够省略的,默认连贯本机;

-P:(大写的 P)前面的 3306 是连贯端口,能够省略,默认连贯 3306 端口;

3、退出客户端命令:quit 或 exit 或 q
4、FAQ:常见问题

解决办法:复制 mysql 装置目录下的 bin 目录的门路,将 bin 目录的门路增加到 path 环境变量中!!
能够在 cmd 中通过 echo %path% 查看 path 环境变量的值。
扩大内容 3:

(1)在 cmd 中连贯 mysql 服务器之后,能够应用 #、/**/、– 等符号增加正文,例如:

(2)在 cmd 中连贯 mysql 服务器之后,在书写 SQL 语句时,能够通过 c 勾销以后语句的执行。例如:


数据库及表操作

创立、删除、查看数据库

提醒:(1)SQL 语句对大小写不敏感。举荐关键字应用大写,自定义的名称(库名,表名,列名等)应用小写。

SHOW DATABASES; -- 查看以后数据库服务器中的所有库
CREATE DATABASE mydb1; -- 创立 mydb1 库

(2)并且在自定义名称时,针对多个单词不要应用驼峰命名,而是应用下划线连贯。(例如:tab_name,而不是 tabName)

— 01. 查看 mysql 服务器中所有数据库

show databases; -- 查看所有的数据库
show tables; -- 查看所有的表

— 02. 进入某一数据库(进入数据库后,能力操作库中的表和表记录)

— 语法:USE 库名;

use test; -- 进入 / 选中 test 库
use mysql; -- 进入 / 选中 mysql 库

— 查看已进入的库(理解)

select database(); 

— 03. 查看以后数据库中的所有表

show tables;

— 04. 删除 mydb1 库

-- 语法:DROP DATABASE 库名;
drop database test; -- 删除 test 库

— 思考:当删除的库不存在时,如何防止谬误产生?

drop database mydb1; -- 删除的库不存在会报错
drop database if exists mydb1; -- 如果存在, 则删除 mydb1 库

— 05. 从新创立 mydb1 库,指定编码为 utf8

-- 语法:CREATE DATABASE 库名 CHARSET 编码;

— 须要留神的是,mysql 中不反对横杠(-),所以 utf- 8 要写成 utf8;

create database mydb1 charset utf8;

— 如果不存在则创立 mydb1;

create database if not exists mydb1 charset utf8;

— 06. 查看建库时的语句(理解, 并验证数据库库应用的编码)

— 语法:SHOW CREATE DATABASE 库名;

show create database mydb1;

查问表记录

— 筹备数据:以下练习将应用 db10 库中的表及表记录,请先进入 db10 数据库!!!

根底查问

SELECT 语句用于从表中选取数据。后果被存储在一个后果表中(称为后果集)。

语法:SELECT 列名称 | * FROM 表名

提醒:(1) *(星号)为通配符,示意查问所有列。

(2)但应用 *(星号)有时会把不必要的列也查出来了,并且效率不如间接指定列名

— 15. 查问 emp 表中的所有员工,显示姓名,薪资,奖金

select name,sal,bonus from emp;

— 16. 查问 emp 表中的所有部门和职位

select dept,job from emp;

思考:如果查问的后果中,存在大量反复的记录,如何剔除重复记录,只保留一条?

— 在 select 之后、列名之前,应用 DISTINCT 剔除反复的记录

select distinct dept,job from emp;

WHERE 子句查问

WHERE 子句查问语法:SELECT 列名称 | * FROM 表名称 WHERE 列 运算符 值

WHERE 子句前面跟的是条件,条件能够有多个,多个条件之间用连接词(or | and)进行连贯

上面的运算符可在 WHERE 子句中应用:

— 17. 查问 emp 表中【薪资大于 3000】的所有员工,显示员工姓名、薪资

select name,sal from emp
where sal>3000;

— 18. 查问 emp 表中【总薪资 (薪资 + 奖金) 大于 3500】的所有员工,显示员工姓名、总薪资

select name,sal+bonus from emp where sal+bonus > 3500;

— ifnull(列名, 值)函数: 判断指定的列是否蕴含 null 值,如果有 null 值,用第二个值替换 null 值

select name,sal+ifnull(bonus,0) from emp where sal+ifnull(bonus,0) > 3500;

— 留神查看下面查问后果中的表头,如何将表头中的 sal+bonus 批改为 “ 总薪资 ”

— 应用 as 能够为表头指定别名

select name as 姓名,sal+ifnull(bonus,0) as 总薪资 from emp where sal+ifnull(bonus,0) > 3500;

— 另外 as 能够省略

select name 姓名,sal+ifnull(bonus,0) 总薪资 from emp where sal+ifnull(bonus,0) > 3500;

— 19. 查问 emp 表中【薪资在 3000 和 4500 之间】的员工,显示员工姓名和薪资

select name,sal from emp where sal>=3000 and sal<=4500; 

— and: 查问的后果必须同时满足 and 两边的条件

— 20. 查问 emp 表中【薪资为 1400、1600、1800】的员工,显示员工姓名和薪资

select name,sal from emp where sal=1400 or sal=1600 or sal=1800;

— or: 只有满足 or 两边中的任何一个条件即可!

— 或者

select name,sal from emp where sal in (1400,1600,1800);

— in: 只有后面的列的值, 满足 in 前面括号中的任何一个值即可!

正文完
 0