SQL的分类
- DDL:数据定义语言
- CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE
- DML:数据操作语言
- INSERT \ DELETE \ UPDATE \ SELECT
- DCL:数据控制语言
- COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
学习技巧:
大处着眼、小处着手
Windows环境下大小写不敏感
Linux环境下大小写敏感
- 书写规范
- 数据库名、表名、表别名、字段名、字段别名等都小写
- SQL关键字、函数名、绑定变量等都大写
数据导入指令
导入现有的数据表
- 命令行 source 文件的全路径名
- 基于图形化界面的工具导入
最基本的SELECT语句
SELECT
SELECT 字段1,字段2,… FROM 表名
- 表示的是表中的所有的字段或列
SELECT * FROM employees;
SELECT employee_id,last_name,salaryFROM employees;
- 表示的是表中的所有的字段或列
列的别名
- as:全程是alias(别名),可以省略
- 列的别名可以使用一对””引起来
当起的别名需要中间加空格,可以使用””
SELECT employee_id emp_id,last_name AS lname,department_id "部门id",salary*12 "annual sal"FROM emplyees;
不要使用 ‘’,
- 字符串、日期时间类型的变量需要使用 ‘’ 表示
去除重复行—DISTINCT
查询员工表中一共有那些部门id?
错误的,没有去重
SELECT department_idFROM employees;
正确的,去重
SELECT DISTINCT department_idFROM employees;
一些错误的使用 ```sql SELECT salary,DISTINCT department_id FROM employees;
仅仅没有报错,但没有实际意义
SELECT DISTINCT department_id,salary
FROM employees;
<a name="x7fvF"></a>## 空值参与运算- 空值:null- null不等同于0,' ','null'- 空值参预算:结果一定也为空```sqlSELECT employee_id,salary "月工资",salary*(1+commission_pct)*12 "年工资"FROM employees;
解决方案:若是null,则替换为0。引入IFNULL
SELECT employee_id,salary "月工资",salary*(1+IFNULL(commission_pct,0))*12 "年工资"FROM employees;
着重号
- ``
- 当字段名或表名与 保留字、关键字重名了
SELECT * FROM ORDER
SELECT * FROM `ORDER`
查询常数
在查询结果中增加一列固定的常数列SELECT '尚硅谷',123,employee_id,last_nameFROM employees
显示表结构
显示表中字段的详细信息 ```sql DESCRIBE employees;
DESC employees;
<a name="SNump"></a>## 使用WHERE过滤数据- 过滤条件:WHERE- 声明在FROM的后面```sql# 查询90号部门的员工的信息SELECT *FROM employeesWHERE department_id = 90;
# 查询last_name为'King'的员工的信息SELECT *FROM employeesWHERE last_name = 'King';
课后练习
查询员工12个月的工资总和 ,起别名为ANNUAL SALARY
SELECT employee_id,last_name,salary*12*(1+IFNULL(commission_pct,0)) "ANNUAL SALARY"FROM employees;
查询employees表中去重job_id以后的数据
SELECT DISTINCT job_idFROM employees;
查询工资大于12000的员工姓名和工资
SELECT last_name,salaryFROM employeesWHERE salary > 12000;
查询员工号为176的员工的姓名和部门号
SELECT last_name,department_idFROM employeesWHERE employee_id = 176;
显示表departments的结构,并查询其中的全部数据 ```sql DESC departments;
SELECT * FROM departments; ```
