数据库
MySQL数据库隶属于MySQL AB公司,总部位于瑞典,后被Oracle收购
优点:
- 成本低:开放资源,一般可以免费使用
- 性能高:执行很快
- 简单:容易安装和使用
DBMS分为两类:
- 基于共享文件系统的DBMS(Access)
- 基于客户机—服务器的DBMS(MySQL、Oracle、SQL Server)
MySQL的启动和停止
-
计算机右击—>管理—>服务与应用程序—>服务
-
命令行一管理员身份打开
net start mysql ---------->mysql名 net stop mysql
MySQL服务的登录和退出
-
通过MySQL下的Command Line Client,只适合root用户
-
通过命令行
mysql -h localhost -P 3306 -u root -ppassword 命令 连接主机名 端口号 用户名 密码
如果连接的是本机的端口号,可以直接省略为:
mysql -u root -ppassword
MySQL的常见命令
1.show databases;展示数据库
2.use 库名;打开指定的库
3.show tables;查看当前库的所有表
4.show tables from 库名;查看其他库的所有表
5.create table 表名(
列名 列类型,
列名 列类型,
......
)
6.desc 表名;查看表结构
7.查看服务器版本
方式1:登录到mysql服务端
select version();
方式2:没有登录到mysql服务端
mysql --version 或 mysql --V
MySQL的语法规范
-
不区分大小写,但建议关键字大写,表名、列名小写
-
每条命令用分号和\p结尾,建议使用分号;
-
每条命令根据需要,可以进行缩进和换行,建议关键字单独一行
-
注释:
-
单行注释
- #注释文字
- – 注释文字(注意-- 和 注释文字之间必须有空格)
-
多行注释:/*
注释文字
*/
-
DQL语言:Data QueryLanguage 数据查询语言
基础查询:
语法:
select 查询列表 from 表名;
特点:
- 查询列表可以是:表中的字段、常量值、表达式、函数
- 查询的结构是一个虚拟的表格
进阶一:基础查询
-
查询单个字段:
SELECT last_name FROM employees;
-
查询多个字段:
SELECT last_name,salary,email FROM employees;
-
查询所有字段:
SELECT * FROM employees;
-
查询常量值:
SELECT 100; SELECT 'john';
-
查询表达式:
SELECT 100%8;
-
查询函数:
SELECT VERSION();
-
起别名:
- 便于理解
- 如果要查询的字段有重名的情况,使用别名可以区分
方式一:
SELECT last_name AS 姓,first_name AS 名 FROM employees;
方式二:
SELECT last_name 姓,first_name 名 FROM employees;
-
去重:
SELECT DISINCT department_id FROM employees;
-
+号的作用:仅仅一个功能:运算符,没有连接作用
SELECT 100+90;-------->190 SELECT 'JONE' + 90;------------->90 SELECT NULL + 90;---------->NULL
在mysql中连接用concat
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;
对于NULL的处理------------>ifnull()
SELECT IFNULL(commission_pct,0) AS 奖金率,commission_pct FROM employees; 可能出现null的值 替换null的值
进阶二:条件查询
语法
SELECT 查询列表 FROM 表名 WHERE 筛选条件
分类:
- 按条件表达式筛选
- 简单条件运算符:>、<、=、!=、<>、>=、<=
- 按逻辑表达式筛选
- &&、||、!、and、or、not
- 模糊查询
- like、between and、in、is null
一、
案例1:查询工资>12000的员工信息
SELECT * FROM employees WHERE salary > 12000;
案例2:查询部门编号不等于90的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department_id <> 90;
二、
查询工资在10000到20000之间的员工名
SELECT last_name FROM employees WHERE salary >= 10000 AND salary <= 20000;
或:
SELECT last_name FROM employees WHERE salary BETWEEN 10000 AND 20000;
三、
-
like:一般和通配符搭配使用
- 通配符:%任意多个字段,包含0个字符
- 通配符:_任意单个字段
案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
案例2:查询员工名中第三个字符为e,第五个字符为a的员工和工资
SELECT last_name,salary FROM employees WHERE last_name like '__e_a%';
案例三:查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_\_e%';
’ \ ’ 是mysql中默认的转义字符,也可以自定义转义字符:escape
LIKE '_$_e%' ESCAPE '$'
-
between and
案例1:查询员工编号在100到120之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
- 使用between and 可以提高语句的简洁度
- 包含临界值
- 两个临界值的位置不可以颠倒
-
in:
含义:用于判断某字段的值是否属于in列表中的某一项
特点:
- 使用in提高语句简洁度
- in列表的值类型必须一致或兼容
- in内不支持通配符
案例1:查找工作编号为IT_PROT、AD_YP的员工名字和工作号
SELECT last_name,job_id FROM employees WHERE job_id IN('IT_PORT','AD_YP');
-
is null:
= 或 <> 不能用于判断null值,is null 或 is not null 可以判断null值
案例1:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL;
安全等于:<=>
案例1:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL;
案例2:查询工资为12000的员工信息
SELECT * FROM employees WHERE salary <=> 12000;
is null 和 <=> 的比较:
- is null:仅仅可以判断null值,可读性高,推荐
- <=>:既可以判断null值,又可以判断数值,可读性低