一、数据库概述
1、什么是数据库、数据库的分类
DataBase简称DB
存储或管理数据的仓库
数据库根据底层存储结构的不同,可以分为很多种类, 其中包括:早期的层次式数据库、网络式数据库、关系型数据库、非关系型数据库
2、什么是关系型数据库
底层以二维表的形式保存数据的数据库就是关系型数据库
3、常见的关系型数据库
Sql Server微软提供 中型/大型 收费10%
Oracle 甲骨文公司 大型/超大型 收费50%
mysql瑞典 mysqlAB 小型/中型/大型 小巧轻量 免费开源 20%
DB2 IBM中型/大型 收费 10% 银行/金融/电信
Sqlite迷你 嵌入式设备 手机/pad/智能家居
...
4、数据库相关的概念
数据库服务器
数据库
数据表/表
表记录
5、SQL语言
SQL语言:结构化查询语言
是操作关系型数据库的通用的一门语言
学会了SQL语言,不仅可以操作mysql数据库, 所有的关系型数据库都可以操作
二、数据库、数据表操作
1、创建数据库、删除数据库、选中数据库等
2、创建表、删除表、查看表等
三、MySQL的数据类型和字段约束
3.1、MySQL的数据类型
1、数值类型
int -- Java中的int
double --Java中的double
2、字符串类型
相同点: 都是字符串类型, 其中n都表示最大长度是n个字符
char(n):定长字符串, 0<n<=255字符
stuidchar(10),如果存入数据的长度小于最大长度, 剩余的空间会用空格补全, 因此char类型可能会存在空间的浪费。但效率上比varchar要高一些。
总结:因此,char类型适合存储长度固定的数据,这样不会有空间浪费, 而且效率还比varchar高。
varchar(n):不定长字符串,
mysql5.0之前: 0<n<=255字符
mysql5.0之后: 0<n<=65535个字节
namechar(20),如果存入数据的长度小于最大长度, 剩余的空间会留给别的数据使用, 因此不会有空间浪费。但效率上比char类型略低一些。
总结:因此varchar类型适合存储长度不固定的数据, 虽然效率没有char类型高, 但是不会有空间的浪费。
3、日期类型
date:年月日
time:时分秒
datetime:年月日 时分秒
timestamp:时间戳, 格式和 datetime 相同
时间戳: 从1970年1月1日到指定日期的时间毫秒值
datetime和timestamp区别?
相同点: 都是日期类型,显示的格式是相同的,都是年月日 时分秒
不同点:
datetime存储的就是一个”年月日 时分秒“的日期
timestamp存储是一个时间毫秒值
datetime范围:1000~9999
timestamp范围:1970~2038
datetime类型的列,在插入或更新数据时,如果不给值,默认值为null。
timestamp类型的列,在插入或更新数据时,如果不给值,可以设置默认值为当前时间。这样的列,我们可以不用维护!!
4、长文本类型、大文本类型
varchar(n):不定长字符串,
mysql5.0之前: 0<n<=255字符
mysql5.0之后: 0<n<=65535个字节
text 0<长度<=65535个字节
总结:
如果字符串长度小于255个字符,通常使用varchar或char类型
如果字符长度大于255个字符,但小于65535个字节,通常会使用text类型
如果字符长度大于65535个字节,通常会使用bigtext。
bigtext 4GB
3.2、MySQL的字段约束(列约束)
主键约束:如果为一个列添加了主键约束,那么这一列的值就不能重复且不能为空。比如:在创建stu表,可以将id设置为主键:
id intprimary key
非空约束:如果将一个列设置为非空约束,那么这一列的值就不能为空,但可以重复。
比如:在创建stu表时,可以将gender设置为非空约束:
gendervarchar(2) not null
唯一约束:如果将一个列设置为唯一约束,那么这一列的值就不能重复,但是可以为空。添加唯一约束:
emilvarchar(20) unique
四、查询表记录
4.1.为列指定别名
select列名 as 别名, 列名 as 别名...
from表名
其中 as 用于指定别名,as也可以省略不写!!例如:
select name姓名, sal+ifnull(bonus,0) 总薪资fromemp
wheresal+ifnull(bonus,0) > 3500;
可不可以将where中的列名换成别名,例如:
select name姓名, sal+ifnull(bonus,0) 总薪资fromemp
where总薪资> 3500;
执行会报错,因为where中不能使用列别名!!
4.2.聚合函数
1、count( *|列名 ) -- 对某一列|所有列进行统计, 统计有多少行记录
selectcount(id) from emp;
selectcount(*) from emp;
2、max( 列名 ) -- 对某一列求最大值
3、min( 列名 ) -- 对某一列求最小值
4、sum( 列名 ) -- 对某一列的值求和
4、avg( 列名 ) -- 对某一列的值求平均值
4.2.其他函数
(1) year( 日期 ) -- 从日期中获取年份
(2) month( 日期 ) -- 从日期中获取月份
(3) day( 日期 ) -- 从日期中获取天数
(4) curdate() -- 获取当前日期,显示年月日
(5) curtime() -- 获取当前时间,显示时分秒
(6) sysdate() -- 获取当前日期+时间,显示年月日 时分秒