常见的数据类型实操
1、Sql 测试整数类型范围
#整型
/*
特点
1.根据所占字节或保存的数值范围分类
tinyint、smallint、mediumint、int/integer、bigint
2.默认为有符号整型
3.如果超过类型的范围,会报警告,插入临界值(最大值或最小值)
4.如果想设置为无符号整型,则需要加上关键字unsigned
5.每个整型可以设置显示的宽度,int默认为11.但只能加上zerofill才能有效果
而且加上zerofill,默认为无符号整型
*/
DROP TABLE tab1;
CREATE TABLE tab1(
T1 INT(8) ZEROFILL
)
DESC tab1;
INSERT INTO tab1 VALUES(1203);
INSERT INTO tab1 VALUES(9000000000);
SELECT * FROM tab1;
2、阶段练习
#一、试创建表 Book
#字段 id,bookname,price,author
#id类型为 无符号整型,长度为12
#bookname类型为 可变字符型,最多字符数为10
#price 类型为浮点型
#author类型为可变字符型
CREATE TABLE IF NOT EXISTS Book(
id INT(12) UNSIGNED,
bookName VARCHAR(10),
price FLOAT,
author VARCHAR(10)
)
#二、分别通过两种方式向Book表中插入2行数据
#1 红楼梦 100 www
#2 西厢记 120 xxx
#方式一
INSERT INTO Book VALUES
(1,‘红楼梦’,100,‘www’),
(2,‘西厢记’,100,‘王实甫’);
#方式二
INSERT INTO Book
SELECT 1,’’,100,’’ UNION ALL
SELECT 2,’’,200,’’ ;
#三、使用分页查询显示Book表中第15到30条记录
SELECT * FROM Book LIMIT 14,16;
#四、删除价格>100的数据
DELETE FROM Book WHERE price>100;
#五、试写出五个常见的字符函数
UPPER
LOWER
LENGTH
SUBSTR
INSTR
CONCAT
LPAD
RPAD
TRIM
3、浮点型和定点型
#原则:
#1、选择能存储数值的越小类型越好
#2、类型越简单越好
#浮点型和定点型
/*
1.分类
浮点型:
float(M,D)
double(M,D)
定点型:
decimal(M,D)
-
D和M 参数
D表示小数位数,如果不够用0补齐,如果超过则四舍五入
M表示整数位数+小数位数,整数部分如果超过,则报错,显示为临界值
M和D 对于浮点型或定点型都可以省略
但浮点型默认的精度为插入数值的精度,而定点型默认的精度为M=10,D=0 -
定点型和浮点型区别
定点型的精度表示更高,比较适合处理货币运算
*/
#案例1:
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
n1 FLOAT(5,2),
n2 DOUBLE(5,2),
n3 DECIMAL(5,2)
)
SHOW TABLES;
SELECT * FROM tab2;
INSERT INTO tab2 VALUES(123.45,123.45,123.45);
INSERT INTO tab2 VALUES(123.4,123.4,123.4);
INSERT INTO tab2 VALUES(123.456,123.456,123.456);
INSERT INTO tab2 VALUES(1235.45,1235.45,1235.45);
#案例2:
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
n1 FLOAT,
n2 DOUBLE,
n3 DECIMAL
)
INSERT INTO tab2 VALUES(1232345678.45,123453.45,12323456789.45);
INSERT INTO tab2 VALUES(123.4,123.4,123.4);
4、字符型
#字符型
/*
char:固定长度的字符,写法 char(M)
varchar:可变长度的字符,写法 varchar(M)
text:文本,比较适合存储较大的文本,比如 日记、协议等
enum
set
1、char(M)和varchar(M):
M表示的是最多字符个数
char(M):字符个数可以省略,默认M=1
varchar(M):字符个数不可以省略
2、比较
所占的空间 效率 使用场景
char 固定的,有点浪费 高 一般存储字段的值的个数固定情况
varchar 可变的,根据值的长度 低 一般存储字段的值的个数变化较大
*/
DROP TABLE tab1;
CREATE TABLE tab1(
e1 ENUM(‘a’,‘b’,‘c’)
)
INSERT INTO tab1 VALUES(‘a’);
SELECT * FROM tab1;
5、日期型
#三、日期型
/*
1.分类:
date:只保存日期不保存时间 。‘1998-1-1’
time:只保存时间不保存日期
year:只保存年
datetime:日期+时间
timestamp:日期+时间
2.datetime和timestamp的区别
字节 时间范围 是否受时区和版本等影响
datetime 8 1000——9999 不受
timestamp 4 1970-2038 受
*/
#案例
DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
d1 DATETIME,
d2 TIMESTAMP
)
INSERT INTO tab1 VALUES(NOW(),NOW());
SELECT * FROM tab1;
SHOW VARIABLES LIKE ‘time_zone’;
SET time_zone=’+9:00’;