MySQL数据库学习(2)

DAY2

一.MySQL演示使用

5.7版本与8.0版本区别:中文字符5.0版本不可以添加(字符集为latin1),8.0可以成功添加(字符集为utf-8)。
MySQL数据库学习(2)_第1张图片
5.7修改成功!
8.0版本如下所示:
MySQL数据库学习(2)_第2张图片

二.Navicat演示使用

先连接数据库,可以创建多个连接。
MySQL数据库学习(2)_第3张图片
连接SQL5.7版本
MySQL数据库学习(2)_第4张图片

三.基本SELECT语句

1.概述

(1)背景

MySQL数据库学习(2)_第5张图片

(2)SQL分类

  • DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE ,SELECT 等。SELECT是SQL语言的基础,最为重要。
  • DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、ROLLBACK 、 SAVEPOINT 等。
  • 因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。
  • 还有单独将 COMMIT 、 ROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语言)。

(3)SQL语言规则与规范

规则
  • SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进。
  • 每条命令以 ; 或 \g 或 \G 结束。
  • 关键字不能被缩写也不能分行。
  • 关于标点符号:
    • 必须保证所有的()、单引号、双引号是成对结束的。
    • 必须使用英文状态下的半角输入方式。
    • 字符串型和日期时间类型的数据可以使用单引号(’ ')表示。
    • 列的别名,尽量使用双引号(" "),而且不建议省略as。
规范
  • MySQL 在 Windows 环境下是大小写不敏感的。
  • MySQL 在 Linux 环境下是大小写敏感的
    • 数据库名、表名、表的别名、变量名是严格区分大小写的。
    • 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。
  • 推荐采用统一的书写规范:
    • 数据库名、表名、表别名、字段名、字段别名等都小写。
    • SQL 关键字、函数名、绑定变量等都大写。
注释
单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */
命名规则
  • 数据库、表名不得超过30个字符,变量名限制为29个。
  • 必须只能包含 A–Z, a–z, 0–9, _共63个字符。
  • 数据库名、表名、字段名等对象名中间不要包含空格。
  • 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名。
  • 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来。
  • 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。
例:
  • 在使用命令行查询的时候,需要加上use + 数据库; ,但是使用工具时,由于点击已经选中DBTEST2数据库,已经定位在了dbtest2的库中,可以直接执行SELECT语句。
#USE dbtest2;
SELECT * FROM student;

MySQL数据库学习(2)_第6张图片

(4)导入数据

  • 第一种:在命令行客户端登录mysql,使用source指令导入:
mysql> source d:\mysqldb.sql
  • 第二种:图形化界面导入

三.基本SELECT语句

1.基本查询:SELECT…

SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句

2.SELECT … FROM

  • 基本语法:
SELECT 标识选择哪些列(字段1,字段2...FROM 标识从哪个表中选择(字段所在表名)

(1)选择全部字段

SELECT *
FROM departments;

一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
在生产环境下,不推荐你直接使用 SELECT * 进行查询。

(2)选择特定的列

SELECT department_id, location_id
FROM departments

3.列的别名

  • 重命名一个列

  • 便于计算

  • 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。

  • AS 可以省略

  • 建议别名简短,见名知意

  • 语法:AS=alias:别名

SELECT ID1 AS ID_1, ID2
FROM departments;

SELECT ID1 ID_1, ID2
FROM departments;
SELECT ID1 “ID_1”, ID2
FROM departments;

  • 注意:
    (1)有些情况下不能不加“ ”,所以尽量用AS。
    (2)插入语句时,字符等应用“ ”
  • 例:
SELECT employee_id,last_name,salarY
FROM employees;

结果集中字段如下:
MySQL数据库学习(2)_第7张图片

SELECT employee_id emp_id,last_name,department_id
FROM employees;

添加列的别名后,结果集中字段如下:
MySQL数据库学习(2)_第8张图片

4.去除重复行

  • 语法:默认情况下,查询会返回全部行,包括重复行。
SELECT department_id
FROM employees;
  • 错误情况:
    • (1)表的shape不匹配
SELECT salary DISTINCT dapartment_id
FROM employees;

执行报错

SELECT DISTINCT salary  dapartment_id
FROM employees;

可执行,给薪水与部门两列都进行去重,但是查询结果往往无意义,不常使用。

5.空值

  • 所有运算符或列值遇到null值,运算的结果都为null。
  • 这里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。
    例:
# 7.空值——>不等同与0,‘’,‘null’
SELECT employee_id,salary "月工资" ,salary *(1+ commission_pct)*12 "年工资"
FROM employees;
#  查询commission_pct
SELECT commission_pct
FROM employees;

MySQL数据库学习(2)_第9张图片

MySQL数据库学习(2)_第10张图片
可以看出空值和任何值运算都为空。

# 解决方案:如果空值,利用0替换
SELECT employee_id,salary "月工资" ,salary *(1+ IFNULL(commission_pct,0)*12 "年工资"
FROM employees;

MySQL数据库学习(2)_第11张图片

6.着重号

SELECT * FROM ORDER;

报错:ORDER是关键字

SELECT * FROM `order`;

当出现字段名、表名与关键字、保留字重名时,需要加上着重号。

7.查询常数

SELECT '尚硅谷',employee_id,last_name
FROM employees;

MySQL数据库学习(2)_第12张图片

8.显示表结构

#DESC employees;
DESCRIBE employees;

MySQL数据库学习(2)_第13张图片

你可能感兴趣的:(mysql)