MySQL学习总结
一、MySQL的特点:
关系型数据库、跨平台、支持多种编程语言。
二、MySQL的数据类型
(一)数值类型
(1)整型
1、int 大整型(4个字节)取值范围:2 ** 32 - 1
2、tinyint 微小整型(1个字节)
取值范围:
有符号(signed默认):-128~127
无符号(unsigned):0~255
3、smallint 小整型(2个字节)
4、bigint 极大整型(8个字节)
(2)浮点型
1、float (4个字节,最多显示7个有效位)
用法:字段名 float(m,n) m表示总位数,n表示小数位数
2、decimal (最多显示28个有效位)
用法:字段名decimal(m,n) m表示总位数,n表示小数位数
PS:存储空间(整数、小数分开存储)
规则:将9的倍数包装成4个字节
余数 字节
0 0
1-2 1
3-4 2
5-6 3
7-9 4
eg:
decimal(19,9)
整数部分:10/9=商1余1, 4字节+1字节=5字节
小数部分:9/9=商1余0 ,4字节+0字节=4字节
占:9字节
NOTE:浮点型插入整数会自动补全小数位位数,小数位多于指定位数,会对下一位四舍五入
(二)字符类型
1、char(定长) 取值范围:1~255
2、varchar(变长) 取值范围:1-65535
3、text / longtext(4G) / blob / longblob(4G)
NOTE:char和varchar特点
char:浪费存储空间,性能高
varchar:节省存储空间,性能低
PS:字符型宽度和数值型宽度的区别——
1、数值类型宽度为显示宽度,只用于select查询显示和占用存储无关
2、字符类型的宽度超过之后则无法存储
(三)枚举类型
1、单选(enum):字段名 enum(值1,值2,…)
2、多选(set) :字段名 set(值1,值2,…)
(四)日期时间类型
1、date:“YYYY-MM-DD”
2、time:“HH:MM:SS”
3、datetime:“YYYY-MM-DD HH:MM:SS” ——(不给值默认返回NULL值)
4、timestamp:“YYYY-MM-DD HH:MM:SS” ——(不给值默认返回系统当前时间)
日期时间函数
1、now():返回服务器当前时间
2、curdate():返回当前日期
3、curtime():返回当前时间
4、year(date):返回指定时间的年份
5、date(date):返回指定时间的日期
6、time(date):返回指定时间的时间
日期时间运算
select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位)
时间间隔单位:1 day | 2 hour |1 minute | 2 year | 3 month
eg:查询1天以内的记录
select * from testdb where shijian > (now()-interval 1day);
三、基本SQL操作命令
(一)SQL命令的使用规则
1、每条命令必须以 ; 结尾
2、SQL命令不区分字母大小写
3、可以使用 \c 来终止当前命令的执行
(二)库的管理
①库的基本操作命令
(1)查看已有库:
show databases;
(2)创建库(指定字符集):
create database 库名 [character set utf8];
(3)查看创建库的语句(字符集):
show create database 库名;
(4)查看当前所在库:
select database();
(5)切换库:
use 库名;
(6)查看库中已有表:
show tables;
(7)删除库:
drop database 库名;
②库的命名规则
(1)数字、字母、下划线,但不能使用纯数字
(2)库名区分字母大小写
(3)不能使用特殊字符和MySQL关键字
(三)表的管理
①表的基本操作命令
(1)创建表(指定字符集):
create table 表名 (
字段名 数据类型,
字段名 数据类型,
。。。
字段名 数据类型
) [character set utf8];
(2)查看已有表的字符集:
show create table 表名;
(3)查看表结构:
desc 表名;
(4)删除表:
drop table 表名;
NOTE:所有的数据都是以文件的形式存放在数据库目录(\var\lib\mysql)下。
②表记录管理
(1)插入(insert):
1、insert into 表名 values (值1),ÿ