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;