CSDN话题挑战赛第2期
参赛话题:学习笔记
目录
一.计算机如何存储字符
- 如何存储英文字符
- ASCII:对所有的英文字母及其符号进行了编码,总共有128个
- Latin-1:对欧洲字符进行了编码,总共有256,兼容ASCII
- 如何存储中文字符
- GB2312:对6000多常用的汉字进行了编码,兼容ASCII
- GBK:对2万多汉字进行了编码,兼容GB2312
- BIG5:台湾繁体字编码
- Unicode:对世界上主流国家常用语言进行了编码,总共有3种存储方案,分别是utf-8,utf-16,utf-32
- 中文乱码产生的原因
- mysql默认使用Latin-1编码,没有对中文字符进行编码
- 解决中文乱码
- 确保脚本文件的编码为utf8
- 设置客户端连接服务器端的编码为utf8
(set names utf8) - 服务器端创建数据库,设置存储字符的编码为utf8 (charset=utf8)
- 针对于个别电脑显示存在乱码,需要退出交互模式,将命令行编码改为utf8;
chcp 65001
--设置编码
SET NAMES utf8;
--先丢弃在创建
DROP DATABASE IF EXISTS zyh;
--创建数据库
CREATE DATABASE zyh CHARSET=utf8;
--进入数据库
USE zyh;
二.列类型
- 在创建数据表的时候,指定的列所能存储的数据类型
create table t1( id 列类型 );
- 数值型 —— 可以不加引号
- tinyint 微整型,占1个字节,范围-128~127
- smallint 小整型,占2个字节,范围-32768~32767
- int 整型,占4个字节,范围-2147483648~2147483647
- bigint 大整型,占8个字节,范围很大
- double 双精度浮点型,占8个字节,存储的值越大精度越低
- decimal(M, D) 定点小数,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数,占16个字节
- float 单精度浮点型,占4个字节,存储的值越大精度越低
- boolean 布尔型,只有两个值,true和false,代表真和假;用于存储只有两个值的数据,例如:是否在线,性别,是否为会员,是否已婚…
- true和false属于关键字,使用值的时候不能加引号
- 使用的时候会转为tinyint,true转为1,false转为0;也可以直接使用1或者0
- 日期时间型 —— 必须加引号
- date 日期型 '2021-12-25'
- time 时间型 '15:45:30'
- datetime 日期时间型 '2021-12-25 15:45:30'
- 字符串型 —— 必须加引号
- varchar(M) 变长字符串,不会产生空间浪费,数据操作速度相对慢,通常用于存储变化长度的数据,例如:标题、姓名、文章详情… M的最大值是65535
- char(M) 定长字符串,可能产 生空间浪费,数据的操作速度相对快,通常用于存储固定长度的数据,例如:手机号码、身份证号.. M的最大值是255
- text(M) 大型变长字符串,M的最大值4G
--设置编码
SET NAMES utf8;
--先丢弃在创建
DROP DATABASE IF EXISTS zyh;
--创建数据库
CREATE DATABASE zyh CHARSET=utf8;
--进入数据库
USE zyh;
--创建表family
CREATE TABLE yh_user(
uid ,
fname VARCHAR(32) UNIQUE
);
--插入数据 fid fname 10 联想 20 戴尔 30 小米
INSERT INTO family VALUES(10,'联想');
INSERT INTO family VALUES(20,'戴尔');
INSERT INTO family VALUES(30,'小米');
--创建表laptop
CREATE TABLE laptop(
lid INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(64) UNIQUE,
price DECIMAL(7,2) NOT NULL DEFAULT 5000,
shelf DATE DEFAULT '1999-09-09',
detail VARCHAR(128),
isindex BOOLEAN DEFAULT TRUE,
familyid INT,
#将familyid设置外键约束,所插入的值,必须在family表中的主键列fid中出现过,并且两者类型需要保持一致
FOREIGN KEY(familyid) REFERENCES family(fid)
);
--插入数据包含的列有编号lid,标题title,价格price上架时间shelf,详情detail,是否为首页推荐isindex,所属分类编号familyid
--插入数据
INSERT INTO laptop VALUES(1,'这里是联想','39999.99','2022-07-04','联想的详情',TRUE,10);
INSERT INTO laptop VALUES(2,'这里是戴尔','4000.99','2022-07-04','戴尔的详情',FALSE,20);
INSERT INTO laptop VALUES(3,NULL,7888.99,'2022-07-04','小米的详情',FALSE,30);
INSERT INTO laptop VALUES(4,NULL,7888.99,'2022-07-04','小米的详情',FALSE,20);
INSERT INTO laptop VALUES(5,'小新',DEFAULT,DEFAULT,'小米的详情',DEFAULT,30);
INSERT INTO laptop VALUES(NULL,'小新2',DEFAULT,DEFAULT,'小米的详情',DEFAULT,30);
每日一句
天下皆知取之为取,而莫知与之为取。
人们都认为只有获取别人的东西才是收获,却不知道给予别人也是一种收获。