1.常用的SQL命令
(1)删除数据
DELETE FROM user WHERE uid=’2’;
(2)修改数据
UPDATE user SET phone=’18500000000’,isOnliine=’y’ WHERE uid=’3’;
2.计算机如何存储字符
(1)如何存储英文字符
ASCII 总共有128个,对英文字母及其符号进行了编码
Latin-1 总共有256个,对欧洲字符进行了编码,兼容ASCII
(2)如何存储中文字符
GB2312 对常用的6千多汉字进行了编码,兼容ASCII
GBK 对两万多汉字进行了编码,兼容GB2312
BIG5 台湾繁体字编码,兼容ASCII
Unicode 对世界上主流国家的常用语言进行了编码,兼容ASCII,具体包含3种存储方案 UTF-8 UTF-16 UTF-32
(3)解决mysql中文乱码
Mysql默认使用Latin-1编码
解决:
脚本文件另存为的编码为UTF-8
客户端连接服务器端的编码为UTF-8 set names utf8;
服务器端创建数据库使用的编码为UTF-8
create database xz charset=utf8;
3.列类型
在创建数据表的时候,指定的列可以存储的数据类型
CREATE TABLE n1(
nid 列类型
);
(1)数值型——引号可加可不加
tinyint 微整型,占1个字节,范围-128~127
smallint 小整型,占2个字节,范围-32768~32767
int 整型,占4个字节,范围-2147483648~2147483647
bigint 大整型,占8个字节,范围很大
float 单精度浮点型,占4个字节,范围比int大得多,以牺牲小数点后的数字为代价,精度会受影响,最大值3.4E38
double 双精度浮点型,占8个字节,范围比bigint大的多,精度也会受到影响
decimal(M,D) 定点小数,小数点位置不会发生变化,占8个字节,M代表总的有效位数,D代表小数点后的有效位数
boolean/bool 布尔型,通常只有两个值,分别是true和false,往往存储只有两个值得数据,例如性别,是否在线… 在使用的时候会转为tinyint,true转为1,false转为0
true和false使用的时候是关键字,不能加引号
(2)日期时间型——必须加引号
date 日期型 2020-08-03
time 时间型 15:20:30
datetime 日期时间型 2020-08-03 15:20:30
(3)字符串型——必须加引号
varchar(M) 变长字符串,几乎不会产生空间浪费,数据操作速度相对慢,M最大值是65535,常用于存储长度变化的字符串,例如文章的标题,内容,一个人的姓名…
char(M) 定长字符串,可能产生空间浪费,数据操作速度比较快,M的最大值是255,存储长度固定的数据,例如一个人的电话号码,身份证号码…
text(M) 大型变长字符串,M的最大值是2G
char(5) varchar(5)
a a\0\0\0\0 a\0
ab ab\0\0\0 ab\0
abcde abcde abcde
一二三 一二三\0\0 一二三\0
TB GB MB KB Byte(字节) Bit(位)
1024
1Byte=8Bit
2进制由1或者0组成
1 2 3 4 5
1 10 11 100 101
浮点型
123456.789E-1
12345.6789
1234.56789E1
123.456789E2
定点小数
3.14
选择合理的列类型
CREATE TABLE t1(
id int,
age tinyint,
phone char(11),
sex boolean,
price decimal(7,2), #99999.99
detail varchar(5000),
ctime date
);
4.列约束
mysql可以对要插入的数据进行特定的验证,只有满足条件才允许插入,否则认为是非法的插入,例如禁止插入重复的编号,性别只能是男或者女,工资只能是正数…
CREATE TABLE t1( lid INT 列约束 );
(1)主键约束——primary key
声明了主键约束的列上禁止插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查找速度,查询时候会按照编号从小到大排序。
主键约束禁止插入NULL
NULL 表示空,在插入数据的时候,表示无法确定的值,例如无法确定一个商品的价格、是否为首页推荐…
NULL是关键字,不能加引号。
(2)非空约束——NOT NULL
声明了非空约束的列上禁止插入NULL