基本的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后面