自学内容网 自学内容网

Mysql数据库 | 第二章 | 创建表 | 数据类型 | 字符串 | 日期类型 | 修改表

P 11 创建表 2022/6/29

1.创建表

image-20220629122118630

2.SQL语句执行

# 指令创建表
# 注意:zjc_02创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类
# id 整形
# name 字符串
# password 字符串
# birthday 日期
CREATE TABLE `user` (
id INT,
`name` VARCHAR(255),
`password` VARCHAR (255),
`birthday` DATE)
CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

P 12 列类型有哪些 2022/6/29

1.数据类型(列类型)

  • 列类型即数据类型
  • 有无符号代表正负,有符号的分正负,无符号的只有正的(java)

image-20220629143942982

image-20220629145635697

P 13 列类型之整型 2022/6/30

1.数值型(整数)的基本使用

  • 说明使用规范:在能够满足需求而的情况下,尽量选择占用空间小的类型
  • image-20220630112612607
  • 应用实例:
# 演示整型的是一个
# 使用tinyint 有符号的:-128~127  无符号的: 0-255
CREATE DATABASE `db_01` CHARACTER SET utf8 COLLATE utf8_bin   # 创建数据库,设置字符集和校验规则
# 表的字符集,校验规则,引擎使用数据库默认的
# 如果没有指定unsigned,则tinyint就是有符号的
CREATE TABLE t3 (
id TINYINT );    # 未指定则是有符号的,范围-128~127

CREATE TABLE t4 (
id TINYINT UNSIGNED );   # 添加unsigned就是无符号的,范围0-255

INSERT INTO t3 VALUES(-128);  # 这是简单的添加语句
SELECT * FROM t3

INSERT INTO t4 VALUES(255); 
SELECT * FROM t4

P 14 列类型之bit 2022/7/1

1.数值型bit的显示

image-20220701120024185

# 演示bit类型使用
# 1.bit(m) 在1-64,一个字节(byte)为8个比特/位,一个英文字母通常占用一个字节,一个汉字通常占用两个字节。
# 2.添加数据,范围,按照你给的位数来确定 ,比如m=8,表示一个字节,0~255(1,2,4,8,16,32,64,128)
# 3.显示按照bit,
# 4.查询时,任然可以按照数来查询
CREATE TABLE t5 (num BIT (8));
INSERT INTO t5 VALUES(1);
SELECT * FROM t5;  
SELECT * FROM t5 WHERE num = 1; # 二进制显示查询结果

P 15 列类型之小数型 2022/7/2

1.小数的基本使用

image-20220702095613723

案例演示:

# 演示decimal类型、float、double使用

# 创建表
CREATE TABLE t6 (
num1 FLOAT,      # 数值类型为float
num2 DOUBLE,     # 数值类型为double
num3 DECIMAL(30,20));  # decimal可以存放很大的数
# 添加数据
INSERT INTO t6 VALUES(88.12345678912345,88.123456789123456,88.123456789123456)
SELECT * FROM t6;

DROP TABLE t7;  # 删除表t7
CREATE TABLE t7(
num DECIMAL(65));
INSERT INTO t7 VALUES(797787897897897897897989789879745946959);
SELECT * FROM t7;
# decimal与bigint对比,t7与t8
CREATE TABLE t8(
num BIGINT UNSIGNED)   # 使用bigint对比能不能存放长数据
INSERT INTO t8 VALUES(797787897897897897897989789879745946959);


# bigint查询结果,显示超出范围了,decimal的范围更大
1 queries executed, 0 success, 1 errors, 0 warnings

查询:INSERT INTO t8 VALUES(797787897897897897897989789879745946959)

错误代码: 1264
Out of range value for column 'num' at row 1  

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.002 sec

P 16 列类型之字符串 (1) 2022/7/8

1.字符串的基本使用

image-20220708151458065

# 演示字符串类型使用char,varchar
-- CHAR(size)
-- 固定长度字符串 最大255 字符
-- varchar(size) 0~65535
-- 可变长度字符串 最大65532字节 【utf8编码最大21844字符 ,1-3个字节用于记录大小】
-- 如果表的编码是utf8 varchar(size) ,3个字节表示一个字符,则size=(65535-3)/3=21844
-- 如果表的编码是gbk varchar(size) ,2个字节表示一个字符,则size=(65535-3)/2=32766
CREATE TABLE t09 (
 `name` CHAR(255));   # 最大255
 
 CREATE TABLE t10 (
 `name` VARCHAR(32766)) CHARSET gbk; 
 
 DROP TABLE t10;
 
  CREATE TABLE t11 (
 `name` VARCHAR(32767)) CHARSET gbk;   # 用于测试varchar编码范围

P 17 列类型之字符串(2) 2022/7/9

1.字符串使用细节(一)

image-20220709215734736

细节演示1:

# 演示字符串列类型的使用细节
# char(4)和varchar(4)这个4表示的是字符,而不是字节
# 
# char(4)的测试:
CREATE TABLE t11(
`name` CHAR(4));
INSERT INTO t11 VALUES('abcd');

INSERT INTO t11 VALUES('abcde');  # 超过五个字符报错

INSERT INTO t11 VALUES('你好在干');  # 不区分字符是字母还是汉字

SELECT * FROM t11;
# varchar(4)的测试:
CREATE TABLE t12(
`name` VARCHAR(4));
INSERT INTO t12 VALUES('abcde');
INSERT INTO t12 VALUES('abcd');
INSERT INTO t12 VALUES('你好在干吗');
INSERT INTO t12 VALUES('ab北京');
SELECT * FROM t12;

2.字符串使用细节(二)

image-20220709223520175

3.字符串使用细节(三)

image-20220709223708144

4.字符串使用细节(四)

image-20220709223832967

细节演示:

# 如果varchar不够用,可以考虑使用mediumtext,或者longtext
# 如果想简单一点,可以直接使用text
CREATE TABLE t13( content TEXT, content2 MEDIUMTEXT , content3 LONGTEXT);
# 字符串使用单引号
INSERT INTO t13  VALUES(
'学习', '学习100','学习1000~~' );
SELECT * FROM t13; 

P 18 日期类型 2022/7/12

1.日期类型基本使用

image-20220712194722265

代码演示:

# 演示时间相关的案例
# 创建一张表,date,datetime,datestamp
CREATE TABLE t14 ( 
birthday DATE ,--  记录 生日,年月日
job_time DATETIME, -- 记录 年月日,时分秒
logi_time TIMESTAMP -- 登录时间,如果希望log_time自动更新,需要配置
NOT NULL   -- 非空
DEFAULT CURRENT_TIMESTAMP -- DEFAULT CURRENT_TIMESTAMP 默认当前时间
ON UPDATE CURRENT_TIMESTAMP); -- 在修改的时候自动以当前时间填充
SELECT * FROM t14;
INSERT INTO t14(birthday,job_time)
VALUES('2022-7-12','2022-7-12 10:10:10');
-- 如果我们更新t14 表的某条吉记录,login_time列会自动以当前时间进行更新
INSERT INTO t14(
birthday)
VALUES('2019-7-7');

相关结果截图:

image-20220712194902449

P 19 创建表练习 2022/7/12

1.练习

练习一:创建一个员工表emp(课堂练习),选用适当的数据类型 createtable.sql,字段如下:

image-20220712195423498

代码演示:

# 创建表的课堂练习
字段 属性 
-- id 整型
-- name 字符串
-- sex 字符型
-- birthday 日期型 (date)
-- entry_date 日期型(date)
-- job 字符型
-- salary 小数型
-- resume 文本型
CREATE TABLE `emp` (
id INT ,
`name` VARCHAR(32),
sex CHAR(1),
birthday DATE,
entry_date DATETIME,
job VARCHAR(32),
salary DOUBLE,
`resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
-- 添加记录
INSERT INTO `emp` VALUES(
100,'小妖怪','男','2002-9-15','2022-7-12','搬砖', 2500,'搬砖挣钱');
SELECT * FROM `emp`;

相关结果截图:

image-20220712201932102

P 20 修改表 2022/7/13

1.修改详细指令

image-20220713112011349

2.应用实例

image-20220713112231096

代码演示:

# 员工表emp的表上增加一个image列,varchar类型(要求在resume后面)
ALTER TABLE emp   -- 修改一个表
ADD image VARCHAR(32) NOT NULL DEFAULT ''
 -- 增加一个列为image,数据类型为varchar,非空,默认给一个空的字符
AFTER RESUME   -- 在resume 后面
SELECT * FROM emp;
DESC employee;   -- 可以查看表的结构
# 修改job列,使其长度为60
ALTER TABLE emp 
MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
# 删除sex列 
ALTER TABLE emp 
DROP sex;
# 表明改为employee
RENAME TABLE emp TO employee;
# 修改字符集为utf8
ALTER TABLE employee 
CHARACTER SET utf8;
# 列明name修改为user_name
ALTER TABLE employee
CHANGE `name` name_user VARCHAR(32) NOT NULL DEFAULT '' 

DESC employee;

相关截图结果:

image-20220713121228716


原文地址:https://blog.csdn.net/ZJC744575/article/details/143074557

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!