1.SQL命令
(1)插入数据
insert into 表名称 values(...);
(2)删除数据
delete from 表名称 where 条件;
(3)修改数据
update 表名称 set 列名称='值', 列名称='值' where 条件;
(4)查新数据
select * from 表名称;
2.计算机如何存储字符
(1)存储英文字符
ASCII:对英文字母及其符号进行了编码,总共有128个
Latin-1:对欧洲字符进行了编码,总共有256个,兼容ASCII
MySQL默认使用Latin-1编码
(2)存储中文字符
GB2312:对常用的6千多汉字进行了编码,兼容ASCII
GBK:对两万多汉字进行了编码,兼容GB2312
BIG5:台湾繁体字编码
Unicode:对世界上主流国家常用的语言进行了编码,分为3中存储方案,分别是utf-8,utf-16,utf-32
(3)解决MySQL中文乱码
脚本文件另存为的编码为utf8
客户端连接服务器端的编码为utf8
服务器端创建数据库存储字符的编码为utf8
3.列类型
在创建数据表的时候,指定的列所能存储的数据类型
create table t1(
id 列类型
);
(1)数值型 —— 引号可以省略
tinyint 微整型,占1个字节,范围-128~127
smallint 小整型,占2个字节,范围-32768~32767
int 整型,占4个字节,范围-2147483648~2147483647
bigint 大整型,占8个字节
float 单精度浮点型,占4个字节,存储的值越大精度越低
double 双精度浮点型,占8个字节,存储的值越大精度越低
decimal(M,D) 定点小数,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数
boolean 布尔型,只有两个值,分别是true和false,代表真和假,用于存储只有两个值得数据,例如性别、是否在线..
在使用的过程中,自动转换为了tinyint,插入的值true转为1,false转为0,也可以直接插入1或者0.
true和false是关键字,不能加引号
(2)日期时间型 —— 必须加引号
date 日期型 '2021-10-24'
time 时间型 '15:19:30'
datetime 日期时间型 '2021-10-24 15:19:30'
(3)字符串型 —— 必须加引号
varchar(M) 变长字符串,几乎不会产生空间浪费,数据操作速度相对慢,常用于存储变化长度的数据,例如:标题、详情、姓名... M的最大值是65535
char(M) 定长字符串,可能会产生空间浪费,数据操作速度相对快,常用于存储固定长度的数据,例如:手机号码、身份证号码,M的最大值是255
text(M) 大型变长字符串,M最大值是2G
varchar(5) | char(5) | |
a | a\0 | a\0\0\0\0 |
ab | ab\0 | ab\0\0\0 |
一二三 | 一二三\0 | 一二三\0\0 |
abcde | abcde | abcde |
99999.99
12345.6789
1234.56789E1
123.456789E2
TB GB MB KB Byte(字节) Bit(位)
1Byte=8Bit
10进制
1 2 3 4 5 6 .. 9 10
2进制
1 10 11 100 101 110
选择合理的列类型
create table t1(
id int,
title varchar(128),
age tinyint,
salary decimal(7,2),
phone char(11),
sex boolean,
birthday date
);
4.列约束
MySQL可以对要插入的值进行验证,只有符合条件才允许插入,例如:编号不允许重复,性别的值只能是男女...
create table t1(
id 列类型 列约束
);
(1)主键约束——primary key
声明了主键约束的列上不允许出现重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查找速度
null:表示 空,表示一个暂时无法确定的值,例如:无法确定商品的价格、库存量
注意事项:null是关键字,不能加引号
声明了主键约束的列上不允许插入null
(2)非空约束 —— not null
声明了非空约束的列上不允许插入null
练习:给laptop表的price列添加非空约束,插入值测试