第一章.SQL概述
保存数据的容器: 数组,集合,文件
1.为什么要使用数据库?
- 实现数据持久化
- 使用完整的管理系统统一管理,易于查询
DB 数据库(database): 存储数据的仓库,它保存了一系列有组织的数据bDBMS 数据库管理系统(Database Management System): 数据库是通过DBMS创建和操作的容器SQL 结构化查询语言(Structure Query Language) : 专门用来和和数据库通信的语言
2.SQL的优点
1.不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL2.简单易学3.虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作
3.SQL语句的类型
DML(Data Manipulation Language) 数据操纵语言 DML用于查询和修改数据记录,包含以下SQL语句: INSERT :添加数据到数据库中 UPDATE:修改数据库中的数据 DELETE:删除数据库中的数据 SELECT:选择(查询)数据,是SQL语言的基础,最为重要
DDL(Data Definition Language) 数据定义语言 用于定义数据库的结构,比如创建,修改或删除数据库对象,包含以下SQL对象: CREATE TABLE:创建数据库表 ALTER TABLE:更改表结构,添加,修改,删除列长度 DROP TABLE:删除表 CREATE INDEX:在表上建立索引 DROP INDEX:删除索引
DCL(Data Control Language) 数据控制语言 用来控制数据库的访问,包括如下SQL语句 GRANT:授予访问权限 REVOKE:撤销访问权限 COMMIT:提交事务处理 ROLLBACK:事务处理回滚 SAVEPOINT:设置保存点 LOCK:对数据库的特定部分进行锁定
第二章.MySQL安装与卸载
1.MySQL安装
见avi视频
2.MySQL卸载
1.关闭Mysql服务 此电脑-->右键--->管理--->服务--->Mysql57-->右键停止2.通过控制面板卸载mysql 控制面板--->卸载程序--->双击mysql3.删除服务 以管理员身份打开dos窗口输入 sc delete MySQL574.如果上面三步操作完还无法正常安装Mysql 重新执行上面三步然后再清理注册表(详见百度)5.如果上面四步执行完后还无法正常安装请重装系统 安装虚拟机-在虚拟上装mysql进行操作 买服务器--安装mysql
3.MySQL数据库的常用命令
进入 mysql, 在命令行中输入: mysql –uroot –p#### (其中:####表示密码)查看 mysql 中有哪些个数据库: show databases; (2)使用一个数据库: use 数据库名称; (3. atguigu)查看指定的数据库中有哪些数据表: show tables; 查看表的结构:desc 表名 (7)删除表: drop table 表名 (8)查看数据库版本 :select version()
第三章.DML(上)
1.查询
#查看所有的库SHOW DATABASES;#选库USE myemployees;#查看库中所有的表SHOW TABLES;#1.查看表中的内容/*格式:select 字段名1,字段名2......from 表名;*/SELECT employee_id,first_name,department_idFROM employees;/*select * #*表示所有的字段from 表名;*/SELECT *FROM employees;#查询字段时可以做运算SELECT salary,salary+100FROM employees;#可以理解成输出语句SELECT 1+1;#dual : 伪表(虚拟表)--可以省略不写SELECT 1+1FROM DUAL;#任何类型的数据和null做运算结果为nullSELECT 1+NULL;
2.过滤
/*格式:select 字段名1,字段名2from 表名where 过滤条件;*/#需求:查询员工薪水大于5000的人的姓名,薪水。SELECT first_name,salaryFROM employeesWHERE salary>5000;#需求:获取部门号为90号部门的所有员工。SELECT first_name,department_idFROM employeesWHERE department_id=90;#注意不要写成==#需求:获取除了100号部门外所有员工SELECT first_name,department_idFROM employees#where department_id<>100;WHERE department_id!=100;#需求:获取员工薪水大于等于5000小于等于10000的员工有哪些SELECT first_name,salaryFROM employees#where salary>=5000 and salary<=10000;#下面的写法相当于 salary>=5000 and salary<=10000;#where salary between 5000 and 10000;#下面的写法是错误的:相当于salary >=10000 and salary <=5000WHERE salary BETWEEN 10000 AND 5000;#需求:获取部门号为90或80的所有员工SELECT first_name,department_idFROM employees#where department_id=90 or department_id=80;#下面的写法相当于:department_id=90 or department_id=80;WHERE department_id IN(90,80);#需求:获取奖金率为null的员工有哪些SELECT first_name,commission_pctFROM employees#where commission_pct=null;#该写法是错误的WHERE commission_pct IS NULL;#需求:获取奖金率不为null的员工有哪些SELECT first_name,commission_pctFROM employeesWHERE commission_pct IS NOT NULL;#需求:获取员工薪水大于等于5000小于等于10000的员工有哪些SELECT first_name,salaryFROM employees#where salary>=5000 and salary<=10000;WHERE salary>=5000 && salary<=10000;#需求:获取部门号为90或80的所有员工SELECT first_name,department_idFROM employees#where department_id=90 or department_id=80;WHERE department_id=90 || department_id=80;#需求:获取薪水范围不在[5000,10000]的员工有哪些SELECT first_name,salaryFROM employeesWHERE salary NOT BETWEEN 5000 AND 10000;
3.模糊查询
#like :模糊查询#需求:查询名字中包含a的员工的姓名有哪些?SELECT first_nameFROM employeesWHERE first_name LIKE '%a%'; #%表示任意个数的任意字符#需求:查询名字中第二个字符为a的员工有哪些?SELECT first_nameFROM employeesWHERE first_name LIKE '_a%';#_表示任意一个字符#需求:查询名字中第二个字符为_的名字有哪些?SELECT first_nameFROM employeesWHERE first_name LIKE '_\_%'; #\_转义字符表示内容为_#自定义谁作为转义字符SELECT first_nameFROM employeesWHERE first_name LIKE '_$_%' ESCAPE '$'; #escape用来指定谁作为转义字符#需求:查询名字中即包含a又包含e的员工姓名有哪些?SELECT first_nameFROM employeesWHERE first_name LIKE '%a%e%' OR first_name LIKE '%e%a%';#where first_name like '%a%' and first_name like '%e%';
4.排序
/*排序格式:select 字段名1,字段名2....from 表名where 过滤条件order by 字段名1 desc/asc,字段名2 desc/asc .......注意:如果不指定字段是升序还是降序那么默认是升序。*/#需求:对所有员工的薪水进行排序-升序SELECT first_name,salaryFROM employees#order by salary asc;ORDER BY salary;#需求:对所有的员工的部门排序-升序,部门号相同再按照薪水排序-降序SELECT first_name,salary,department_idFROM employeesWHERE department_id IS NOT NULL ORDER BY department_id ASC,salary DESC;#需求:给50部门的员工的薪水加1000然后对新的薪水进行降序排序SELECT department_id,salary,salary+1000 AS new_salaryFROM employeesWHERE department_id=50#order by salary+1000 desc;#注意:起别名时尽量不要中间有空格。因为order by后面的别名字段如果有空格使用单引号和双引号都无效ORDER BY new_salary DESC;#如果别名中间有空格可以通过加`字段名`来使用#注意:当字段的名字为关键字时,那么该字段名需要使用`字段名`进行区分。SELECT `select`FROM xxx;