总结数据库
1.1 为什么要使用数据库?
1.持久化:将内存中的数据存储在数据库中
方便管理数据
1.2 什么是数据库
DB:数据库保存了一系列有组织的数据
DBMS:数据管理系统
mysql 是一种开放源代码的关系型数据库管理系统
Mysql的逻辑架构与存储引擎
1.连接层
2.服务层
3.引擎层(最与众不同)
4.存储层
MySQL的数据类型
整型(xxxint)
位类型(bit)
浮点型(float和double、real)
定点数(decimal,numeric)
日期时间类型(date,time,datetime,year)
字符串(char,varchar,xxxtext)
二进制数据(xxxBlob、xxbinary)
枚举(enum)
特殊的NULL值
Null特征:
(1)所有的类型的值都可以是null,包括int、float等数据类型
(2)空字符串"",不等于null,0也不等于null,false也不等于null
(3)任何运算符,判断符碰到NULL,都得NULL
(4)NULL的判断只能用is null,is not null
(5)NULL 影响查询速度,一般避免使值为NULL
面试:
为什么建表时,加not null default '' 或 default 0
答:不想让表中出现null值.
为什么不想要的null的值
答:(1)不好比较,null是一种特殊值,比较时,只能用专门的is null 和 is not null来比较.
碰到运算符,一律返回null
(2)效率不高,影响提高索引效果.
因此,我们往往,在建表时 not null default '' 或 default 0
SQL
sql :structure query language 结构化查询语言
sql分类:
DDL:数据定义语言, 关键字 create,drop alter
DML: 数据操作语言,用于添加,删除,更新,查询 insert,delete,update,select
DCL:数据控制语句 关键字 grant,revoke
约束:constraints
数据完整性是指数据的精确性 和可靠性
从4个方面考虑:实体完整性,域完整性,引用完整性,用户自定义完整性
约束分为 主键约束,primary key
外键约束,foreign key
唯一键约束 unique key
not nulL 约束 非空约束 d7802f253cc0412391d73964577db44e.doc
check 检查约束 age int check(age>0) sex char(2) (sex in('男',"女"))
default 缺省约束 is_actived int default 1
索引index
索引:索引是一个单独的,物理的数据库结构,索引是要消耗数据库空间的,而约束是一种逻辑概念
索引好处:加快了查询的速度
索引坏处:降低了增删改的速度,增大了表的文件大小(索引文件甚至可能比数据文件大)
mysql提供了多种 索引类型选择:
1》普通索引
2》唯一性索引
3》主键索引
4》全文索引
自增列 auto_increment
关于自增长auto_increment:
(1)整数类型的字段才可以设置自增长。
(2)当需要产生唯一标识符或顺序值时,可设置自增长。
(3)一个表最多只能有一个自增长列
(4)自增长列必须非空
(5)自增长列必须是主键列或唯一键列。
(6)InnoDB表的自动增长列可以手动插入,但是插入的值如果是空或者0,则实际插入的将是自动增长后的值。
DML操作
数据操纵语言(DML)DML用于插入、修改、删除数据记录,包括如下SQL语句:
INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
去重DISTINCT(distinct)
select distinct dept_id from t_employe;
笛卡尔积
定义:将两个(或多个)表的所有行进行组合,连接后的行数为两个表的乘积数
在MySQL中如下情况会出现笛卡尔积,主要是因为缺少关联条件或者关联条件不准确
关联条件
表链接的约束条件有三种方式:where,on,using
where: 适用于所有关联查询
ON:只能和JOIN一起使用,只能写关联条件。虽然关联条件可以并到WHERE中和其他条件一起写,但分开写可读性更好。
USING:只能和JOIN一起使用,而且要求两个关联字段在关联表中名称一致,而且只能表示关联字段值相等
自连接
当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。然后两个表再进行内连接,外连接等查询
select的5个句子
where条件查询
group by 分组查询
聚合函数 avg,count,min,max,sum
having筛选
having与where不同点
where针对表中的列发挥作用,查询数据,having针对查询结果中的列的发挥作用
where后面不能写分组函数,而 having后面可以使用分组函数
having只用于group by 分组统计语句
order by 排序
按一个或多个字段对查询结果进行查询
#查询员工基本工资,按照基本工资升序排列,如果工资相同,按照eid升序排列
SELECT t_employee.eid,basic_salary FROM t_employee INNER JOIN t_salary
ON t_employee.eid = t_salary.eid
ORDER BY basic_salary,eid;
#查询员工基本工资,按照基本工资降序排列,如果工资相同,按照eid排列
SELECT t_employee.eid,basic_salary FROM t_employee INNER JOIN t_salary
ON t_employee.eid = t_salary.eid
ORDER BY basic_salary DESC,eid;
limit 分页
limit m,n
m表示从下标为m的记录开始查询,第一条记录下标为0,n表示取出n条出来,如果从m开始不够n条了,就有几条取几条。m=(page-1)*n,(page页码,n表示每页显示的条数)
如果第一页limit 0,n
如果第二页limit n,n
依次类推,得出公式limit (page-1)*n , n
#分页
#查询员工信息,每页显示5条,第二页
SELECT * FROM t_employee LIMIT 5,5;
#统计每个部门的平均基本工资,并显示前三名
SELECT emp.dept_id,AVG(s.basic_salary)
FROM t_employee AS emp,t_salary AS s
WHERE emp.eid = s.eid
GROUP BY emp.dept_id
ORDER BY AVG(s.basic_salary) DESC
LIMIT 0,3;
where型子查询
where型子查询即把内层sql语句查询的结果作为外层sql查询的条件.
in 等于任何一个
all 和子查询的所有值比较sal>ALL(1,2,3)等价于sal>1 && sal>2 && sal>3
any 和子查询返回的任意一个值比较。例如:sal>ANY(1,2,3)等价于sal>1 or sal>2 or sal>3
from型子查询
from型子查询即把内层sql语句查询的结果作为临时表供外层sql语句再次查询.
`exit型子查询`
#查询部门信息,该部门必须有员工
select * from t_department where exists (select * from t_employee where t_employee.dept_id=t.department.did)
六、事务
grant:授予访问权限
revoke:撤销访问权限
commit:提交事务处理
rollback:事务处理回退
savepoint:设置保存点
lock:对数据库的特定部分进行锁定
事务的ACID特性:
原子性(Atomicity):原子意为最小的粒子,或者说不能再分的事物。数据库事务的不可再分的原则即为原子性。 组成事务的所有SQL必须:要么全部执行,要么全部取消(就像上面的银行例子)。
一致性(Consistency):指数据的规则,在事务前/后应保持一致
隔离性(Isolation):简单点说,某个事务的操作对其他事务不可见的.
持久性(Durability):当事务提交完成后,其影响应该保留下来,不能撤消
原文转载:http://www.shaoqun.com/a/482286.html
vincent:https://www.ikjzd.com/w/1642
custommade:https://www.ikjzd.com/w/2514
史泰博:https://www.ikjzd.com/w/2112
总结数据库1.1为什么要使用数据库?1.持久化:将内存中的数据存储在数据库中方便管理数据1.2什么是数据库DB:数据库保存了一系列有组织的数据DBMS:数据管理系统mysql是一种开放源代码的关系型数据库管理系统Mysql的逻辑架构与存储引擎1.连接层2.服务层3.引擎层(最与众不同)4.存储层MySQL的数据类型整型(xxxint)位类型(bit)浮点型(float和double、real)定点
crowd:https://www.ikjzd.com/w/880
hemingway:https://www.ikjzd.com/w/2344
老大和老二打架老三挂了?Flipkart和Amazon价格战对印度零售产业带来巨大冲击!:https://www.ikjzd.com/home/11922
冬天去法国冷吗?法国11,12月份旅游天气:http://tour.shaoqun.com/a/64963.html
亚马逊PPC广告效果差订单少,6个操作助你提升PPC广告效果!:https://www.ikjzd.com/home/7995
没有评论:
发表评论