基本的SELECT语句
1.SQL概述
SQL(Structured Query Language)是一种用于管理和操作关系数据库的编程语言。它是一种标准化的语言,用于执行各种数据库操作,包括创建、查询、插入、更新和删除数据等。
SQL语言具有简单、易学、高效的特点,可以用于处理大量的数据和复杂的查询。它包含了一系列的命令和语句,可以通过这些命令和语句来操作数据库。
SQL语言的主要功能包括:
数据定义语言(DDL):用于创建和管理数据库对象,如创建表、修改表结构、删除表等。
数据查询语言(DQL):用于查询和检索数据库中的数据,如SELECT语句。
数据操纵语言(DML):用于操作数据库中的数据,如插入数据、更新数据、删除数据等。
数据控制语言(DCL):用于授权和管理数据库的用户访问权限,如GRANT和REVOKE语句。
SQL语言的应用广泛,几乎所有的关系数据库系统都支持SQL语言。它被广泛用于开发应用程序、数据分析、数据管理等领域。
2.SQL语言的规则与规范
2.1基本规则
> SQL可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
> 每条命令以;或\g或\G结束
> 关键字不能被缩写也不能分行
> 关于标点符号
必须保证所有的()、单引号、双引号是成对结束的面
必须使用英文状态下的半角输入方式
字符串型和日期时间类型的数据可以使用单引号(' ')表示
列的别名,尽量使用双引号(" "),而且不建议省略as
2.2SQL大小写规范
> MySQL 在Windows环境下是大小写是不敏感的。
> MySQL 在Linux环境下是大小写是敏感的。
数据库名,表名,表的别名,变量名是严格区分大小写的。
关键字,函数名,列名,列的别名是忽略大小写的。
> 推荐采用统一的书写规范:
数据库名,表名,表的别名,字段名等都小写。
关键字,函数名,绑定变量等都是大写。
2.3注释
单行注释:#注释文字
单行注释:-- 注释文字(--后必须有一个空格)
多行注释:/* 注释文字 */
2.4命名规则
数据库命名规则是一种规范,用于指导开发人员命名数据库、表、列等数据库对象的名称。以下是一些常见的数据库命名规则:
使用有意义的、描述性的名称:名称应该能够准确地描述数据库对象的用途和功能,以便其他人能够清楚地理解它们。
使用小写字母:大多数数据库管理系统(DBMS)区分大小写,因此使用小写字母可以避免不必要的混淆和错误。
使用下划线或者驼峰命名法:下划线命名法将单词用下划线连接,例如
employee_details
;驼峰命名法将单词的首字母大写,例如employeeDetails
。可以根据团队的偏好选择一种。避免使用特殊字符和关键字:特殊字符和关键字(如空格、逗号、句点等)可能会导致错误,应该避免在数据库对象的名称中使用它们。
使用一致的命名约定:在整个数据库中使用一致的命名约定,可以提高代码的可读性和维护性,并减少混乱和错误。
遵循数据库命名规范:某些DBMS可能有特定的命名规范,如Oracle的命名规范。开发人员应该了解并遵循相应的规范。
不要使用缩写和简写:尽量避免使用缩写和简写,除非它们被广泛认可并且不会引起混淆。
综上所述,数据库命名规则旨在提高代码的可读性、可维护性和一致性,并减少错误和混淆。
3.导入现有的数据表,表的数据
3.1方式一:source 文件的全路径名
mysql> source d:\mysqldb.sql
3.2方式二: 基于具体的图形化界面的工具导入数据。
SQLyog和Navicat都是流行的数据库管理工具,它们提供了图形化界面来导入数据。
在SQLyog中,你可以通过以下步骤导入数据:
- 打开SQLyog并连接到你的数据库。
- 在左侧的导航栏中选择你要导入数据的数据库。
- 在顶部菜单中选择"Tools"(工具)然后选择"Import Data from Disk"(从磁盘导入数据)。
- 在弹出窗口中选择你要导入的文件类型,如CSV、SQL等。
- 浏览并选择要导入的文件。
- 根据需要在导入选项中进行设置,如选择导入到哪个表、定义字段分隔符等。
- 点击"Import"(导入)按钮开始导入数据。
在Navicat中,你可以按照以下步骤导入数据:
- 打开Navicat并连接到你的数据库。
- 在左侧的导航栏中选择你要导入数据的数据库。
- 右键点击数据库并选择"Import Wizard"(导入向导)。
- 在弹出窗口中选择你要导入的文件类型,如CSV、SQL等。
- 浏览并选择要导入的文件。
- 根据需要在导入选项中进行设置,如选择导入到哪个表、定义字段分隔符等。
- 点击"Next"(下一步)按钮开始导入数据。
- 完成向导的剩余步骤(如字段映射、表设置等),然后点击"Finish"(完成)按钮。
这些工具为用户提供了一个更直观和方便的方式来导入数据,无需编写复杂的导入脚本。
4.基本的SELECT语句
SELECT...
SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句
4.1SELECT...FROM
> 语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
SELECT employee_id,first_name,email FROM employees;
4.2 列的别名
#列的别名
#as:全称:alias(别名),可以省略
#列的别名可以使用""引起来SELECT employee_id emp_id,last_name AS lname,department_id "部门id",salary*11 annual FROM employees;
4.3去除重复行
#去除重复行 #查询员工表中一共有哪些部门id呢? SELECT department_id FROM employees; #distinct 去重 SELECT DISTINCT department_id FROM employees; #没有实际意义 SELECT DISTINCT department_id,salary FROM employees;
4.4空值参与运算
#空值参与运算 #空值:null #null不等同于0,'','null' SELECT*FROM employees; #空值参与运算结果也为null SELECT employee_id,salary "月工资",salary * (1+commission_pct) *12 "年工资" FROM employees; #实际问题的解决方法:引入ifnull SELECT employee_id,salary "月工资",salary * (1+IFNULL(commission_pct,0)) *12 "年工资" FROM employees;
4.5着重号 ``
- 是 SQL 中的保留关键字。
- 如果有一个表名为
order
,在查询这个表时就需要使用着重号来避免语法错误。正确的查询语句可以是SELECT * FROM
order;
。如果不使用着重号,MySQL 会将order
理解为排序相关的关键字,而不是表名,从而导致查询出错。- 对象名称包含特殊字符或空格的情况
- 假设创建了一个表名为
my table
(包含空格),在引用这个表名时,必须使用着重号,如SELECT * FROM
my table;
。否则,MySQL 无法正确解析这个表名。同样,如果表名中包含其他特殊字符,如-
、#
等,也需要使用着重号。SELECT*FROM `order`;
5.显示表结构
使用DESCRIBE或DESC 命令,表示表结构。
DESCRIBE employees;
或
DESC employees;
6.过滤数据
#查询90号部门的员工信息
#过滤条件 where department_id=90;where声明在from后面
SELECT* FROM employees WHERE department_id=90; SELECT* FROM employees WHERE last_name='king';