_SQL概述与SQL分类
- SQL的分类:
- DDL:数据定义语言
- CERATE \ ALTER \ DROP \ RENAME \ TRUNCATE
- DML:数据操作语言
- INSERT \ DELETE \ UODATE \ SELECT
- DCL:数据控制语言
- COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
- DDL:数据定义语言
_ DDL操作数据库
- 查询:
- SHOW DATABASES;
- 创建:
- CREATE DATABASES;
- CREATE DATABASES IF NOT EXISTS 数据库名称 创建数据库(判断,如果不存在则创建);
- 删除
- 删除数据库
- DROP DATABASES 数据库名称;
- 删除数据库(判断,如果存在则删除)
- DROP DATABASES IF EXISTS 数据库名称
- 删除数据库
- 使用数据库
- 查看当前使用的数据库
- SELECT DATABASES();
- 使用数据库
- USE 数据库名称;
- 查看当前使用的数据库
_DDL操作表
-
查询表:
- 查询当前数据库下所有表的名称
- SHOW TABLES;
- 查询表的结构
- DESC 表名称
- 查询当前数据库下所有表的名称
-
创建表
-
CREAT TABLE 表名( 字段名1 数据类型1, 字段名2 数据类型2, ... 字段名n 数据类型n ); 注意:最后一行末尾不能加逗号
-
_DDL操作表,删除&修改
- 删除表
- DROP TABLE 表名;
- 删除表时判断表是否存在
- DROP TABLE EXISTS 表名;
- 修改表
- 修改表名
- ALTER TABLE 表名 RENAME TO 新的表名;
- 添加一列
- ALTER TABLE 表名 ADD 列名 数据类型;
- 修改数据类型
- ALTER TABLE 表名 MODIFY 列名 新数据类型;
- 修改列名和数据类型
- ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
- 删除列
- ALTER TABLE 表名 DROP 列名;
- 修改表名
_列的别名、去重、NULL、DESC等操作
-
#1. 去除重复行 select distinct manager_id , employee_id ,last_name from employees ; # 仅仅只是没有报错,查询没有意义 # 2. 空值参与运算 # - 空值!= 0; # - 空值为NULL; select employee_id , last_name , salary"月工资" , salary*(1+ifnull(commission_pct,0))*12"年工资" from employees ; # 3. 着重号` # - select * from `order` o ; # 4. 查询常数 select '尚硅谷'employee_id, last_name , salary from employees e ; # 5. 显示表结构 describe employees ;
_使用WHERE过滤数据
-
# 1. 过滤数据 # 需求:查询90号部门的员工信息 select * from employees e # 过滤条件: where department_id = 90; # 需求:查询'King'员工的信息 select * from employees e where last_name = 'King';
_运算符的使用
-
# 1. 过滤数据 # 需求:查询90号部门的员工信息 select * from employees e # 过滤条件: where department_id = 90; # 需求:查询'King'员工的信息 select * from employees e where last_name = 'King'; # 算数运算符:+ - * / DIV select 100,100+100, 100*100 , 25.5*5/10; # 取模运算 % mod # 练习:查询员工Id为偶数的的员工 select employee_id , last_name ,salary from employees e where employee_id %2 = 0; # 比较运算符 = = <=> != <= < > => select 1 = 2 , 1!= 2 ; select * from employees e ; # <=> 作用等同于= , <=> 适用于有NULL参与的情况,为NULL二生 select department_id ,last_name ,commission_pct from employees e where commission_pct <=>null; # LEAST \ GREATEST 排序 select least(first_name ,last_name) from employees e ; # BETWEEN ... AND # 查询工资在6000到8000的员工信息(包含边界) select * from employees where salary between 6000 and 8000; # 查询工资不在6000到8000的员工信息(包含边界) select * from employees e where not salary between 6000 and 8000; # 需求:查询部门为10,20,30,部门的员工信息 select * from employees e where department_id in (10,20,30); # 需求:查询工资不是6000,7000,8000的员工 select * from employees e where not salary in(6000,7000,8000); # 模糊查询 # 需求:查询last—_name里面包含字符'a'的员工 select last_name from employees e where last_name like '%a%'; # _ :代表一个不确定的字符 # 查询第3个字符时'a'的员工信息 select last_name from employees e where last_name like '__a%'; # 查询第2个字符是_且第3个字符时'a'的员工信息 # 需要使用转义字符:\ select last_name from employees where last_name like '_\_a%';