1.常用SQL命令
(1)修改数据
UPDATE user SET upwd=’888888’, isOnline=’n’ WHERE uid=’2’;
(2)删除数据
DELETE FROM user WHERE uid=’3’;
2.计算机如何存储字符
(1)如何存储英文字符
ASCII: 对128个英文字母及其符号进行了编码
Latin-1: 对欧洲字符进行了编码,总共有256个,兼容ASCII
(2)如何存储中文字符
GB2312: 对常用的6000多汉字进行了编码,兼容ASCII
GBK: 对2万多汉字进行的编码,兼容GB2312
Unicode: 对世界上主流国家的常用语言进行了编码,兼容ASCII,不兼容GB2312,GBK等,具体使用分为utf-8, utf-16,utf-32
中文乱码原因:mysql中默认使用Latin-1编码。
(3)解决mysql中文乱码
脚本文件另存为的编码为utf-8
客户端连接服务器端的编码为utf-8
set names utf8;
服务器端创建数据库使用的编码为utf-8
create database xz charset=utf8;
练习:编写脚本文件01_sina.sql,先丢弃再创建数据库sina,设置编码为utf-8,进入数据库,创建保存新闻数据的表news,保护有编号nid,标题title,发布时间ctime,详情detail,来源origin; 插入若干条数据,修改1条,删除1条。
在交互模式下查询数据。
3.列类型
创建表的时候,指定的列存储的数据类型
create table t1( id 列类型 );
(1)数值型——引号可加可不加
tinyint 微整型,占1个字节,范围-128~127
smallint 小整型,占2个字节,范围-32768~32767
int 整型,占4个字节,范围-2147483648~2147483647
bigint 大整型,占8个字节,范围很大
float(M,D) 单精度浮点型,占4个字节,范围比int大很多,存储的精度受影响
double(M,D) 双精度浮点型,占8个字节
decimal(M,D) 定点小数,占16个字节,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数。
boolean/bool 布尔型,只有两个值,分别是true和false;真正存储的时候会转为tinyint,也可以存储数字。mysql没有真正的布尔型。常用于存储只有两个值的数据,例如性别,是否在线,是否登录...
如果插入的值是true自动转为1,false自动转为0
true和false是关键字,使用的时候不能加引号,加引号之后就是普通的字符串,自动转为0。
(2)日期时间型——必须加引号
date 日期型 ‘2020-10-20’
time 时间型 ‘15:20:30’
datetime 日期时间型 ‘2020-10-20 15:20: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
浮点型
123456.789e-1
12345.6789
1234.56789e+1
123.456789e2
12.3456789e3
TB GB MB KB BYTE(字节) Bit(位)
1BYTE=8Bit
位,是计算机底层的单位,只能存储1或者0
二进制 (满2进1)
1 2 3 4
1 10 11 100
选择合理的列类型
Create table t1(
id int,
age tinyint,
Salary decimal(8,2), #999999.99
Ctime date,
Phone char(11),
Detail varchar(5000)
);
练习:使用合理的列类型,编写脚本文件02_xuezi.sql,先丢弃再创建数据库xuezi,设置编码为utf-8,进入数据库,创建保存笔记本数据的表laptop,包含有编号lid,标题title,价格price,库存量stockCount,上架时间shelfTime,是否为首页推荐isIndex,插入若干条数据。
3.列约束
对要插入的数据进行特定的验证,只有符合要求才允许插入,例如插入性别只能是男或者女,例如一个人的成绩范围0~100
Create table t1( lid INT 列约束 );
(1)主键约束——primary key
声明了主键约束的列上不允许插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查找速度。
NULL 空,代表一个无法确定的值,例如无法确定一个员工的生日,电话等,无法确定一个商品的价格;
是关键字,不能加引号。
主键列上不允许插入NULL
(2)非空约束—— NOT NULL
声明了非空约束的列上不允许插入NULL