数据库学习笔记

179 阅读3分钟

基本的SELECT语句

1. SQL的分类:

DDL:数据定义语言:CREATE(创建) \ALTER(修改) \DROP(删除) \RENAME(重命名) \TRUNCATE(清空)

DML:数据操作语言:INSERT(增) \DELETE(删) \UPDATE(改) \ SELECT(查)

DLC:数据控制语言:COMMIT(提交) \ROLLBACK(回滚) \SAVEPOINT(保存点) \GRANT(赋予权力) \REVOKE(回收权力)


2.SQL语言的规则:(必须遵守)

SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进。

每条命令以 ; 或 \g 或 \G 结束

关键字不能被缩写也不能分行

关于标点符号

必须保证所有的()、单引号、双引号是成对结束的

必须使用英文状态下的半角输入方式

字符串型和日期时间类型的数据可以使用单引号(' ')表示

列的别名,尽量使用双引号(" "),而且不建议省略as


3.SQL语言的规范:(可以不遵守)

MySQL 在 Windows 环境下是大小写不敏感的

MySQL 在 Linux 环境下是大小写敏感的

数据库名、表名、表的别名、变量名是严格区分大小写的

关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。

推荐采用统一的书写规范:

数据库名、表名、表别名、字段名、字段别名等都小写

SQL 关键字、函数名、绑定变量等都大写


4.导入现有的数据表、表的数据

方式1:source文件的全路径名

举例:source d:\atguigudb.sql;

方式2:基于具体的图形化界面的工具可以导入数据

步骤:SQLyog中选择“工具”--->“执行sql脚本”--->选中xxx.sql


5.最基本的SELECT语句:

5.1格式:

SELECT 字段1,字段2...

FROM 表名

5.2案例:

SELECT 1,1+1;

SELECT 1,1+1

FROM DUAL; #DUAL是伪表

*:代表表中所有的字段(或列)

可获取表中的所有数据

SELECT * FROM employees;

可获取表中的部分数据

SELECT employee_id,last_name,email

FROM employees


6.列的别名

as:全称:alias(别名),可以省略

列的别名可以用一对""引起来,不可以使用''号(由于MsSQL语法不规范所以可以使用'')

SELECT employee_id AS emp_id,last_name AS

lname,department_id  "部门id",

salary *12 "   annual sal"

FROM employees


7.去除重复

7.1 关键字:distinct

#查询员工表中有多少个部门

#错误的:没有去重:

SELECT department_id FROM employees

正确的:去除重复

SELECT DISTINCT department_id

FROM employees

错误用法:因为前后表生成的行数不同无法显示

SELECT salary ,DISTINCT department_id   FROM employees

错误用法:可以显示结果集,但是没有意义

SELECT DISTINCT department_id,salary   FROM employees


8.空值参与运算

8.1空值是:null

8.2空值(null)不等同于0,'','null'

SELECT * FROM employees

8.3空值参与运算:结果一定为空。

SELECT employee_id,salary 月工资,salary *

(1+commission_pct) * 12 年工资,commission_pct

FROM employees

#sji5解决问题的解决方案:引入IFNULL

SELECT employee_id,salary 月工资,salary *

(1+IFNULL(commission_pct,0)) * 12 年工资,

commission_pct  FROM employees


9.着重号``:将一些特殊字变为普通字

SELECT * FROM  order;


10.查询常数:常数会在每列生成

SELECT '尚硅谷',employee_id,last_name

FROM employees


11.显示表的结构

DESCRIBE employees;

DESC employees;


12.过滤查询

' '中的字段区分大小写,但是MySQL不严谨所以可以查询到

SELECT * FROM employees

过滤条件一定要在FROM后面