MySQL笔记
当个云笔记吧,以后学了新的都会 及时 更新
数据库的概念(来自词条
DB DBMS SQL 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。 数据库管理系统(Database Management System)。数据库是通过DBMS创 建和操作的容器 结构化查询语言(Structure Query Language):专门用来与数据库通信的语 言
常见的数据库管理系统:MySQL、Oracle、DB2、SqlServe
SQL语言
即结构化查询语言(Structured Query Language)
对关系型数据库适用,每个操作都是通过sql语句来下达(如果用没有GUI的数据库的话,比如MySQL
DML
DML(Data Manipulation Language):数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性。包括如下SQL语句等:
- 添加数据到数据库中 INSERT
- 修改数据库中的数据 UPDATE
- 删除数据库中的数据 DELETE
- 选择(查询)数据—— SELECT(用的最多,最重要
DDL
DDL(Data Definition Language):数据定义语句,用于库和表的创建、修改、删除。包括如下SQL语句等:
- CREATE TABLE:创建数据库表
- ALTER TABLE:更改表结构、添加、删除、修改列长度
- DROP TABLE:删除表
- CREATE INDEX:在表上建立索引
- DROP INDEX:删除索引
DCL(不是大的项目暂时用不到了
DCL(Data Control Language):数据控制语句,用于定义用户的访问权限和安全级别包括如下SQL语句等:
- GRANT:授予访问权限
- REVOKE:撤销访问权限
- COMMIT:提交事务处理
- ROLLBACK:事务处理回退
- SAVEPOINT:设置保存点
- LOCK:对数据库的特定部分进行锁定
基本查询
命令
SELECT 语句
语法:SELECT *|{[DISTINCT] column|expression [alias],...}FROM table
- SELECT 标识选择哪些列
- FROM 标识从哪个表中选
例子:select 查询列表 from 表名;
ps.
1.查询列表可以是:表中的字段、常量值、表达式、函数
2.查询的结果是一个虚拟的表格
查询全部列: SELECT *FROM 表名;
查询特定的列: SELECT id, name FROM student;
查询表达式: SELECT 100%98;
查询函数: select now();
查询时给列的别名
使用as: SELECT 列名1 AS "列1别名",列名2 AS "列2别名" FROM 表名;
案例:
SELECT 100%98 AS "结果";
SELECT last_name AS "姓",first_name AS "名" FROM employees;
使用空格:
SELECT 列名1 "列1别名",列名2 "列2别名" FROM 表名;
案例:
# 查询salary,显示结果为 out put
SELECT salary AS "out put" FROM employees;
查询去重
select distinct 字段名 from 表名;
# 案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
+号(就是+号
# 直接运算
select 数值+数值;
# 先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select 字符+数值;
# 结果都为null
select null+值;
concat函数
连接符 类似"1"+"23"="123"
select concat(字符1,字符2,字符3,...);
ifnull函数
判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
# 如果commission_pct列为空则返回0
select ifnull(commission_pct,0) from employees;
isnull函数
判断某字段或表达式是否为null,如果是,则返回1,否则返回0
条件查询
使用WHERE 子句,将不满足条件的行过滤掉。
语法:select 查询列表 from 表名 where 筛选条件;
比较运算符 >、< 、>=、<=、= 、<> 大于、小于、大于等于、小于等于、等于、不等于
BETWEEN ...AND... 显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,例:in(100,200)
LIKE 通配符 模糊查询,Like语句中有两个通配符:% 用来匹配多个字符;
例first_name like ‘a%’;_ 用来匹配一个字符。例first_name like ‘a_’;
IS NULL 判断是否为空is null; 判断为空;is not null; 判断不为空
逻辑运算符 and (&&) 多个条件同时成立
or (||) 多个条件任一成立
not (!) 不成立,例:where not(salary>100);
例子
- 查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE
salary>12000;
- 查询部门编号不等于90号的员工名和部门编号
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id<>90;