数据库
数据库语言
数据库查询语言(DQL)
* select 查询的信息 from 来自那个表 where 查询条件
*比较条件:
* between……and…… 两个值之间(比如1-19)
* in 匹配任意值列表
* like 匹配一个人字符模板
* is null是一个空值
* 举列子 select 查询的信息 from 来自那个表 where 钱 在between 1 and 100
* 逻辑条件
* and 两个组成部分的条件为真,返回为true。
* or 如果两个组成的部分任一个条件为真返回true
* not 如果干涉条件为假,则返回true
* order by
* order by asc 由小到大。
* order by desc 由大到小。
* 跟在select字句最后面
数据库操作语言(DML)
* 添加数据 insert
* 选择插入
* insert into 表名(列名,……)values (值1……)
* 完全插入
* insert into 表名 values(值1……)
* 注意 如果主键是自动增长,需要使用default或者Null或者0占位。
* 更新数据 update
* update 表名 set 列名=值……where 条件
* 删除数据 delete
* delete from 表名 where 条件
数据库定义语言(DDL)
* create table创建表
* create table表名(列名 类型……)
* show tables 查看已建的表
* 修改数据库对象 alter
* alter table 修改表
* alter table 旧表名 rename 新表名
* 修改表列名
* alter table 表列名
* alter table 表名 change column 旧列名 新列名 类型
* 修改表类型
* alter table 表名 modify 列名 新类型
* 添加新列
* alter table 表名 add column 新列名 类型
* 删除指定的列
* alter table 表名 drop column 列名
* 删除数据库对象 drop
* drop table删除表
* drop table 表名
数据控制语言(DCL)
授予用户某种权限 crant
回收某种权限 revoke
事务控制语言(TCL)
* 回滚事务 rollback
* 设置回滚点 savepoint
数据分组(group by)
原则
* | 使用where子句就可以在划分行成组以前过滤行。
* | 如果有where子句,那么group by 子句必须在where子句后面
* | group by必须包含列
* 约束分组(having)
* having子句
* | having子句是对查询结果集分组后的结果进行过滤。
* 用where子句约束行,having约束组
*
数据类型
整数类型
* tinyint(m)
* 占据一个字节(形容男女用)
* int(m)
* 占据4个字节(数值长度有变化)
* m
* 指显示长度不是存储长度
* 浮点类型
* float(m,d)
* 单精度浮点数 4个字节
* double(m,d)
* 双精度浮点数 8个字节
* 字符类型
* char(n)
* 固定长度(n)表示字符总长度
* 适用于身份证,手机号等定长
* varchar(n)
* 可变长度,可以设置最大长度,适应长度可变属性 姓名可以用
* text
* 不设置长度,不知道属性最大值
* 字符串使用建议
* 经常变化字段使用varchar
* 知道固定长度使用char
* 尽量用varchar
* 能有varchar不用text
* 日期类型
* date
* 日期
* time
* 时间
* datetime
* 日期时间yyyy-MM-DD HH: MM:SS
* timestamp
* 时间cuo
* 存储日期不考虑时期,1970年0时0分0秒
函数
都写在select后面
* avg()平均值和sum()求和
* min()最小的和max()最大的
* count()函数
* 返回分组的总行数
* count(※)返回所有列的行数,包括重复行,有空值的行。
* count(exper)返回列中有esper指定的非空值的数。
* count(distinct exper)返回在列中的由exper指定的唯一的非空值的数。
* 字符
* lower
* 字符转为小写。
* upper
* 字符转为大写。
* 数字
* round (column,n)
* 四舍五入,如果第二个参数是零或者缺少,值则四舍五入
* mod(m,n)
* m除以n的余数
* 日期
* curdate()
* 返回当前日期
* curtime()
* current_date()
* 返回当前日期的
* current_time()
* 返回当前时间。
* date()
* 转换
* date_fromat(date,fromat)
* 将日期转成字符串。
* str_to_date(str,format)
* 将字符串转成日期。
* 通用函数
* if(exper,v1,v2)
* 如果esper成立,返回结果一,否则返回结果二。
* ifnull(v1,v2)
* 如果第一个值不为空,则返回一,否则返回二。
* isnull(express)
* 判断表达式是否为空
* nullif(v1,v2)
* 比较两个参数是否相同,如果第一个与第二个相等返回空,否则返回第一个。
* coalesce(v1,v2……)
* 返回参数第一个非空表达式从左向右。
* case oldu when oldu tene when admin then ADMIN endelse else kevjn end
* 和switch差不多,一个wwn对应一个then如果没匹配的就else(就是和swiss差不多case一case二什么的,如果没有就else)
链接
* sql92连接
* 等值链接
* 特点:
* 多表等值连接的条件为多表的交集部分。
* n表链接至少需要n减一个连接条件。
* 多表不分主次,没有顺序要求。
* 一般为表起别名
* 非等值连接
* 自链接
* sql99连接
* 交叉链接
* 内链接
* 左外与右外连接
* 左外连接
* left outer join
* 右外连接
* rigth outer join
* 举例
* 显示所有固原的名字,部门的名称以及没有雇员的部门。
* 没有固然的部门是孤儿数据。
* 全外连接
* full outer join
* union可以将两个查询结果集合并返回的行都是唯一的
用户管理
* 创建用户
* | create user用户名 identified by 密码
* 按权限分俩:一种是root用户超级管理员,和由root用户创建的普通用户
* 查看用户
* | select 显示 from 来自哪个表
* 权限
* 权限语句
* | crant 权限 数据库。表to用户名@登录主机identified”密码”
* 新用创建完是无法登录的,需要分配权限。
*
* 登录主机
* %
* | 匹配所有主角
* localhost
* | 本机的域名,只能链接本机的服务端
* |
* 127.0.0.1
* | tcp或ip协议连接,只能在本机访问
* 权限列表
数据分页
limit
* | select 投影列 from 表名 where 条件 order by limit 开始位置 ,查询数量
* 注意事项
* DML数据库操作语言
* 针对表中的数据(insert,update,delete)
* DDL数据定义语言
* (create,alter,drop)针对数据库对象,比如数据库,表,索引,视图,存储过程,触发器
约束
* 概述
* 数据效验的方式
* 主键约束
* 不允许为空,不允许有重复值出现。保证数据的唯一性。
* 比如学生的学号是唯一的
* 外键约束
* 允许有空值,允许重复 ,值必须参照表的参照列中所包含的值,保证数据参照的完整性。
* 保证数据的一致性
* 唯一约束
* 相同的值只能出现一次,允许为多个列添加唯一约束,保证数据的唯一性。
* 非空约束
* 列中不能有空值,允许有重复值。允许多个列添加非空约束,保证数据没有空值。
* 检查约束
* 用户自己定义的约束条件,保证数据满足自定义的条件约束。
二 事务
1 事务的ACID属性
原子性(Atomicity)事务中的操作要么都发生,要么都不发生。
一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响