写点什么

MySQL 基础之二:SQL 语句介绍与使用

用户头像
打工人!
关注
发布于: 2021 年 06 月 04 日
MySQL基础之二:SQL语句介绍与使用

SQL 语句分类:

  1. 啥是 SQL 语句:

它就是 SQL 语言的语句,SQL 语言是有关操作数据库的一门语言,它和 python,java 是一样性质的。上一篇文章用到的命令它实际上是 mysql 命令。

  1. SQL 语句根据功能有几类?

它有五类:

DQL(数据查询语言):它是查询语句,凡是 select 的语句都是 DQL

DML(数据操作语言):比如 insert、delete、update 对表中的数据进行增删改

DDL(数据定义语言):create、drop、alter 对表的结构进行增删改

TCL(事务控制语言):commit 提交事务、rollback 回滚事务

DCL(数据控制语言):grant 授权、revoke 撤销权限

  1. 让我们以最经典的雇员薪资表--emp 进行学习,这是 mysql 官方提供的,建表语句如下:

注:以下的所有操作都是基于这个表进行的,所以要先在数据库 test 中把这个表建立起来。

DROP TABLE IF EXISTS EMP;DROP TABLE IF EXISTS DEPT;DROP TABLE IF EXISTS SALGRADE;
CREATE TABLE DEPT (DEPTNO int(2) not null , DNAME VARCHAR(14) , LOC VARCHAR(13), primary key (DEPTNO) );CREATE TABLE EMP (EMPNO int(4) not null , ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT(4), HIREDATE DATE DEFAULT NULL, SAL DOUBLE(7,2), COMM DOUBLE(7,2), primary key (EMPNO), DEPTNO INT(2) ) ;
CREATE TABLE SALGRADE ( GRADE INT, LOSAL INT, HISAL INT );



INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 10, 'ACCOUNTING', 'NEW YORK'); INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 20, 'RESEARCH', 'DALLAS'); INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 30, 'SALES', 'CHICAGO'); INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 40, 'OPERATIONS', 'BOSTON'); commit; INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 20); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, NULL, 20); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10); commit; INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 1, 700, 1200); INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 2, 1201, 1400); INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 3, 1401, 2000); INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 4, 2001, 3000); INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 5, 3001, 9999); commit;
复制代码

查询语句(DQL):

  1. 首先那就让我们查询刚建立好的表吧,查询 emp 中的所有数据:

select * from emp;  * 表示所有字段都查出来,结果如下:
复制代码


再来说说啥叫字段:实际上就是起了个高大上的名字,上图中的 EMPNO,ENAME,等就叫字段。

  1. 那现在尝试查询其中的某几个字段:

select empno,JOB from emp;
复制代码


再来看看我写的 SQL 语句,是不是 empno 我写的小写,JOB 写的大写,而我们刚刚查询的所有数据显示:所有字段名都是大写。由此可以推导出:SQL 语句不区分大小写。还有一点值得注意:sql 语句中 empno 是小写,查询后,显示的也是小写。

  1. 那字段能不能参与运算呢? 答案是可以

select ename,sal,sal*12 from emp;
复制代码


从结果看,原来的 sal 数据并没有改变,而 sal*12 就是把每一列的 sal 数据*12,并把它作为新的字段名。

  1. 我们还可以给查询到的结果的字段重命名

select ename,sal*12 as yealsal from emp;select ename,sal*12 '年薪' from emp;
复制代码


看上图,as 关键字我们省略了,中间用空格隔开,也是可以的,而且我们还用中文进行了重命名。不过要用英文单引号把年薪两个字引起来。

  1. 条件查询:

但是有时候我们并不需要所有的数据,只对某些数据感兴趣,因此我们可以使用条件查询,关键字:where,比如我们想知道 smith 一个人的工资:

select ename,sal from emp where ename='SMITH';
复制代码


注意:这里的 SMITH 要大写,因为表中的 smith 和 SMITH 是两个不同的人,所以要区分大小写。并且用英文单引号引起来。

发布于: 2021 年 06 月 04 日阅读数: 13
用户头像

打工人!

关注

打工人! 2019.11.10 加入

InfoQ年度最佳内容获得者。 InfoQ签约作者 本人打工人一枚,自动化和控制专业入坑人一枚。目前在研究深度强化学习(DRL)技术。准备入坑互联网小白一枚。喜欢了解科技前沿技术,喜欢拍照。

评论

发布
暂无评论
MySQL基础之二:SQL语句介绍与使用