SQL对表的操作

创建表

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

注意:表名和数据库名用的反引号是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;






posted @ 2023-04-02 18:39  一往而深,  阅读(84)  评论(0编辑  收藏  举报