DB:
DataBase
——数据库,数据库实际上在硬盘上以文件的形式存在。DBMS:
SQL:
SQL
语句适合于所有的数据库产品;SQL
属于高级语言;SQL
语句在执行的时候,实际上内部也会先进行编译,然后再执行 SQL
,SQL
语句的编译由 DBMS
完成。彼此之间的关系:
DBMS
负责执行 SQL
语句,通过执行 SQL
语句来操作 DB
中的数据。DBMS
—(执行)—>SQL
—(操作)—>DB
。什么是表?
table
是数据库的基本组成单位,所有的数据都以表格的形式组织,目的是可读性强。一个表包含行和列:
行——被称为数据/记录(data
)。
列——被称为字段(column
)
学号(int) | 姓名(varchar) | 年龄(int) |
---|---|---|
20181101 | 张三 | 21 |
20181103 | 李四 | 22 |
每一个字段应该包含哪些属性?
分类 | 介绍 |
---|---|
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 数据库名字;
+----------------+
| 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 |
+--------+-------