AI智能
改变未来

mysql库与表以及常见的数据类型

#DML语言
/*

DML:数据操纵语言
insert、update、delete

*/

#一、数据的插入
#语法:
#INSERT INTO beauty(字段1,字段2,…)
#VALUES(值1,值2,…);

#特点:
#1、字段和值列表必须一一对应
#2、字符型和日期型必须用单引号引起来
#3、字段的顺序可以和表中字段的顺序不一致
#4、不可以为NULL的字段,必须插入值,比如说主键id;
可以为NULL的字段,可以不用插入值,使用NULL来代替,或字段名和值都不写
#5、字段和值的个数必须一致
#6、字段列表可以省略,默认所有列 ,而且顺序和表中的列的顺序一致
#方式一:insert into …values…
#方式二:insert into…set
INSERT INTO beauty SET id=105,NAME=‘关雎尔’,phone=‘999’;
2、插入多行记录
#方式一:insert into…values
#方式二:insert into…select

二、数据更新
#更新语句 update

#语法:
UPDATE 表名 SET 字段名=新值,字段名=新值
[WHERE 条件];
#更新多表的数据
#语法
UPDATE 表1 别名1,表2 别名2
SET 字段1=新值,字段2=新值
WHERE 连接条件
AND 筛选条件;

三、数据删除
#数据删除

#删除的方式一:
#语法:
#DELETE FROM 表 [WHERE 条件]
#多表级联删除
DELETE 别名1,别名2 FROM 表1 别名1,表2 别名2
WHERE 连接条件
AND 筛选条件
#删除的方式二:
#语法:
TRUNCATE TABLE 表名
#二种删除方式的区别【面试题】
1、TRUNCATE不能加WHERE条件,而DELETE可以加WHERE
2、TRUNCATE效率较高
3、TRUNCATE不能删除多表,而DELETE可以
4、删除带标识列字段的表时,TRUNCATE 删除后再插入,标识列的值从1开始DELETE删除后再插入,标识列的值从断点处开始
5、TRUNCATE删除后,不能回滚;DELETE删除可以回滚

四、库和表的管理
#DDL数据定义语言
/*
关键词
create、alter、drop
库的操作:创建库(★)、删除库
表的操作:创建表(★)、修改表、删除表(★)、复制表
*/

#一、库的操作
SHOW DATABASES;

#1.创建库
CREATE DATABASE student;
CREATE DATABASE IF NOT EXISTS student;

#2.删除库
DROP DATABASE student;
DROP DATABASE IF EXISTS student;

#二、表的操作
#1.创建表
#语法:
CREATE TABLE 表名(
字段名 字段类型【(长度)】 【约束】,
字段名 字段类型【(长度)】 【约束】,
字段名 字段类型【(长度)】 【约束】,
字段名 字段类型【(长度)】 【约束】

#案例:创建学员信息表
#学号、姓名、性别、邮箱、生日
CREATE TABLE stuinfo(
stuNo INT,#学号
stuName VARCHAR(20),#姓名
gender CHAR(1),#性别
email VARCHAR(50),#邮箱
borndate DATETIME #生日

)
SHOW TABLES;
DESC stuinfo;

#2.修改表
#①修改表名
ALTER TABLE stuinfo RENAME TO student;
ALTER TABLE student RENAME stuinfo;
尖叫提示:to 是可以省略的

#②修改列名,不加类型 报错,需要加类型
ALTER TABLE stuinfo CHANGE COLUMN borndate birthday DATETIME;
ALTER TABLE stuinfo CHANGE COLUMN birthday borndate ; ×

change
#③修改列的类型
ALTER TABLE stuinfo MODIFY COLUMN gender VARCHAR(2);

#④添加新列
ALTER TABLE stuinfo ADD COLUMN phone VARCHAR(11);

#⑤删除列
ALTER TABLE stuinfo DROP COLUMN phone;

#3.删除表
DROP TABLE stuinfo;
DROP TABLE IF EXISTS stuinfo;
SHOW TABLES;

#4.表的复制
INSERT INTO stuinfo VALUES(2,‘少杰’,‘男’,’’,NOW());
SELECT * FROM stuinfo;

#①仅仅复制表的结构
CREATE TABLE newTable2 LIKE stuinfo;

#②复制表的结构+数据
CREATE TABLE newTable3
SELECT * FROM stuinfo;

CREATE TABLE newTable4
SELECT stuno,stuname
FROM stuinfo WHERE stuno=1;

五、常见的数据类型概述
1、整型
整数类型
字节
范围

Tinyint
1 有符号:-128~127
无符号:0~255

Smallint
2 有符号:-32768~32767
无符号:0~65535

Mediumint
3 有符号:-8388608~8388607
无符号:0~1677215
(好吧,反正很大,不用记住)

Int、integer
4 有符号:- 2147483648~2147483647
无符号:0~4294967295
(好吧,反正很大,不用记住)

Bigint
8 有符号:
-9223372036854775808
~9223372036854775807
无符号:
0~
9223372036854775807*2+1
(好吧,反正很大,不用记住)

1PB = 1024TB
1TB = 1024 GB
1GB = 1024 MB
1MB = 1024 KB
1KB = 1024 B
1B = 8 Bit
1B = 1个字节
1个字节 = 8Bit

utf-8 英语 1个字节 中文是占 3个字节

2、小数
浮点数类型 字节 范围
float 4 ±1.75494351E-38~±3.402823466E+38
(好吧,反正很大,不用记住)
double 8 ±2.2250738585072014E-308~
±1.7976931348623157E+308
(好吧,反正很大,不用记住)
定点数类型 字节 范围
DEC(M,D)
DECIMAL(M,D) M+2 最大取值范围与double相同,给定decimal的有效取值范围由M和D决定

3、位类型
位类型 字节 范围
Bit(M) 1~8 Bit(1)~bit(8)

4、char和varchar类型
字符串类型 最多字符数 描述及存储需求
char(M) M M为0~255之间的整数
varchar(M) M M为0~65535之间的整数
说明:用来保存MySQL中较短的字符串

5、binary和varbinary类型
说明:类似于char和varchar,不同的是它们包含二进制字符串而不包含非二进制字符串。

6、Enum类型
说明:又称为枚举类型哦,要求插入的值必须属于列表中指定的值之一。
如果列表成员为1~255,则需要1个字节存储
如果列表成员为255~65535,则需要2个字节存储
最多需要65535个成员!

7、Set类型
说明:和Enum类型类似,里面可以保存0~64个成员。和Enum类型最大的区别是:SET类型一次可以选取多个成员,而Enum只能选一个
根据成员个数不同,存储所占的字节也不同

成员数 字节数
1~8 1
9~16 2
17~24 3
25~32 4
33~64 8

8、时间类型
日期和时间类型 字节 最小值
date 4 1000-01-01
datetime 8 1000-01-01 00:00:00
timestamp 4 19700101080001
time 3 -838:59:59
year 1 1901

9、datetime和timestamp的区别

(1)Timestamp支持的时间范围较小,取值范围
19700101080001——2038年的某个时间
Datetime的取值范围:1000-01-01 ——9999—12-31

(2)timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区

(3)timestamp的属性受Mysql版本和SQLMode的影响很大

#整型
/*
特点
1.根据所占字节或保存的数值范围分类
tinyint、smallint、mediumint、int/integer、bigint
2.默认为有符号整型
3.如果超过类型的范围,会报警告,插入临界值(最大值或最小值)
4.如果想设置为无符号整型,则需要加上关键字unsigned
5.每个整型可以设置显示的宽度,int默认为11.但只能加上zerofill才能有效果
而且加上zerofill,默认为无符号整型

#浮点型和定点型原则:
#1、选择能存储数值的越小类型越好
#2、类型越简单越好

#浮点型和定点型
/*
1.分类
浮点型:
float(M,D)
double(M,D)
定点型:
decimal(M,D)

  1. D和M 参数
    D表示小数位数,如果不够用0补齐,如果超过则四舍五入
    M表示整数位数+小数位数,整数部分如果超过,则报错,显示为临界值
    M和D 对于浮点型或定点型都可以省略
    但浮点型默认的精度为插入数值的精度,而定点型默认的精度为M=10,D=0

  2. 定点型和浮点型区别
    定点型的精度表示更高,比较适合处理货币运算

#字符型
/*
char:固定长度的字符,写法 char(M)
varchar:可变长度的字符,写法 varchar(M)
text:文本,比较适合存储较大的文本,比如 日记、协议等
enum
set

1、char(M)和varchar(M):
M表示的是最多字符个数
char(M):字符个数可以省略,默认M=1
varchar(M):字符个数不可以省略

2、比较
所占的空间 效率 使用场景
char 固定的,有点浪费 高 一般存储字段的值的个数固定情况
varchar 可变的,根据值的长度 低 一般存储字段的值的个数变化较大

日期型
/*
1.分类:

date:只保存日期不保存时间 。‘1998-1-1’
time:只保存时间不保存日期
year:只保存年

datetime:日期+时间
timestamp:日期+时间

2.datetime和timestamp的区别

字节	时间范围	    是否受时区和版本等影响

datetime 8 1000——9999 不受
timestamp 4 1970-2038 受

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » mysql库与表以及常见的数据类型