文章目录
一、数据库概述及数据准备:
①SQL、DB、DBMS:
-
DB:
DataBase
——数据库,数据库实际上在硬盘上以文件的形式存在。
-
DBMS:
- D a t a B a s e M a n a g e m e n t S y s t e m DataBase Management System DataBaseManagementSystem——数据库管理系统,常见的有:MySQL、Oracle、SQLServer……
-
SQL:
- 结构化查询语言,是一门标准通用的语言,标准的
SQL
语句适合于所有的数据库产品;SQL
属于高级语言;SQL
语句在执行的时候,实际上内部也会先进行编译,然后再执行SQL
,SQL
语句的编译由DBMS
完成。
- 结构化查询语言,是一门标准通用的语言,标准的
-
彼此之间的关系:
DBMS
负责执行SQL
语句,通过执行SQL
语句来操作DB
中的数据。DBMS
—(执行)—>SQL
—(操作)—>DB
。
②表_table:
-
什么是表?
table
是数据库的基本组成单位,所有的数据都以表格的形式组织,目的是可读性强。
-
一个表包含行和列:
-
行——被称为数据/记录(
data
)。 -
列——被称为字段(
column
)学号(int) 姓名(varchar) 年龄(int) 20181101 张三 21 20181103 李四 22 -
每一个字段应该包含哪些属性?
- 字段名、数据类型、相关的约束。
-
③SQL语句分类:
分类 | 介绍 |
---|---|
DQL(数据查询语言) | 查询语句,凡是select语句都是DQL。 |
DML(数据操作语言) | insert delete update,对表当中的数据进行增删改。 |
DDL(数据定义语言) | create drop alter,对表结构的增删改。 |
TCL(事务控制语言) | commit提交事务,rollback回滚事务。(TCL中的T是Transaction) |
DCL(数据控制语言) | grant授权、revoke撤销权限等。 |
④导入数据:
-
登录 MySQL 数据库管理系统:
mysql -uroot -p密码
-
查看有哪些数据库:
show databases;/*这个不是SQL语句,属于MySQL的命令。*/
-
创建自己的数据库:
create database 数据库名;/*这个不是SQL语句,属于MySQL的命令。*/
-
使用数据库的数据:
use 数据库名;/*这个不是SQL语句,属于MySQL的命令。*/
-
查看当前使用的数据库中有哪些表:
show tables;/*这个不是SQL语句,属于MySQL的命令。*/
- 因为是新建的数据库,所以内部暂时还空空如也。
-
初始化数据:
source sql文件路径;/*可以将sql文件拖入到命令窗口*/
-
test.sql
,这个文件以sql
结尾,这样的文件被称为“sql脚本”。什么是sql
脚本呢? -
当一个文件的扩展名是
.sql
,并且该文件中编写了大量的sql
语句,我们称这样的文件为sql
脚本。- 注意:直接使用
source
命令可以执行sql
脚本。 sql
脚本中的数据量太大的时候,无法打开,请使用source
命令完成初始化。
- 注意:直接使用
-
test.sql
文件中的代码:
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;
- 执行完命令之后,我们再次查看数据库中的表:
-
-
删除数据库:
drop database 数据库名字;
- 这个就不演示了,整完还得我重建!/(ㄒoㄒ)/~~
⑤查看表结构:
+----------------+
| Tables_in_test |
+----------------+
| dept |(部门表)
| emp |(员工表)
| salgrade |(工资等级表)
+----------------+
- 部门表:
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 | |部门地址
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
- 员工表:
mysql> 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 | |部门编号
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
- 工资等级表:
mysql> desc salgrade;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| GRADE | int(11) | YES | | NULL | |等级
| LOSAL | int(11) | YES | | NULL | |最低薪资
| HISAL | int(11) | YES | | NULL | |最高薪资
+-------+---------+------+-----+---------+-------+
3 rows in set (0.01 sec)
⑥查看表中的数据:
mysql> select* from dept;/*这个是查询语句,后面会具体说明。*/
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
4 rows in set (0.00 sec)
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