数据库的安装
一 、下载mysql数据库
进入MySQL官方网站,https://dev.mysql.com/downloads/,下载想要的版本
下载完成后就是安装mysql了
二 、安装mysql
双击软件开始安装
然后一直点击下一步就完事了,直到设置好用户名与密码就ok了。
数据库常用字段
一 、数值类型
数值类型大类又可以分为整型、浮点型、定点型三小类。
1.整型主要用于存储整数值,主要有:
tinyint,1字节,小整数值
smallint,2字节,大整数值
mediumint,3字节,大整数值
int或者intger,4字节,大整数值(常用)
bigint,8字节,极大整数值
整形是经常被用到类型,最常用的int,bigint默认是有符号的,若需要存储无符号值,可以使用unsigned属性。
存储字节越小,占用空间越小,所以我们要尽量使用合适的整型,bigint类型预估字段数字取值超过42亿可以使用(所以不知道为什么java课的数据库全是bigint类型)。
2.浮点型主要用于存储近似值,浮点型主要有两个类型:
float,4字节,单精度浮点数值
double,8字节,双精度浮点数值
又有人要问了,这个单精度浮点数值和双精度浮点数值代表什么?有什么区别?
简单来说,由于它们的长度不同从而导致的精确度不同。单精度浮点数值占据32位二进制,而双精度浮点数值占据64位二进制。
3.定点型主要用于存储有精度要求的小数,主要类型有:
decimal,对DECIMAL(M,D) ,如果M>D,为M+2字节 否则为D+2,精确小数值
对于声明语法 DECIMAL(M,D) ,自变量的值范围如下:
-
M是最大位数(精度),范围是1到65。可不指定,默认值是10。
-
D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M,可不指定,默认值是0。
例如字段 salary DECIMAL(5,2),能够存储具有五位数字和两位小数的任何值,因此可以存储在salary列中的值的范围是从-999.99到999.99。
二 、字符串类型
字符串常用的类型:
char,0-255字节,定长字符串
varchar,0-65535字节,变长字符串
tinytext,0-255字节,短文本字符串
text,0-65535字节,长文本数据
longtext,0-4294967295字节,极大文本数据
tinyblob,0-255字节,二进制字符串
blob,0-65535字节,二进制形式的长文本数据
longblob,0-4294967295字节,二进制形式的极大文本数据
其中 char 和 varchar 是最常用到的。char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间。当保存 char 值时,在它们的右边填充空格以达到指定的长度,当检索到 char 值时,尾部的空格被删除掉。varchar 类型用于存储可变长字符串,存储时,如果字符没有达到定义的位数,也不会在后面补空格。
blob 类型主要用于存储二进制大对象,例如可以存储图片,音视频等文件。日常很少用到,有存储二进制字符串时可以考虑使用。
三 、日期时间类型
MySQL支持的日期和时间类型如下:
year,1字节,年份值
time,3字节,时间值或者持续时间
date,3字节,日期值
datetime,8字节,混合日期和时间值
timestamp,4字节,时间戳
根据存储需求选择合适类型就可以了
数据库与表的创建
去网上下载一个Navicat,推荐12版本,因为我就用这版本。
首先需要创建一个数据库,我们才可以进行表的创建
连接mysql,右键创建数据库,起个名字,再点击该数据库创建表即可。
增删查改的sql格式
1.创建表
create table 表名(
中间为想要创建的元素与他的数据类型还有范围
)
2.添加新数据
insert into 表名 values (想要给的值)
insert into 表名 列名 values (想要给的列值)
insert into student values(‘基尼太美‘,20,‘男‘,‘中国查无此人‘)
3.查询数据
select name 姓名,age 年龄,sex 性别 from student
select * from student(这是查询该表所有数据的语句)
select * from student where name=“xxxx”(这是查询该表xxxx的数据)
4.修改:
update <表名> set <列名=更新值> [where <更新条件>]
5.删除
delete from <表名> [where <删除条件>]
truncate table <表名>(这是删除整个表)
IN、BETWEEN、LIKE用法
select * from student where id in(11,13)(查id在11到13之间)
between跟上面那个in用法相似,也是查某某之间
like是模糊查询,搭配%与_使用
select * from student where name like “张%”(就会查出student所有姓张的人)
select * from student where name like “张_”(只会查出student单个姓张的人)
关联查询
嵌套查询
一、from子句嵌套
select ...from (子查询) as 别名
二、where 子句嵌套(in,exists判断的应用)
select ...from ...where ... = (子查询) -- 单值比较(=,>,<,!=等)
select ...from ...where ... in (子查询) -- 集合比较
select ...from ...where ... exists (子查询) -- 是否有存在查询记录
三、select 子句嵌套
select ...,(子查询),...from ...
总结:
子查询可看作是“表”、“多值集合”(单列)、“单值”(单列单行)
执行顺序是先内后外
嵌套在where、select的子查询是多次执行的
内外层数据列引用时遇到重名列应使用完全限定列名
嵌套查询获得的结果一般都能通过连接查询实现
连接查询
INNER JOIN 用法
内连接
满足条件的记录才会出现在结果集中
select ...form 表1 inner join 表2 on 表1.列x=表2.列y....(连接查询表1表2当表1的列表x=表2的列表y)
select...form 表1,表2 where 表1.列x=表2.列y(效果同上)
外连接
LEFT JOIN 用法
表a全部出现在结果集中,若表b无对应记录,则相应字段为null(左外连接)
select t1.*,t2.* from tb_name t1 left join tb_class t2 on t1.学号=t2.学号;
RIGHT JOIN 用法
表b全部出现在结果集中,若表a无对应记录,则相应字段为null(右外连接)
select t1.*,t2.* from tb_name t1 right join tb_class t2 on t1.学号=t2.学号;
FULL JOIN 用法
SQL FULL JOIN结合的左,右外连接的结果。
连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果
目前mysql不支持全连接,不过full join是一切分布式数据库都有的概念,不是mysql的概念。
数据库常用函数
一 、统计函数
avg()求平均值
count()统计数目
max()求最大值
min()求最小值
sum()求和
以上几个为最常用的统计函数,
二 、算术函数
sin()返回以弧度表示的角的正弦
cos()返回以弧度表示的角的余弦
tan()返回以弧度表示的角的正切
cot()返回以弧度表示的角的余切
以上为举例,其实还有很多
三 、字符串函数
LOWER() --函数把字符串全部转换为小写
UPPER() --函数把字符串全部转换为大写
STR() --函数把数值型数据转换为字符型数据
LTRIM() --函数把字符串头部的空格去掉
RTRIM() --函数把字符串尾部的空格去掉
四 、数据类型转换函数
CAST() 函数语法如下
CAST (expression AS data_type(length))
CONVERT() 函数语法如下
CONVERT(data_type(length),data_to_be_converted,style)
五 、日期函数
DAY() --函数返回date_expression 中的日期值
MONTH() --函数返回date_expression 中的月份值
YEAR() --函数返回date_expression 中的年份值
六 、系统函数
APP_NAME() --函数返回当前执行的应用程序的名称
我就会这个,其他的看不懂。