数据库
mysql常用命令
不见分号不执行
以下命令不区分大小写
- 查看当前数据库 show databases;
- 使用数据库 use+数据库名;
- 创建数据库create database+名字;
- 退出mysql exit
- 查看某个数据库下有哪些表 show tables;
- 查看mysql的版本号 select version;
- 查看当前使用的数据库 select database();
- \c 终止一条命令
数据库中最基本的单元是表:table
数据库中是以表的形式表示数据,因为表比较直观
任何一张表都有行和列:
-
行(row)被称为数据/记录
-
列(column) :被称为字段
姓名 性别 年龄 (列:字段)
张三 男 20 ---->行(记录)
每一字段下的数据类型应一致
每一个字段都有:字段名、数据类型、约束等属性。
sql语句分类
DQL(最常用)
数据查询语言,凡是带有select关键字的都是查询语句
select…
DML
数据操作语言,凡是对表当中的数据进行增删改的都是DML
insert… 增 delete…删 update…改
DDL
数据定义语言,凡是带有create、drop、alter的都是DDL
DDL主要操作的是表的结构、不是表中数据
create…新建、等同于增 alter…修改
TCL
事务控制语言,包括事务提交(commit)、
事务回滚(rollback)
DCL
是数据控制语言,包括授权(grant)、
撤销权限(revoke)
sql数据的导入
sorce+路径(不含中文)
查看表中的数据
-
select * from表名;
统一执行这个SQL语句
-
不看表中的数据,只看表的结构,有一个命令
desc+表名;或describe+表名;
±-------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------±------------±-----±----±--------±------+
| DEPTNO | int | NO | PRI | NULL | |
| DNAME | varchar(14) | YES | | NULL | |
| LOC | varchar(13) | YES | | NULL | |
±-------±------------±-----±----±--------±------+
DQL
简单查询
-
查询一个字段
select 字段名 from 表名;
select和from都是关键字,字段名和表名都是标识符
-
查询多个字段
使用逗号隔开
-
查询所有字段
- 把每个字段都写上
- 使用*
这种方式的缺点:
效率低
可读性差
在实际开发中不建议,在Dos命令窗口中想快速的着一看全表数据可以采用这种方式。
列起别名
select deptno,dname as deptname from dept;
注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫: dname
select 永远不会进行修改操作,他只负责查询检索
DBMS会对语句进行编译,别名中出现空格不符合语法,编译报错。
select deptno,dname as ‘dept name’ from dept;
单(双)引号时可空格
注意:在所有的数据库当中,字符串统一使用单引号括起来,单引号是标准,双引号在oracle数据库中用不了。但是在mysql中可以使用。数据库中的字符串都是采用单引号括起来。这是标准的。双引号不标准。
字段可以使用数学表达式
条件查询
将符合条件的数据查询出来
语法格式
select
字段1,字段2...
from
表名
where
条件;
-
等于(不等于、小于、大于、小于等于、大于等于)
eg.查询薪资等于800的员工姓名和编号
select empno,ename from emp where sal = 800;
不等于(!=)或(<>)
eg.查询薪资不等于800的员工姓名和编号
select empno,ename from emp where sal != 800;
select empno,ename from emp where sal <>800;
eg.查询史密斯的编号和工资
select empno,sal from emp where ename = 'SMITH'
- 查找区间
#法一
select empno,ename,sal from emp where sal>=2450 and sal <=3000;
#法二between...and...
select
empno,ename,sal
from
emp
where
sal between 2450 and 3000;
使用between…and…须遵循区间规则(左小右大)
between…and…是闭区间,包含两边的值
-
null/not null
eg.查询哪些员工的津贴/补助为null
select empno,ename,sal,comm from emp where comm = null#不行
select empno,ename,sal,comm from emp where comm is null
**在数据库中,null不能使用等号衡量,需用is null **
因为数据库中的null代表什么也没有,它不是一个值。
否定 is not null
-
并且and
eg.查询工作岗位是MANAGER并且工资大于250o的员工信息
select empno,ename,,job,sal from emp where job = ‘MANAGER’ and sal > 2500;
-
或者 or同上
and和or同时出现存在优先级问题
and优先级比or高,会先执行and,如果想让or先执行,需要加小括号。