数据库第一天

Mysql的启动与停止
方式一:计算机--右键管理--服务
方式二:通过管理员身份运行cmd
net start服务名(启动服务)
net stop 服务名(停止服务)

Mysql服务的登录和退出
方式一:通过mysql自带的客户端
只限root用户
方式二:通过windows自带的客户端
在cmd中输入mysql -h localhost -P 3306 -u root -p(写密码可写可不写 不写的话在后面会提示你写)
[-h 主机名 -P端口号]自带电脑可以不写 -u 用户名 -p 密码

Mysql的常见命令
1.查看当前所有的数据库
show databases;
2.打开指定的库
use 库名;
3.查看当前库的所有表
show tables;
4.查看其他库的所有表
show tables from 表名
5.创建表
create table 表名(

列名 列类型,
列名 列类型,
。。。
);

6.查看结构
desc 表名;

7.查看服务器的版本
方式一:登录到mysql的服务端
select version();
方式二:没有登录到mysql的服务端
mysql --version

mysql --V
Mysql的语法规范
1.不区分大小写,但关键字大写,表名,列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进 或换行
4.注释
单行注释 #注释文字
-- 注释文字
多行注释:/*注释文字*/

进阶1:基础查询

语法:
select 查询 from 表名;

特点:
查询列表可以是:表中的字段、常量值、表达式、函数
查询的结果是一个虚拟的表格

使用数据库
use 数据库名;

1.查询单个字段
SELECT last_name FROM employees;

2.查询多个字段
SELECT last_name,salay,email FROM employees;

3.查询表中多个字段
SELECT 直接点表然后逗号连接
F10进行排列

SELECT * FROM employees 利用通配符* 顺序显示所有的表

`着重号 不是单引号 区分关键字和表名


4.查询常量值
SELECT 100;
SELECT 'jonh';

5.查询表达式
SELECT 10*100;

6.查询函数
SELECT VERSION();

7.起别名

方式一:使用as
SELECT 100*98 as 结果;
SELECT last_name as 姓,frist_name as 名 FROM 表名;
方式二:使用空格
SELECT last_name 姓,frist_name 名 FROM 表名;
方式三:查询salay 显示结果为 out put
SELECT salay AS "out put" FROM employees;

8.去重

案列:查询员工表中涉及到的所有部门编号
SELECT DISTINCT department_id FROM employees;

9.+的作用

mysql中的加号仅有一个功能:运算符
select 100+90; 两个数值型 两个数相加
select '123'+90;字符串和数值相加
select 'ada'+90;不能相加为0 结果为90
select null+90; 有null结果都是null

SELECT CONCAT('a','b','c') AS 结果;
案列:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT CONCAT(last_name,frist_name) AS 姓名
FROM employees;

进阶2:条件查询:


语法:
3. select 查询
1. from 表名
2. where 筛选条件;
执行顺序1,2,3

分类:
一、按条件表达式筛选

条件运算符:>m < = != <> >= <=

二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not

&&和and:两个条件都为true,结果为true 反之为false
||或or:只要一个条件为true结果就为true 反之为false
!或not:如果连接的条件本身为false,结果为true,反之为false

三、模糊查询
like
between and
in
is null

一、按条件表达式筛选

案例一:查询工资>12000的员工信息

SELECT *
FROM employees
WHERE salay>12000;

案例二:查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id
FROM employees
WHERE department_id<>90;

二.按逻辑表达式筛选

案列1:查询工资z在10000到20000之间的员工名、工资以及奖金
SELECT last_name,salay,commission_pct
FROM employees
WHERE salay>=10000 AND salay<=20000;

案例二:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT * FROM employees
WHERE NOT(department_id<90 AND department_id>100) OR salay>15000;
三、模糊查询
like
特点:
1.一般的和通配符搭配使用
%任意多个字符,包含0个字符
_任意单个字符
between and
in
is null

1.like
案例一:查询员工名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name like (%a%);

案例二:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name,salay
FROM employees
WHERE last_name LIKE '___e_a%';

案例三:查询员工名中第二个字符为_的员工名
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$'; ESCAPE转义
2.between and
使用between and可以提高语句的简洁度
包含临界值
两个临界值不要调换位置

案例一:查询员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employees_id>=100 AND employees_id<=120;


SELECT *
FROM employees
WHERE employees_id BETWEEN 100 AND 120;

3.in

含义:用于判断某字段的值是否属于in列表中的某一项
特点:1.使用in提高语句的简洁度
2.in列表的值类型必须一致或兼容
3.不支持%通配符

案例一:查询员工的工种编号 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT last_name,job_id
FROM employees
WHERE job_id='IT_PROG' OR job_id='AD_VP' OR job_id='AD_PRES';

SELECT last_name,job_id
FROM employees
WHERE job_id IN ('IT_PROG'、'AD_VP'、'AD_PRES')

4.is null
=或<>不能用于判断null值
is null或者is not null 可以判断null值


案例一:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NULL;

案例二:查询有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

安全等于<=>
案例一:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct <=> NULL;

案例二:查询工资为12000的员工信息
SELECT last_name,salay
FROM employees
WHERE salay<=>12000;

is null pk <=>
IS NULL 仅仅只可判断NULL值,可读性较高,建议使用
<=> 既可以判断NULL值,又可以判断普通的数值,可读性较低

原文地址:https://www.cnblogs.com/liugangjiayou/p/11660805.html