MySQL导入数据
# 在命令行下执行
> mysqldump -u root -p az > d:\data.sql;
创建表
create database 数据库名;
导出表数据
create database 数据库名;
1. 导入数据库之前要先使用数据库
// 用 show databases;看看有哪些数据库
show databases;
// 结果
+--------------------+
| Database |
+--------------------+
| information_schema |
| kkk |
| mysql |
| performance_schema |
| sys |
+--------------------+
// 然后use即可
use kkk
// 可以导入了
mysql> source D:\Mysql_data\test_data\test1\bjpowernode.sql
// 查看导入的这张表的信息
show tables;
+---------------+
| Tables_in_kkk |
+---------------+
| dept |
| emp |
| salgrade |
+---------------+
3 rows in set (0.01 sec)
2.查看表中的数据
select * from 表名
mysql> select * from emp;
+-------+--------+-----------+------+------------+---------+---------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+--------+-----------+------+------------+---------+---------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
+-------+--------+-----------+------+------------+---------+---------+--------+
3.不看表中的数据,只看表的结构,命令:desc 表名
mysql> desc dept;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int(2) | NO | PRI | NULL | | // 部门编号
| DNAME | varchar(14) | YES | | NULL | | // 部门名字
| LOC | varchar(13) | YES | | NULL | | // 地理位置
+--------+-------------+------+-----+---------+-------+
desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO | int(4) | NO | PRI | NULL | | // 员工编号
| ENAME | varchar(10) | YES | | NULL | | // 员工姓名
| JOB | varchar(9) | YES | | NULL | | // 工作岗位
| MGR | int(4) | YES | | NULL | | // 上级编号
| HIREDATE | date | YES | | NULL | | // 入职日期
| SAL | double(7,2) | YES | | NULL | | // 工资
| COMM | double(7,2) | YES | | NULL | | // 津贴
| DEPTNO | int(2) | YES | | NULL | | // 部门编号
+----------+-------------+------+-----+---------+-------+
mysql> desc salgrade;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| GRADE | int(11) | YES | | NULL | | // 工资等级
| LOSAL | int(11) | YES | | NULL | | // 最低工资
| HISAL | int(11) | YES | | NULL | | // 最高工资
+-------+---------+------+-----+---------+-------+
4.MySQL常用命令
// 查看版本号
1. mysql> select version();
+------------+
| version() |
+------------+
| 5.7.42-log |
+------------+
// 查看当前使用的是哪个数据库
2. mysql> select database();
+------------+
| database() |
+------------+
| kkk |
+------------+
3. MySQL是不见分号不执行
写一半不想写了怎么办:\c(用来终止一条sql语句的输出入)
mysql> show
-> databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kkk |
| mysql |
| performance_schema |
| sqlfile |
| sys |
+--------------------+
5.条件查询
1. mysql> select DNAME,LOC as dd from dept;
+------------+----------+
| DNAME | dd |
+------------+----------+
| ACCOUNTING | NEW YORK |
| RESEARCH | DALLAS |
| SALES | CHICAGO |
| OPERATIONS | BOSTON |
+------------+----------+
也可以把“as”省略
select DNAME,LOC dd from dept;
// 如果起的别名里有空格,用单引号(双引号也行)括起来
2. mysql> select DNAME,LOC 'd d' from dept;
+------------+----------+
| DNAME | d d |
+------------+----------+
| ACCOUNTING | NEW YORK |
| RESEARCH | DALLAS |
| SALES | CHICAGO |
| OPERATIONS | BOSTON |
+------------+----------+
**3. 表达式**
mysql> select ename,sal*12 as 'double' from emp
-> ;
+--------+----------+
| ename | double |
+--------+----------+
| SMITH | 9600.00 |
| ALLEN | 19200.00 |
| WARD | 15000.00 |
| JONES | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE | 34200.00 |
| CLARK | 29400.00 |
| SCOTT | 36000.00 |
| KING | 60000.00 |
| TURNER | 18000.00 |
| ADAMS | 13200.00 |
| JAMES | 11400.00 |
| FORD | 36000.00 |
| MILLER | 15600.00 |
+--------+----------+
条件查询(筛选)
都有哪些条件啊?🐕
1. = 等于;<> 不等于;>大于;<小于
// 例:查询工资等于3000的员工的信息
mysql> select empno,ename from emp
-> where sal = 3000;
mysql> select ENAME, EMPNO, SAL FROM emp
-> where sal >= 3000;
+-------+-------+
| empno | ename |
+-------+-------+
| 7788 | SCOTT |
| 7902 | FORD |
+-------+-------+
+-------+-------+---------+
| ENAME | EMPNO | SAL |
+-------+-------+---------+
| SCOTT | 7788 | 3000.00 |
| KING | 7839 | 5000.00 |
| FORD | 7902 | 3000.00 |
+-------+-------+---------+
// 还可以查询工资不等于3000的,可以用 != 或 <>
mysql> select
-> empno, ename,sal
-> from
-> emp
-> where sal between 2450 and 3000; // 等同于 sal>2450 and sal<3000,但between必须遵循左小右大
2. null
问:查询哪些员工的津贴或补助为null
mysql> select ENAME,COMM FROM emp
-> where COMM=null;
Empty set (0.00 sec)
咋整?🐱,用is 或者 is not,因为数据库的null表示啥也没有,有啥比头?
mysql> select ENAME,COMM FROM emp
-> where COMM is null;
+--------+------+
| ENAME | COMM |
+--------+------+
| SMITH | NULL |
| JONES | NULL |
| BLAKE | NULL |
| CLARK | NULL |
| SCOTT | NULL |
| KING | NULL |
| ADAMS | NULL |
| JAMES | NULL |
| FORD | NULL |
| MILLER | NULL |
+--------+------+
3. or、in、not、like
mysql> select ENAME,JOB,SAL from emp
-> where JOB='MANAGER' or JOB='SALESMAN' AND SAL > 2500;//
+-------+---------+---------+
| ENAME | JOB | SAL |
+-------+---------+---------+
| JONES | MANAGER | 2975.00 |
| BLAKE | MANAGER | 2850.00 |
| CLARK | MANAGER | 2450.00 |
+-------+---------+---------+
例:查询工资大于2500,并且部门编号为10或20部门的员工?
select ENAME from emp
-> where SAL > 2500 and DEPTNO=10 OR DEPTNO=20;
问题:and优先级>or,所以‘SAL>2500 and DEPTNO=10’是一个条件;‘DEPTNO=2’也是一个条件,满足其一就打印。
怎么办?–>加括号
mysql> select ENAME from emp
-> where SAL > 2500 and (DEPTNO=10 OR DEPTNO=20);
+-------+
| ENAME |
+-------+
| JONES |
| SCOTT |
| KING |
| FORD |
+-------+
(1)in
mysql> select ename,sal from emp where sal in(800,5000);
// in不是去寻找区间是800到5000,而是判断是否有800或者(or)5000,区间是between
+-------+---------+
| ename | sal |
+-------+---------+
| SMITH | 800.00 |
| KING | 5000.00 |
+-------+---------+
(2)like模糊查询
%是个特殊的符号,_下划线也是。下划线:任意一个字符;%:任意多个字符
例:1.找出名字含有O的?
mysql> select ename from emp
-> where ename like '%O%';
+-------+
| ename |
+-------+
| JONES |
| SCOTT |
| FORD |
+-------+
2.找出名字以T结尾的?
mysql> select ename from emp
-> where ename like '%T'; //%代表balabala
+-------+
| ename |
+-------+
| SCOTT |
+-------+
3.找出名字以K开头的?
mysql> select ename from emp
-> where ename like 'K%';
+-------+
| ename |
+-------+
| KING |
+-------+
4.找出名字第二个字母是A的?
mysql> select ename from emp
-> where ename like '_A%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| JAMES |
+--------+
5.找出名字第三个字母是R的?
mysql> select ename from emp
-> where ename like '__R%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| TURNER |
| FORD |
+--------+
6.找出名字中带_的?
where name like '%\_%' // ‘\’具有转义功能
排序
mysql> select ename,sal from emp
-> order by sal; // 默认升序
+--------+---------+
| ename | sal |
+--------+---------+
| SMITH | 800.00 |
| JAMES | 950.00 |
| ADAMS | 1100.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
| MILLER | 1300.00 |
| TURNER | 1500.00 |
| ALLEN | 1600.00 |
| CLARK | 2450.00 |
| BLAKE | 2850.00 |
| JONES | 2975.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| KING | 5000.00 |
+--------+---------+