目录
一、数据库概述
1.数据库用来存储和管理数据,英文名database
2.分类:关系型和非关系型
3.关系型数据库:数据间关系紧密,如师生关系
4.非关系型数据库:数据间关系松散,如把电脑所有资源存入数据库
二、SQL语言
用来操作数据库的语言,全称:结构化查询语言
DML:数据操作语言,指对数据的CURD
DDL:数据定义语言,指对数据库的定义,表的定义
DCL:数据库控制语言,指对数据的权限控制
DQL:数据查询语言,指定的SQL语句中,大量的会编写查询语句
结构:数据库-表-数据
三、数据类型
1.命名规则
1.字段名必须以字母开头,尽量不用拼音
2.长度不能超过30字符
3.不能使用SQL保留字,如where,order,group
4.只能使用大小写字母、数字、$等
5.mysql习惯全小写
6.多个单词用下划线隔开,如user_name
2.字符
1.char长度固定,不足用空格填充,最多容纳2000字符,查询快但浪费空间
2.varchar长度可变,最多容纳4000字符,查询稍慢但节省空间
utf8编码中,一个汉字占3个字节
3.数字
int整数类型
double小数类型
numeric(m,n) decimal(m,n)也可以表示小数,m是总长度,n是小数长度。精确的小数类型
4.日期
date包含 年月日
time包含 时分秒
datetime包含 年月日时分秒
timestamp时间戳,不是日期,是从1970年1月1日到指定日期的毫秒数
5.图片
blob 二进制数据,可以存放图片、声音,容量4g
四、字段约束
1.唯一约束
字段的值必须唯一,不能重复,但可以为空,使用 unique
2.非空约束
字段的值不能为null,但可以重复
3.主键约束
字段的值唯一且不为空,通常情况,每张表都有主键。
主键自增策略:不需要程序员自己数主键的值,交给数据库来管理主键的值,数据库会从1开始自增
create table abc(
id int primary key auto_increment
);
五、基础函数
- lower:数据转小写
- upper:数据转大写
- length:数据的长度
- substr:截取[ ]
- concat:拼接
- replace:(xxx,'aa','bb')把aa字符替换为bb
- ifnull:(comm,10)判断,如果comm是null,用10替换
- round&ceil&floor:round四舍五入,ceil向上取整,floor向下取整
- now:年月日时分秒,curdate():年月日,curtime():时分秒
六、条件查询
1.distinct去除重复行
2.where
3.like
4.null
5.between and
6.limit
7.order by
七、聚合aggregation
1.count
2.max/min
3.sum/avg
4.group by /having
八、拓展
1.char和varchar有什么区别?
- char为定长字符串,char(n),n最大为255
- varchar为不定长字符串,varchar(n),n最大长度为65535
- char(10)和varchar(10)存储abc,那它们有什么差别呢?
- char保存10个字符,abc三个,其它会用空格补齐;而varchar只用abc三个位置。
2.datetime和timestamp有什么区别?
- 数据库字段提供对日期类型的支持,是所有数据类型中最麻烦的一个
- date 是 年与日
- time是 时分秒
- datetime年月日时分秒,存储和显示是一样的
- timestamp时间戳,存储的不是个日期,而是从1970年1月1日到指定日期的毫秒数
3.注释
- /* 很多注释内容 */
- #行注释内容
- – 行注释内容,这个使用较多
4.主键、外键、唯一索引的区别
- Primary Key 主键约束,自动创建唯一索引
- Foreign Key 外键约束,外键字段的内容是引用另一表的字段内容,不能瞎写
- Unique Index 唯一索引,唯一值但不是主键
5.drop、delete和truncate之间的区别
- drop删除库或者表,数据和结构定义
- delete和truncate只是删除表的数据
- delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录
- 对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数