第一章.SQL概述

  1. 保存数据的容器: 数组,集合,文件

1.为什么要使用数据库?

  • 实现数据持久化
  • 使用完整的管理系统统一管理,易于查询
  1. DB 数据库(database): 存储数据的仓库,它保存了一系列有组织的数据b
  2. DBMS 数据库管理系统(Database Management System): 数据库是通过DBMS创建和操作的容器
  3. SQL 结构化查询语言(Structure Query Language) : 专门用来和和数据库通信的语言

2.SQL的优点

  1. 1.不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL
  2. 2.简单易学
  3. 3.虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作

3.SQL语句的类型

  1. DML(Data Manipulation Language) 数据操纵语言 DML用于查询和修改数据记录,包含以下SQL语句:
  2. INSERT :添加数据到数据库中
  3. UPDATE:修改数据库中的数据
  4. DELETE:删除数据库中的数据
  5. SELECT:选择(查询)数据,是SQL语言的基础,最为重要
  1. DDL(Data Definition Language) 数据定义语言 用于定义数据库的结构,比如创建,修改或删除数据库对象,包含以下SQL对象:
  2. CREATE TABLE:创建数据库表
  3. ALTER TABLE:更改表结构,添加,修改,删除列长度
  4. DROP TABLE:删除表
  5. CREATE INDEX:在表上建立索引
  6. DROP INDEX:删除索引
  1. DCL(Data Control Language) 数据控制语言 用来控制数据库的访问,包括如下SQL语句
  2. GRANT:授予访问权限
  3. REVOKE:撤销访问权限
  4. COMMIT:提交事务处理
  5. ROLLBACK:事务处理回滚
  6. SAVEPOINT:设置保存点
  7. LOCK:对数据库的特定部分进行锁定

第二章.MySQL安装与卸载

1.MySQL安装

  1. 见avi视频

2.MySQL卸载

  1. 1.关闭Mysql服务
  2. 此电脑-->右键--->管理--->服务--->Mysql57-->右键停止
  3. 2.通过控制面板卸载mysql
  4. 控制面板--->卸载程序--->双击mysql
  5. 3.删除服务
  6. 以管理员身份打开dos窗口输入
  7. sc delete MySQL57
  8. 4.如果上面三步操作完还无法正常安装Mysql
  9. 重新执行上面三步然后再清理注册表(详见百度)
  10. 5.如果上面四步执行完后还无法正常安装请重装系统
  11. 安装虚拟机-在虚拟上装mysql进行操作
  12. 买服务器--安装mysql

3.MySQL数据库的常用命令

  1. 进入 mysql, 在命令行中输入: mysql –uroot –p#### (其中:####表示密码)
  2. 查看 mysql 中有哪些个数据库: show databases; (2)
  3. 使用一个数据库: use 数据库名称; (3. atguigu)
  4. 查看指定的数据库中有哪些数据表: show tables;
  5. 查看表的结构:desc 表名 (7)
  6. 删除表: drop table 表名 (8)
  7. 查看数据库版本 :select version()

第三章.DML(上)

1.查询

  1. #查看所有的库
  2. SHOW DATABASES;
  3. #选库
  4. USE myemployees;
  5. #查看库中所有的表
  6. SHOW TABLES;
  7. #1.查看表中的内容
  8. /*
  9. 格式:
  10. select 字段名1,字段名2......
  11. from 表名;
  12. */
  13. SELECT employee_id,first_name,department_id
  14. FROM employees;
  15. /*
  16. select * #*表示所有的字段
  17. from 表名;
  18. */
  19. SELECT *
  20. FROM employees;
  21. #查询字段时可以做运算
  22. SELECT salary,salary+100
  23. FROM employees;
  24. #可以理解成输出语句
  25. SELECT 1+1;
  26. #dual : 伪表(虚拟表)--可以省略不写
  27. SELECT 1+1
  28. FROM DUAL;
  29. #任何类型的数据和null做运算结果为null
  30. SELECT 1+NULL;

2.过滤

  1. /*
  2. 格式:
  3. select 字段名1,字段名2
  4. from 表名
  5. where 过滤条件;
  6. */
  7. #需求:查询员工薪水大于5000的人的姓名,薪水。
  8. SELECT first_name,salary
  9. FROM employees
  10. WHERE salary>5000;
  11. #需求:获取部门号为90号部门的所有员工。
  12. SELECT first_name,department_id
  13. FROM employees
  14. WHERE department_id=90;#注意不要写成==
  15. #需求:获取除了100号部门外所有员工
  16. SELECT first_name,department_id
  17. FROM employees
  18. #where department_id<>100;
  19. WHERE department_id!=100;
  20. #需求:获取员工薪水大于等于5000小于等于10000的员工有哪些
  21. SELECT first_name,salary
  22. FROM employees
  23. #where salary>=5000 and salary<=10000;
  24. #下面的写法相当于 salary>=5000 and salary<=10000;
  25. #where salary between 5000 and 10000;
  26. #下面的写法是错误的:相当于salary >=10000 and salary <=5000
  27. WHERE salary BETWEEN 10000 AND 5000;
  28. #需求:获取部门号为90或80的所有员工
  29. SELECT first_name,department_id
  30. FROM employees
  31. #where department_id=90 or department_id=80;
  32. #下面的写法相当于:department_id=90 or department_id=80;
  33. WHERE department_id IN(90,80);
  34. #需求:获取奖金率为null的员工有哪些
  35. SELECT first_name,commission_pct
  36. FROM employees
  37. #where commission_pct=null;#该写法是错误的
  38. WHERE commission_pct IS NULL;
  39. #需求:获取奖金率不为null的员工有哪些
  40. SELECT first_name,commission_pct
  41. FROM employees
  42. WHERE commission_pct IS NOT NULL;
  43. #需求:获取员工薪水大于等于5000小于等于10000的员工有哪些
  44. SELECT first_name,salary
  45. FROM employees
  46. #where salary>=5000 and salary<=10000;
  47. WHERE salary>=5000 && salary<=10000;
  48. #需求:获取部门号为90或80的所有员工
  49. SELECT first_name,department_id
  50. FROM employees
  51. #where department_id=90 or department_id=80;
  52. WHERE department_id=90 || department_id=80;
  53. #需求:获取薪水范围不在[5000,10000]的员工有哪些
  54. SELECT first_name,salary
  55. FROM employees
  56. WHERE salary NOT BETWEEN 5000 AND 10000;

3.模糊查询

  1. #like :模糊查询
  2. #需求:查询名字中包含a的员工的姓名有哪些?
  3. SELECT first_name
  4. FROM employees
  5. WHERE first_name LIKE '%a%'; #%表示任意个数的任意字符
  6. #需求:查询名字中第二个字符为a的员工有哪些?
  7. SELECT first_name
  8. FROM employees
  9. WHERE first_name LIKE '_a%';#_表示任意一个字符
  10. #需求:查询名字中第二个字符为_的名字有哪些?
  11. SELECT first_name
  12. FROM employees
  13. WHERE first_name LIKE '_\_%'; #\_转义字符表示内容为_
  14. #自定义谁作为转义字符
  15. SELECT first_name
  16. FROM employees
  17. WHERE first_name LIKE '_$_%' ESCAPE '$'; #escape用来指定谁作为转义字符
  18. #需求:查询名字中即包含a又包含e的员工姓名有哪些?
  19. SELECT first_name
  20. FROM employees
  21. WHERE first_name LIKE '%a%e%' OR first_name LIKE '%e%a%';
  22. #where first_name like '%a%' and first_name like '%e%';

4.排序

  1. /*
  2. 排序格式:
  3. select 字段名1,字段名2....
  4. from 表名
  5. where 过滤条件
  6. order by 字段名1 desc/asc,字段名2 desc/asc .......
  7. 注意:如果不指定字段是升序还是降序那么默认是升序。
  8. */
  9. #需求:对所有员工的薪水进行排序-升序
  10. SELECT first_name,salary
  11. FROM employees
  12. #order by salary asc;
  13. ORDER BY salary;
  14. #需求:对所有的员工的部门排序-升序,部门号相同再按照薪水排序-降序
  15. SELECT first_name,salary,department_id
  16. FROM employees
  17. WHERE department_id IS NOT NULL
  18. ORDER BY department_id ASC,salary DESC;
  19. #需求:给50部门的员工的薪水加1000然后对新的薪水进行降序排序
  20. SELECT department_id,salary,salary+1000 AS new_salary
  21. FROM employees
  22. WHERE department_id=50
  23. #order by salary+1000 desc;
  24. #注意:起别名时尽量不要中间有空格。因为order by后面的别名字段如果有空格使用单引号和双引号都无效
  25. ORDER BY new_salary DESC;#如果别名中间有空格可以通过加`字段名`来使用
  26. #注意:当字段的名字为关键字时,那么该字段名需要使用`字段名`进行区分。
  27. SELECT `select`
  28. FROM xxx;