首页 > 数据库 >SQL对表的操作

SQL对表的操作

时间:2023-04-02 18:44:19浏览次数:35  
标签:对表 varchar 字节 -- utf8 SQL 字符串 操作 size

创建表

在创建表的时候,如果表名比较长,可以建议使用下划线来间隔

注意:表名和数据库名用的反引号是tab键英文状态下的符号,是关键字的而又想使用都可以使用反引号

#用指令在swt数据库中创建一个名字为user的表
#创建表的字段和数据类型如下所示

#id         整形
#name       字符串
#password    字符串
#birthday    字符串 

CREATE TABLE `user`(
	id  INT ,
	`name` VARCHAR(255),
	`password` VARCHAR(30),
	birthday  DATE )
	
	CHARACTER SET utf8 
	COLLATE utf8_bin
	ENGINE INNODB;

注意:以上指令如果在命令行中执行要先进入该数据库中然后再执行,该编译器上面可以选择数据库简化了这一点

列类型有哪些

类似java的数据类型

日期类型date不能存放时分秒



时间戳:可以自动更新,在添加的时候没有指定可以按当前时间添加进去,但是需要配置。在更新某一个列的时候会自动更新
yeear:存放年

列类型之整形

我们直接将二进制数据保存到数据库用的不多



上面用红色标注的是日常开发中使用的比较多的数据类型

上图为日期数据类型的储存空间。具体参考mysql的参考文档
使用规范:在满足需求的情况下尽量选择占用空间小的,当我们的范围是不确定的情况下,用Int

演示将表中添加超出范围的数据

可以发现当存入的数据超出指定的范围将会出现报错

指定表中的无符号类型

当我们想无符号中的列中插入数据

列类型之bit


关于对bit按位储存和按位显示的理解:即这个数据类型在储存的时候是可以指定使用多少位的,比如bit(8)则他的储存范围是8位,即一个字节。在查询显示的时候,显示该数据在计算机中储存的二进制数据

疑问:当我们在创建表的时候没有指定bit(x)里面的x为什么不报错?

如下图所示,当我们想要插入负数的时候将会报错,说明bit的所有位没有符号位,只能存储正数

可以从下面看到插叙时是安装二进制显示的

可以按照数值进行查询

列类型之小数型

三种浮点数类型的精度演示

从上面可以看出float精度不够直接截取了,而decimal精度太高直接后面补零

decimal也可以放很多的整形数

列类型字符串

细节:char(size)size指定的是字符的个数,varchar(size)指定的字节的个数,最大的字节数是65535,但是底层会使用1-3个字节记录字段的大小。所有size表示的还是字符数,在utf8中使用3个字节表示一个字符,所有最多可以表示65532/3=21844个字符,如果是gbk中使用2个字节表示一个字符,将可以表示65532/2个字符

选中都注释的快捷键:shift+ctrl+c 取消注释:shift+ctrl+r
使用规定长度的字符串存储256个字符将会报错

utf8mb3和之前的utf8是对应的

当我们的varchar超出21844将会报错

  • 演示字符串类型的使用 char varchar
  • char(size)size
  • 固定长度字符串 最大255个字符
  • varchar(size)
  • 变长字符串 0-65535个字节
  • 可变长字符串 最大 65532字节(因为将会有3个字节用于记录存储的字符串的大小)
  • 如果编码方式位utf8 varchar(size) size = (65535-3)/3=21844 (utf8位3个字节表示一个字符,)最多可存储21844个字符
  • 如果编码方式位gbk varchar(size) size = (65535-3)/2=32766 (utf8位2个字节表示一个字符,)最多可存储32766个字符

字符串使用的细节

varchar(3)表示的也是可以存放3个字符。如果是utf8编码就可该编码方式存放3个字符,如果是gbk就伊该编码存放3个字符。所有所这种方式所使用的空间不能确定(3个字符占用的字节取决于你的编码)

字符串的录入使用双引号和单引号都可以

# 字符串细节1
#char(4)和varchar(4)表示的都是字符数,而不是字节并不区分字符是汉字还是字母


#创建一个表
CREATE TABLE t9(
	`name` CHAR(4));

INSERT INTO t9 VALUES('天才在左'); 

SELECT * FROM t9;
	INSERT INTO t9 VALUES("疯子在右"); 
	INSERT INTO t9 VALUES("甜腻谈的电")#该句将会报错
	
  • 细节2

    当我们存储的数据是固定长度的使用char,如果我们存储的数据不是定长的使用varchar

  • 细节3

不要一味的使用varchar,要视情况而定

  • 细节4(存储文本的时候可以使用txt longtxt等)

列类型之日期类型


时间戳的意思是当前时刻的时间,如此时是2023/3/31/21.54

创建表练习


修改表


alter改变
modify 修改
column列


# 创建表的课堂练习

CREATE TABLE t14(
	id INT,
	`name` VARCHAR(10),-- 名字不确定
	sex CHAR(1),-- 性别只用一个字符即可
	birthday DATE,
	entry_date DATETIME,-- 要求自动更新
	job VARCHAR(20),
	salary DOUBLE,
	`resume` TEXT);-- resume简历 介绍
INSERT INTO t14 VALUES(12,"石文涛","男","2001/4/26","2023/2/1 23:1:23",
"高级程序员","50000.0","是一个很优秀的程序员")	


# 修改表的操作

-- 1.(添加列)员工表emp上增加一个imge列 varcahr类型(要求在resume后面)

ALTER TABLE emp
ADD test1 VARCHAR(32) NOT NULL DEFAULT '' AFTER id ;

DESC emp;-- 显示表结构,可以查看表的所有的列
-- 2.修改job列,使其长度为60

ALTER TABLE emp
MODIFY job VARCHAR(60);


-- 3.删除sex列
ALTER TABLE emp
DROP sex;



-- 4.表名该为employee
RENAME TABLE emp TO employee

-- 5.修改表的字符集为utf8

ALTER TABLE employee CHARACTER SET utf8;
-- 6.列名修改成user_name

ALTER TABLE employee
	CHANGE `name` `user_name` VARCHAR(64) NOT NULL DEFAULT '';



DESC employee;






标签:对表,varchar,字节,--,utf8,SQL,字符串,操作,size
From: https://www.cnblogs.com/swtaa/p/17269464.html

相关文章

  • MYSQL数据库基础(1)
    一、数据库的历史1、简介  数据库技术,是之前60年代开始兴起的一门信息管理自动化的新兴学科,是计算机科学中的一个重要分支。随着计算机应用的不断发展,数据处理越来越占主导地位,数据库技术的应用也越来越广泛。数据管理是数据库的核心任务,内容包括对数据的分类、组织、编码、存......
  • Python 文件与路径操作
    路径表示绝对路径:绝对路径是指从盘符开始的文件全路径,一般表现为“/”。如“C:/Users/TheUser/Desktop/temp.txt”(Windows)、“/Users/TheUser/Desktop/temp.txt”(Windows)、“/home/TheUser/temp.txt”(Linux)。相对路径:相对路径是指从本文件开始算起的文件路径,总体长......
  • 操作系统实验1 体验 Nachos 下的并发程序设计
    操作系统实验报告实验:Lab1TheTroublewithConcurrentProgramming专业:计算机科学与技术班级:1班姓名:姚怀聿学号:229202022046322023年3月24日目录一、实验目的3二、实验要求3三、实验设计及关键代码实现31.多线程执......
  • 5.函数6.数组7.操作符8.常见关键字9.#define定义的常量和宏
    在我们学习的数学里面,函数的概念例子比如f(x)=2*x+1;  f(x,y)=x+y;在c语言也是同样的样子比如,我举例一条要相加的例子#definr_#include<stdio.h>intAdd(intx,inty)//int是他的返回类型是个整形,所以要加int//这就是一个函数add是自己创建的一个函数名,括号里面叫做函数的......
  • docker、compose安装及基础操作命令
    docker安装下载Docker依赖的组件yum-yinstallyum-utilsdevice-mapper-persistent-datalvm2设置下载docker服务的镜像源(阿里云)yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker服务yum-yinstalldocker-ce设置开机......
  • hivesql练习_会话划分问题
    现有页面浏览记录表(page_view_events)如下,表中有每个用户的每次页面访问记录。user_idpage_idview_timestamp100home1659950435100good_search1659950446100good_list1659950457100home1659950541100good_detail1659950552100cart16599505631......
  • Mybatis-动态SQL
    什么是动态SQL?动态SQL是MyBatis的强大特性之一。顾名思义,就是会动的SQL,即是能够灵活的根据某种条件拼接出完整的SQL语句。这种类似于MySQL中的casewhenthenelsethenend....这种语法,能够根据某种条件动态的拼接出需要的SQL。至于Mybatis如何实现动态SQL呢,Mybatis提供了......
  • hivesql练习_间断连续登录用户问题
    现有各用户的登录记录表(login_events)如下,表中每行数据表达的信息是一个用户何时登录了平台。user_idlogin_datetime1002021-12-0119:00:001002021-12-0119:30:001002021-12-0221:01:00现要求统计各用户最长的连续登录天数,间断一天也算作连续,例如:一个用户在......
  • Python基础之pyautogui模块(详细总结鼠标键盘操作)
    来源:https://zhuanlan.zhihu.com/p/471275277仅用于个人学习(以防自己忘记)1.GUI控制功能控制鼠标键盘使用的模块为:pyautogui,这个模块操作起鼠标键盘的时候,非常的迅速,而且如果该模块控制了鼠标后,程序比较难关闭,这时我们有两个方法专门针对以上的情况:1.1自动防故障功能 ......
  • An Error Ocurred - Error loading password's vault file ---Uninstall MySQL for Ex
    还是在2020年疫情封控开始前后的连续几个月天天重温Delphi、MSSQL、也偶尔折腾一下MySQL,最近2年都没再折腾,昨天2023.4.1,打开Excel是提示此此问题:卸载掉MySQLforExcel之后,再次打开Office2016就Ok了,奇怪为什么会出现这个问题呢 //点击showdetails之后如下:     ......