MySQL从入门到精通(一)

一、表的定义

表是一种结构化的文件,可以用来存储特定类型的数据,如:学生信息、课程信息等,都可以放到表中,另外表都有特定的名称,而且不能重复。表中有以下几个概念:列、行、主键。

1.列(字段)

列,通常叫做字段,每个字段都包含:字段名称、字段数据类型、字段约束、字段长度;

2.行(记录)

行,通常叫做表中的记录。表中的数据是按行(记录)存储的,表里可以有0条或多条记录;

3.主键

主键,主键是由列构成的,表中的每一行通常都有一个标识,主键可以由一个字段戒多个字段构成,一个字段构的主键称为单一主键,多个字段构成的主键称为复合主键,主键通常是不能修改的。

二、SQL分类

DQL语句 数据查询语言 select 
DML语句 数据操作语言 insert delete update
DDL语句 数据库定义语言 create drop alter
TCL语句 事务控制语言 commit rollback

DML修改数据库表中的数据,DDL是修改数据中表的结构;

三、常用命令

查看MySQL版本

mysql --version

mysql -V

查看当前使用数据库
select database ();
查看MySQL数据库版本
select version();
创建数据库
create database 数据库名称;
终止一条语句
\c
查看和指定现有的数据库
show databases;
指定当前缺省数据库
use bjpowernode;
查看当前数据库中的表
show tables;
查看其它数据库中的表
show tables from 数据库名称;
查看表结构
desc 表名称;
查看表的创建语句
show create table 表名称 ;

四、简单查询

1.建表语句

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;
 

2.查询员工姓名

select ename from emp;

3.查询员工编号和员工姓名

select empno,ename from emp;

4.查询全部字段

select * from emp;

5.计算员工年薪

1)列出员工的编号,姓名和年薪

select empno,ename,sal*12 from emp;

2)将查询出来的字段重命名和显示为中文

 select empno,ename,sal * 12 as ‘年薪’from emp;

五、条件查询

1.支持如下运算符

运算符 说明
= 等于
<>或!=

不等于

< 小于
<= 小于等于
> 大于
>= 大于等于
between..and... 两个值之间
is null 为null
and 并且
or 或者
in 包含
not not可以取非,主要用在is或in
like like为模糊查询,支持%或_匹配

2.查询薪水为5000的员工

select empno,ename,sal from emp where sal = 5000;

3.查询job为MANAGER的员工

select empno,ename,job from emp where job =“manager”;

4.查询薪水不等于5000的员工

select empno,ename,sal from emp where sal <> 5000;

5.查询工作岗位不等于MANAGER的员工

select empno,ename,job from emp where job <>„MANAGER‟;

6.查询薪水为1600到3000的员工

select empno,ename,sal from emp where sal between 1600 and 3000;

7.查询津贴为空的员工

select empno,ename,comm from emp where comm is null;

8.查询工作岗位为“MANAGER”并且薪水大于2500的员工

select empno,ename,job,sal from emp where job ="MANAGER" and sal > 2500;

9.查询出 job 为 SALESMAN 和 job为MANAGER的员工

select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';

10.查询出Job为 SALESMAN 和 Job为 MANAGER 的员工

select ename,job from emp where job in ('SALESMAN','MANAGER');

11.查询出薪水不为1600和3000的员工

select ename,sal from emp where sal not in (1600,3000);

12.查询出薪水不是1600和薪水不是3000的员工

select ename,sal from emp where not (sal = 1600 or sal = 3000);
select ename,sal from emp where sal not in (1600,3000);
select ename,sal from emp where sal <> 1600 and sal <> 3000;

13.查询以姓名以 M 开头的所有员工‘M%’

select ename from emp where ename like 'M%';

14.查询姓名以N结尾的所有员工‘%N’

select ename from emp where ename like '%N';

15.查询姓名中包含O的所有员工‘%O%’

select ename from emp where ename like '%O%';

16.查询姓名中第二个字符为A的所有员工‘_A%’

select ename from emp where ename like '_A%';

17.查询姓名中倒数第二个字符为E的所有员工‘%E_’

select ename from emp where ename like '%E_';

18.查询姓名中第三个字符为N的所有员工姓名‘__R%’

select ename from emp where ename like '__R%';
发布了98 篇原创文章 · 获赞 148 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_40310148/article/details/102942717