第17天:数据库学习笔记1
数据库学习笔记
1 SQL语言介绍
2 数据库的安装
2.1 启动数据库
方式一:net start mysql
方式二:在计算机管理里面手动打开数据库
2.2 登录MySQL
方式一:本地登录
即数据库与客户端在同一台电脑上。
方式二:远程登录
mysql -uroot -h数据库服务器的IP地址 -p
但用root账户对数据库服务器进行远程登录,一般会被拒绝,因为root账户的权限非常高。
若是想要访问,可以按照以下步骤进行操作:
- 第一步:先在本地使用root账户登录mysql
- 第二步:use mysql
- 第三步:update user set host=‘%’ where user=‘root’;
- 第四步:flush privileges;
- 第五步:退出,再以远程方式登录
3 初始化数据
3.1查看有多少个数据库
show databases;
3.2 使用数据库
use 数据库名;
3.3 查看表
show tables
3.4 创建新的数据库
create database 数据库名;
3.5 删除数据库
drop database 数据库名;
3.6 查看当前使用的数据库
select database();
3.7 退出mysql
- exit
- quit
- ctrl+c
3.8 查看mysql版本
- 方式一:启动数据库后,用
select version();
查看 - 方式二:在cmd中输入
mysql --version
3.9 熟悉表结构
desc 表名
;
3.10 初始化数据
- 你入职的时候,项目一般都是进展了一部分,多数情况下你进项目组的时候数据库的表以及数据都是有的,项目经理第一天可能会给你一个较大的sql脚本文件,你需要执行这个脚本文件来初始化你的本地数据库。(当然,也有可能数据库是共享的。)
- 创建文件:xie.sql,把以上SQL语句全部复制到sql脚本文件中。
- 执行SQL脚本文件,初始化数据库
- 第一步:命令窗口登录mysql
- 第二步:创建数据库xie(如果之前已经创建就不需要再创建了):create database xie;
- 第三步:使用数据库xie:use xie;
- 第四步:source命令执行sql脚本,注意:source命令后面是sql脚本文件的绝对路径。
4 查询语句DQL专题
select语句永远不会改变表的结构
4.1 简单查询
4.1.1 查询一个字段
语法格式:select 字段名 from 表名;
4.1.2 sql语句写错了
输入\c来终结该语句
4.1.2 查询多个字段
语法格式:select 字段名,字段名,字段名… from 表名;
4.1.3 查询一个表所有信息
语法格式:select * from 表名;
4.1.4查询时字段可参与数学运算
例如:select deptno*12 from dept;
4.1.5 查询时给字段起别名
可以起中文别名
- 情况一:select 字段 as 字段别名 from 表名;
- 情况二:select 字段 字段别名 from 表名;(as可以省略)
- 情况三:select 字段 ‘字段别名 1’ from 表名;(若是别名有空格必须给别名括上单引号或双引号,其中单引号是标准)
4.2 条件查询
条件 | 说明 |
---|---|
= | 等于 |
<>或!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
between…and… | 等同于 >= and <= |
is null | 为空 |
is not null | 不为空 |
<=> | 安全等于(可读性差,很少使用了)。 |
and 或 && | 并且 |
or 或 || | 或者 |
in | 在指定的值当中 |
not in | 不在指定的值当中 |
exists | |
not exists | |
like | 模糊查询 |
4.2.1 条件查询语法格式
select 字段名 from 表名 where 过滤条件;
执行顺序,先from再where最后select
mysql无论是语句还是字段等内容都不区分大小写,orcale区分大小写
4.2.2 不等于查询
在开发中一般使用<>表示不等于。
select * from emp where deptno<>10;
4.2.3 区间查询
查询工资在1600~3000的员工信息
between…and…是闭区间的。between 1000 and 2000 是包含1000和2000的。
- 方式一:
select * from emp where sal>=1600 and sal<=3000;
- 方式二:
select * from emp where sal between 1600 and 3000;
4.2.4 and和or的优先级问题
and和or同时出现时,and优先级较高,会先执行,如果希望or先执行,这个时候需要给or条件添加小括号。另外,以后遇到不确定的优先级时,可以通过添加小括号的方式来解决。对于优先级问题没必要记忆。
4.2.5 between…and…
between…and…是闭区间的。between 1000 and 2000 是包含1000和2000的。
不仅能用在数字方面,字符串,日期方面也可以。
- 数字:
select * from emp where sal between 1600 and 3000;
- 字符串:
select ename from emp where ename between 'a' and 'z';
- 日期:
select * from emp where HIREDATE between ' 1982-01-23' and '1987-04-19';
4.2.6 is null is not null
判断某个数据是否为null,不能使用等号,只能使用 is null 判断某个数据是否不为null,不能使用不等号,只能使用 is not null 在数据库中null不是一个值,不能用等号和不等号衡量,null代表什么也没有,没有数据,没有值.
4.2.7 in not in
案例1:找出工作岗位是MANAGER和SALESMAN的员工姓名、薪资、工作岗位.
- 方式一:select ename,sal,job from emp where job= ‘MANAGER’ or job=‘SALESMAN’;
- 方式二:select ename,sal,job from emp where job in(‘MANAGER’,‘SALESMAN’);
4.2.8 in not in 与null的小细节
select * from emp where comm = NULL or comm = 300;
上述语句执行的效果如下:select * from emp where comm = 300;
NULL不能用等号=进行判断,所以comm = NULL结果是false.
in是自动忽略NULL的,但not in是不忽略NULL的。
如下代码:mysql> select * from emp where comm not in(null,300);
结果什么也查不出来。
4.2.9 模糊查询
语法格式:select …from … where 字段1 like ‘通配符表达式’;
- %代表任意多个字符
- _代表任意一个字符
查含有下划线的字符需要转义_
5 排序操作
5.1 单个字段排序
语法格式:select .. from .. order by 字段 asc/desc
默认为升序。
5.2 多个字段排序
语法格式:select .. from .. order by 字段 asc/desc,字段 asc/desc
例子:查询员工的编号、姓名、薪资,按照薪资升序排列,如果薪资相同的,再按照姓名升序排列。
select empno,ename,sal from emp order by sal asc,ename asc;
5.3 where和order by的位置
找出岗位是MANAGER的员工姓名和薪资,按照薪资升序排列。
select ename,sal from emp where job = 'MANAGER' order by sal asc;
where先执行,order by语句是最后执行的。
5.4 执行顺序
首先执行where再执行from再执行select最后执行order by。
6 distinct去重
去除表中重复的记录(联合全部字段去重),但真实数据库里面的不会改变。
distinct 出现在所有字段的最前方。
数据库注意事项
当数据库连接不上的时候,可以看看是不是在计算机管理的标准里面将数据库关闭了。
`
where先执行,order by语句是最后执行的。
5.4 执行顺序
首先执行where再执行from再执行select最后执行order by。
6 distinct去重
去除表中重复的记录(联合全部字段去重),但真实数据库里面的不会改变。
distinct 出现在所有字段的最前方。
数据库注意事项
当数据库连接不上的时候,可以看看是不是在计算机管理的标准里面将数据库关闭了。