一、数据库和SQL概述
1、 数据库简介
数据库指的是长期存在计算机内、有组织、可共享的、大量数据的集合。数据是按照特定的数据模型来组织、存储在数据库中的。
2、 数据库的好处
1.持久化数据到本地
2.可以实现结构化查询,方便管理
3、 数据库相关概念
-
DB(database):数据库,保存一组有组织的数据的容器
-
DBMS(Database Management System):数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据,DB是通过DBMS创建的。
-
常见DBMS:MySQL、Oracle、DB2、SqlServer等
-
-
SQL:结构化查询语言,用于和数据库通信的语言
4 、SQL的语言分类
-
DML(Data Manipulate Language):数据操纵语言,用于添加、删除、修改数据库记录,并检查数据完整性
关键字:insert, delete, update 等
-
DDL(Data Define Languge):数据定义语言,用于库和表的创建、修改、删除
关键字:create, drop,alter等
-
TCL(Data Control Language):数据事务语言
-
DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)
关键字:select, where 等
二、MySQL介绍
1 、MySQL介绍
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。
该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
官方网址:MySQL
2、 启动和停止
方式一:计算机——右击管理——服务——MySQL
方式二:通过管理员身份运行cmd命令提示行 net start mysql(启动服务)
net stop mysql(停止服务)
3、 登录和退出
方式一:通过MySQL自带的客户端 只限于root用户
方式二:通过cmd命令提示行关闭,未配置MySQL环境变量,需在MySQL安装的bin下启动cmd
- 登录: mysql 【-h主机名 -P端口号 】-u用户名 -p密码
- 退出: exit或ctrl+C
4、MySQL常见命令
- 查看当前所有数据库
show databases;
- 打开指定的库
use 库名;
- 查看当前库的所有表
show tables;
show tables from库名;
- 创建表
create table 表明(
列名 列类型,
列名 列类型,
.........................
)
- 查看表结构
desc 表名;
5、查看版本号
(1)mysql登录上
select version();
(2)mysql没有登录上
mysql --version
mysql --V
6、 语法规范
- 不区分大小写
- 使用“;”结尾
- 各子句一般分行写
- 关键字不能缩写也不能分行
- 合理使用缩进
- 注释 单行注释:#注释文字 单行注释:-- 注释文字 多行注释:/* 注释文字 */
三、DQL语言
1、常见语句
(1)查询表中记录
select 字段名1,字段名2... from 表名;
*注意: * 如果查询所有字段,则可以使用*来替代字段列表。
select * from 表名;
(2)去除重复
distinct
(3)起别名
as(可以省略)
(3)计算列
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
if null(表达式1,表达式2):null参与的运算,计算结果都为null
- 表达式1:哪个字段需要判断是否为null
- 如果该字段为null后的替换值。
(4)+号的运用
+号在java中可运用于字符的连接,但在mysql中之表示运算。
mysql 中的字符连接:concat
(5)where字句后跟条件
select * from 表名 where 条件;
2.、运算符
(1)简单条件运算符
> 、< 、<= 、>= 、= 、<>、!=
(2)逻辑运算符
&& || !
and or not
(3)模糊查询
BETWEEN...AND
IN( 集合)
LIKE: 占位符: _:单个任意字符
%:多个任意字符
课堂练习
1. 查询员工号为176的员工的姓名和部门号和年薪
SELECT
CONCAT(first_name,last_name)AS 姓名,
`salary`*12 AS 年薪
FROM
`employee`
WHERE `employee_id`=176;
2. 选择工资不在5000到12000的员工的姓名和工资
SELECT
CONCAT(first_name,last_name)AS 姓名,
`salary`
FROM
`employee`
WHERE
`salary` <=5000 OR `salary`>=12000;
SELECT
CONCAT(first_name,last_name)AS 姓名,
`salary`
FROM
`employee`
WHERE
`salary` NOT BETWEEN 5000 AND 12000;
3. 选择在20或50号部门工作的员工姓名和部门号
SELECT
`department_id`,`department_name`
FROM
`departments`
WHERE `department_id`=20 OR `department_id`=50;
SELECT
`department_id`,`department_name`
FROM
`departments`
WHERE `department_id`IN (20 ,50);
4. 选择姓名中有字母a和e的员工姓名
SELECT
CONCAT(first_name,last_name)AS 姓名
FROM
`employee`
WHERE
CONCAT(first_name,last_name) LIKE '%a%' AND CONCAT(first_name,last_name) LIKE '%b%';
5. 显示出表employees部门编号在80-100之间的姓名、职位
SELECT
CONCAT(first_name,last_name)AS 姓名,
`job_id`
FROM
`employee`
WHERE
`department_id`BETWEEN 80 AND 100;