查看数据库有哪些表?
mysql> show tables;
注意:以上命令不区分
大小写,都行。
查看mysql数据库的版本号:
+-----------+
| version() |
+-----------+
| 8.0.23 |
+-----------+
查看当前使用那个数据库?
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
mysql> show
-> databases;
+--------------------+
| Database |
+--------------------+
| bjpowernode |
| information_schema |
| mydatabase |
| mygrade |
| mysql |
| nysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
注意:mysql是不见“;”不执行,“;”表示结束!
mysql> show
->
->
->
-> \c
mysql>
\c用来终止一条命令的输入。
8.数据库最基本的单元是表:table
什么是表table?为什么用表来存储数据呢?
姓名性别年龄(列:字段)
--------------------------------
张三男20 --------------->行(记录)
李四女21 --------------->行(记录)
王五男22 --------------->行(记录)
数据库当中是以表格的形式表示数据的。
因为表比较直观。
任何一张表都有行与列:
行(row):被称为数据/记录。
列(column):被称为字段。
姓名字段、性别字段、年龄字段。
了解一下:
每个字段都有:字段名、数据类型、约束等属性。
字段名可以理解,是一个普通的名字,见名知意就行。
数据类型:字符串,数字,日期等
约束:约束也很多,其中一个叫做唯一性约束。
这种约束添加之后,该字段中的数据不能重复。
9.关于SQL语句的分类?
SQL语句有很多,最好进行分门别类,
这样容易记忆。
分为:
DQL:
数据查询语言(凡事带select关键字的都是查询语句)
select…
DML:
数据操作语言(凡事对表当中的数据进行增删改的都是DML)
insert delete update
insert 增
delete 删
update 改
这个主要是操作表中的数据data。
DDL:
数据定义语言
凡事带有create、drop、alter的都是DDL。
DDL主要是操作表的结构。不是表中的数据。
create:新建,等同于增
drop: 删除
alter:修改
这个增删改和DDL不同,这个主要是对表的结构进行操作。
TCL:
是事务控制语言
包括:
事务提交:commit;
事务回滚:rollback;
DCL:
是数据控制语言。
例如:授权grant、撤销权限rovoke…
10.导入一下提前准备好的数据:
bjpowernode.sql这个文件中是我提前为大家联系准备的数据库表。
怎么将SQL文件数据导入呢?
mysql> source D:\bjpowernode.sql
注意:路径中不要有中文!!!
11.关于导入这几张表?
mysql> show tables;
+-----------------------+
| Tables_in_bjpowernode |
+-----------------------+
| dept |
| emp |
| salgrade |
+-----------------------+
dept是部门表
emp是员工表
salgrade 是工资等级表
怎么查看表中的数据呢?
select * from 表名;//统一执行这个SQL语句。
mysql> select * from emp;//从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 |
+-------+--------+-----------+------+------------+---------+---------+--------+
mysql> select * from dept;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
mysql> select * from salgrade;
+-------+-------+-------+
| GRADE | LOSAL | HISAL |
+-------+-------+-------+
| 1 | 700 | 1200 |
| 2 | 1201 | 1400 |
| 3 | 1401 | 2000 |
| 4 | 2001 | 3000 |
| 5 | 3001 | 9999 |
+-------+-------+-------+
12.不看表中的数据,只看表的结构,有一个命令:
desc 表名;
mysql> desc dept;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int | NO | PRI | NULL | |部门编号
| DNAME | varchar(14) | YES | | NULL | |部门名字
| LOC | varchar(13) | YES | | NULL | |地理位置
+--------+-------------+------+-----+---------+-------+
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO | int | NO | PRI | NULL | |员工编号
| ENAME | varchar(10) | YES | | NULL | |员工姓名
| JOB | varchar(9) | YES | | NULL | |工作岗位
| MGR | int | YES | | NULL | |上级编号
| HIREDATE | date | YES | | NULL | |入职日期
| SAL | double(7,2) | YES | | NULL | |工资
| COMM | double(7,2) | YES | | NULL | |补助
| DEPTNO | int | YES | | NULL | |部门编号
+----------+-------------+------+-----+---------+-------+
mysql> desc salgrade;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| GRADE | int | YES | | NULL | |工资等级
| LOSAL | int | YES | | NULL | |最低工资
| HISAL | int | YES | | NULL | |最高工资
describe缩写为:desc
mysql> describe dept;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int | NO | PRI | NULL | |
| DNAME | varchar(14) | YES | | NULL | |
| LOC | varchar(13) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
13.简单查询
13.1查询一个字段?
select 字段名 from 表名;
其中要注意的是:
select和from都是关键字。
字段名和表名都是标识符。
强调:
对于SQL语句来说,是通用的,
所有的SQL语句以“;”结尾。
另外SQL语句不区分大小写,都行。
查询部门名字?
mysql> select dname from dept;
+------------+
| dname |
+------------+
| ACCOUNTING |
| RESEARCH |
| SALES |
| OPERATIONS |
+------------+
mysql> SELECT DNAME FROM DEPT;
+------------+
| DNAME |
+------------+
| ACCOUNTING |
| RESEARCH |
| SALES |
| OPERATIONS |
+------------+
4 rows in set (0.00 sec)
13.2 查询两个字段,或者多个字段怎么办?
使用逗号隔开“,”
查询部门编号和部门名?
mysql> select deptno, dname from dept;
+--------+------------+
| deptno | dname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
13.3 查询所有字段怎么办?
第一种方式:可以把每个字段都写上
select a,b,c,d,e from tablename;
第二种方式:可以使用 *
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)
这种方式的缺点:
1.效率低
2.可读性差。
在实际开发中不建议,可以自己玩没问题。
你可以在DOS命令窗口中想快速的看一看全表数据可以采用这种方式。
13.4 给查询的列取别名?
mysql> select deptno, dname as deptname from dept;
+--------+------------+
| deptno | deptname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
使用as关键字取别名。
注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname
记住:select语句是永远都不会进行修改操作的。(因为只负责查询)
as关键字可以省略吗?可以的
mysql> select deptno, dname deptname from dept;
+--------+------------+
| deptno | deptname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
假设起别名的时候,别名里面有空格,怎么办?
mysql> select deptno, dname dept name from dept;
DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。
怎么解决?
mysql> select deptno, dname 'dept name' from dept;//加单引号
+--------+------------+
| deptno | dept name |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
mysql> select deptno, dname "dept name" from dept;//加双引号
+--------+------------+
| deptno | dept name |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
注意:在所有的数据库当中,字符串统一使用单引号括起来,
单引号是标准,双引号在oracle数据库中用不了。但是在mysql中可以用。
再次强调:数据库中的字符串都是采用单引号括起来。这是标准的。
双引号不标准。