数据库(DataBase:DB):存储和管理数据的仓库
- 数据库管理系统(Database Management System:DBMS):管理数据库的系统软件,对数据库提供数据的定义,建立,维护,查询和统计等操作;我们一般说的数据库就是指DBMS:数据库服务器
数据库发展历程:
1:层次数据库和网状数据库
使用指针表示数据之间的联系
2:关系型数据库
代表:Oracle ,DB2,MySQL,Server,HBase
3:后关系数据库
:面相对象数据库 ORDBMS
:非关系型数据库 NoSQL
SQL : 结构化查询语言(Structured Query Language)
- 实际关系型数据库标准语言
数据查询语言DQL
- 数据查询语言也称为”数据检索语言”,可以表中获取数据 ,关键字SELECT是SQl用的对多的动词,其他DQL的关键字还有 WHERE,ORDER BY,GROUP BY,HAVING
数据库操作语言DML
- 其语句包括INSERT,UPDATE,DELETE,分别用于添加,修改,删除表中的行
数据库定义语言DDL
- CREATE 和 DROP,用于在数据库中创建表(CREATE TABLE)和删除表(DROP TABLE),也是查询语言的一部分.
书写规则
1:在MySQL数据库中,SQL语句不区分大小写;
2: SQL语句可单行和多行书写 ;
3:在SQL语句中关键字不可以跨多行或者缩写;
4:为提高可读性,一般关键字大写,其他小写
5:空格和缩进使程序易读
登录数据库
- 本机登录:mysql -uroot -p密码
- 非本机登录: mysql -uroot -p密码 -h ip地址 -P端口
创建数据库
- 创建数据库:create database 数据库名称
- 进入数据库:use 数据库名称
备份数据库
- 导出: mysqldump -uroot -p密码 数据库名称 >导出路径
- 导入: mysqldump -uroot -p密码 数据库名称 >导入路径
DQL操作
简单查询
简单数据的查询 SLECT * FROM table_name 消除重复 SELECT DISINCT 列名 FROM table_name 实现数学运算的查询 NUMBER使用 +-*/ DATE使用+- 设置列的别名 AS
过滤查询
逻辑运算符 ,优先级规则 AND(&&) OR(||) NOT(!) 优先级ADN>OR>NOT 范围查询 IN 判断集合 IS NULL 判断列是否为空 LIKE 通配符 % 表示一个或者是多个字符 _表示一个字符
结果排序
排序 ORDER BY ASC 升序,默认 DESC 降序
分页查询
LIMIT (N-1)*3,3 索引数从0开始,每页显示的条数
多表查询
笛卡尔积 SELECT * FROM 表1 ,表2 尽量避免笛卡尔积 内链接查询 隐式内连接:SELECT * FROM 表1 ,表2 WHERE 等值条件 显示内连接:SELECT * FROM 表1 JOIN 表2 ON 等值条件 自连接查询
DML操作
插入数据
INSERT INTO table_name (列名) VALUES (列值) 数据一一对应
更新数据
UPDATE table_name SET 列名=列值... 如果没有WHERE 则全表的数据都会被修改,注意没有FROM
删除数据
DELETE FROM table_name 如果不加WHERE则全表的数据都会被修改
MySQL查询函数
单行函数
字符函数 CONCAT 拼接字符串,当出现null时,返回null CHAR_LENGTH 字符串长度 LENGTH 字符串长度,单位为字节 数字函数 ABS 绝对值 MOD 两数相除取余 日期函数 CURRENT_DATE 当前日期 CURRENT_TIME 当前时间 LAST_DAY 最后一天
多行函数
分组函数: AVG/SUM 平均值/总和 MIN/MAX 最大值/最小值 COUNT 总数 分组语句: GROUP BY 数据分组, HAVING 限制语句 ,不能与WHERE同时出现
MySQL的对象操作
表
添加字段:ALTER TABLE table_name ADD (列名 类型) 修改字段:ALTER TABLE table_name MODIFY 列名 类型,当字段只包含空值时,类型和大小都可以修改, 删除字段:ALTER TABLE table_name DROP 列名 删除表: DROP table_name 删除表但是不释放所占空间
视图
创建视图:CREATE VIEW 将查表的结果返回给视图 删除视图:DROP VIEW viewName