桓台网站建设,华为手机官网入口,怎么做才能发布网站,温州市手机网站制作哪家便宜数据库的基础操作 1. 库操作2. 表的操作3. 数据类型 数据库是现代应用程序中至关重要的组成部分#xff0c;通过数据库管理系统#xff08;DBMS#xff09;存储和管理数据。 1. 库操作
创建数据库 创建数据库是开始使用数据库的第一步。下面是一些常见的创建数据库的示例通过数据库管理系统DBMS存储和管理数据。 1. 库操作
创建数据库 创建数据库是开始使用数据库的第一步。下面是一些常见的创建数据库的示例
-- 创建名为 db1 的数据库使用 utf8 字符集
CREATE DATABASE db1 DEFAULT CHARACTER SET utf8;-- 创建名为 db2 的数据库指定字符集为 utf8
CREATE DATABASE db2 CHARSETutf8;-- 创建名为 db3 的数据库指定字符集为 utf8校验规则为 utf8_general_ci
CREATE DATABASE db3 CHARSETutf8 COLLATE utf8_general_ci;查看系统默认字符集和校验规则 您可以使用以下命令查看系统默认字符集和校验规则
SHOW VARIABLES LIKE character_set_database;
SHOW VARIABLES LIKE collation_database;查看数据库支持的字符集和校验规则 您可以使用以下命令查看数据库支持的字符集和校验规则
SHOW CHARSET;
SHOW COLLATION;查看数据库 您可以使用以下命令查看当前数据库中的所有数据库
SHOW DATABASES;显示数据库创建语句 您可以使用以下命令显示数据库的创建语句
SHOW CREATE DATABASE database_name;修改数据库 您可以使用以下命令修改数据库的字符集和校验规则
ALTER DATABASE database_name CHARACTER SET charset_name;
ALTER DATABASE database_name COLLATE collation_name;删除数据库 如果需要删除数据库可以使用以下命令
DROP DATABASE database_name;备份数据 您可以使用 mysqldump 命令将数据库备份到文件中
mysqldump -u username -p database_name backup_file.sql恢复数据 要恢复备份的数据可以使用 source 命令
source /path/to/backup_file.sql;查看连接情况 您可以使用以下命令查看当前数据库连接情况
SHOW PROCESSLIST;2. 表的操作
数据库表是组织和存储数据的关键。在数据库中您可以通过创建、修改、删除表等操作来管理数据。
创建表 表的创建是数据库设计的第一步通过以下语法可以创建表
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;field 表示列名 datatype 表示列的类型 character set 字符集如果没有指定字符集则以所在数据库的字符集为准 collate 校验规则如果没有指定校验规则则以所在数据库的校验规则为准 具体示例可以参考以下案例
create table users (
id int,
name varchar(20) comment 用户名,
password char(32) comment 密码,
birthday date comment 生日
) character set utf8 engine MyISAM;查看表结构
使用 DESC 命令可以查看表的结构
DESC users;Field字段列名分别是 id、name、password 和 birthday。 Type类型数据类型分别是 int(11)、varchar(20)、char(32) 和 date。 Null可为空表示该列是否允许为空这里都是YES表示允许为空。 Key键表示该列是否为主键这里为空。 Default默认值表示该列的默认值这里都是NULL表示没有默认值。 Extra额外信息包含了关于列的额外信息这里都为空。 修改表
在项目实际开发中我们经常需要修改表的结构比如添加字段、修改字段属性、删除字段等。以下是一些常见的修改表的操作
-- 在users表添加记录
INSERT INTO users VALUES (1, a, b, 1982-01-04), (2, b, c, 1984-01-04);
-- 在users表添加一个字段用于保存图片路径
ALTER TABLE users ADD assets VARCHAR(100) COMMENT 图片路径 AFTER birthday;
-- 修改name字段长度为60
ALTER TABLE users MODIFY name VARCHAR(60);
-- 删除password列
ALTER TABLE users DROP COLUMN password;
-- 修改表名为employee
ALTER TABLE users RENAME TO employee;
-- 将name列修改为xingming
ALTER TABLE employee CHANGE COLUMN name xingming VARCHAR(60);删除表
如果需要删除表可以使用以下命令
DROP TABLE IF EXISTS table_name;3. 数据类型 数值类型 BIT(M): 位类型M指定位数默认为1范围为1-64。 TINYINT [UNSIGNED]: 字节最小值为 -128最大值为127有符号范围为0~255无符号。 BOOL: 使用0和1表示真和假。 SMALLINT [UNSIGNED]: 带符号范围为 -32768 到 32767无符号范围为0~65535。 INT [UNSIGNED]: 带符号范围为 -2147483648 到 2147483647 无符号范围为0~4294967295。 BIGINT [UNSIGNED]: 带符号范围为 -9223372036854775808 到 9223372036854775807 无符号范围为 0~18446744073709551615。 FLOAT(M,D) [UNSIGNED]: 单精度浮点数M指定显示长度D指定小数位数占用4字节。 DOUBLE(M,D) [UNSIGNED]: 双精度浮点数M指定显示长度D指定小数位数占用8字节。 DECIMAL(M,D) [UNSIGNED]: 定点数M指定长度D表示小数位数。 二进制类型 BLOB: 二进制大对象用于存储二进制数据。 BIT(M): 位类型M指定位数默认为1范围为1-64。 文本类型 TEXT: 大文本不支持全文索引不支持默认值。 CHAR(size): 固定长度字符串最大255。 VARCHAR(SIZE): 可变长度字符串最大长度65535。 时间日期类型 DATE: 日期类型格式为yyyy-mm-dd。 DATETIME: 日期时间类型格式为yyyy-mm-dd hh:mm:ss。 TIMESTAMP: 时间戳类型从1970年开始的yyyy-mm-dd hh:mm:ss。 TIME: 时间类型格式为hh:mm:ss。 String类型 ENUM类型: 枚举类型表示一列值每个值来自表创建时在列规定中显示的一列值。 SET类型: 集合类型表示一列值可以有零或多个值值来自表创建时规定的允许的一列值。 整数类型
MySQL提供了多种整数类型包括TINYINT、SMALLINT、INT、BIGINT等。这些类型可以是有符号的或无符号的默认情况下是有符号的。对于存储范围更广泛的数据可以考虑使用无符号整数类型但需要注意越界插入的问题。
CREATE TABLE users (id INT UNSIGNED,age TINYINT
);例子
-- 正确的插入示例
INSERT INTO users (id, age) VALUES (1, 25);
-- 错误的插入示例越界
INSERT INTO users (id, age) VALUES (-1, 128);位类型
bit[(M)] : 位字段类型。M表示每个值的位数范围从1到64。如果M被忽略默认为1
创建了一个名为 flags 的表其中包含了三个名为 status 的列分别指定了长度为 1、2 和 3 位的 BIT 数据类型用于存储不同长度的比特位状态值BIT 数据类型的最大长度为 64 位。
CREATE TABLE flags (status1 BIT(1), -- 数字范围0 到 1status2 BIT(2), -- 数字范围00 到 11status3 BIT(3) -- 数字范围000 到 111
);浮点数
float[(m, d)] [unsigned] : M指定显示长度d指定小数位数占用空间4个字节
有符号浮点数范围 考虑一个有符号的float(6, 3)类型它表示的范围是什么float(6, 3)表示总共有6位数字其中3位是小数部分。因此剩余的3位是整数部分。对于有符号的浮点数其中一位用于表示正负号。
因此对于float(6, 3)可以表示的范围是从 -999.999 到 999.999。
无符号浮点数范围 如果我们将浮点数指定为无符号的那么它的范围将从0开始。比如对于float(6, 3) unsigned范围将是从 0 到 999.999。
-- 创建表 tt7其中 salary 是一个有符号的 float(6, 3) 类型的列
CREATE TABLE tt7 (id INT,salary FLOAT(6, 3)
);-- 向 tt7 表插入一条数据
INSERT INTO tt7 VALUES (1, -999.999);
-- 向 tt7 表插入一条数据
INSERT INTO tt7 VALUES (2, 999.999);char数据类型
char(L): 固定长度字符串L是可以存储的长度单位为字符最大长度值可以为255
示例
-- 创建表 tt9其中 name 是一个长度为 2 的固定长度字符串
CREATE TABLE tt9 (id INT,name CHAR(2)
);-- 向 tt9 表插入数据
INSERT INTO tt9 VALUES (100, ab);
INSERT INTO tt9 VALUES (101, 中国);-- 尝试向 char 类型的列插入超出长度的值
INSERT INTO tt9 VALUES (102, abc); -- 错误超出了指定的长度错误示例
-- 创建表 tt11尝试使用超出最大长度的值
CREATE TABLE tt11 (name CHAR(256) -- 错误超过了最大长度限制
);在 char(L) 数据类型中L 表示的是可以存储的字符长度而不是字节长度。这一点与 C 语言中的字符长度概念略有不同C 语言中的字符长度通常是以字节为单位。因此在使用 char 数据类型时需要根据实际需求来确定合适的长度并注意字符编码对存储空间的影响。
varchar
varchar(L): 可变长度字符串L表示字符长度最大长度65535个字节
-- 创建表 tt10其中 name 是一个可变长度字符串最大长度为 6
CREATE TABLE tt10 (id INT,name VARCHAR(6)
);-- 向 tt10 表插入数据
INSERT INTO tt10 VALUES (100, hello);
INSERT INTO tt10 VALUES (101, 我爱你中国);注意事项 字符编码影响长度 varchar 类型的长度受字符编码影响。在 utf8 编码下一个字符通常占用 3 个字节而在 gbk编码下一个字符通常占用 2 个字节。 最大长度限制 varchar 类型的最大长度为 65535个字节但需要留出一部分字节用于记录数据大小因此有效字节数是 65532。尝试超出最大长度限制会导致错误。 错误示例
-- 尝试创建表时超出最大长度限制
CREATE TABLE tt11 (name VARCHAR(21845) CHARSETutf8 -- 错误超过了最大长度限制
);-- 尝试插入超出最大长度限制的数据
INSERT INTO tt11 VALUES (a REPEAT(21845)); -- 错误超出了指定的长度char 和 varchar 比较
实际存储 char 固定长度字符串存储空间在创建表时分配不受实际存储内容长度影响。 varchar可变长度字符串存储空间在插入数据时动态分配根据实际存储内容长度调整。 存储空间分配
char(4) 如果存储内容不足指定长度会用空格填充至指定长度因此实际占用的存储空间是固定的。 varchar(4) 根据实际存储内容长度动态分配存储空间不会浪费空间。
假设有以下数据 “abcd” 是 4 个字符长度 “A” 是 1 个字符长度 “Abcde” 是 5 个字符长度 在使用 char 和 varchar 存储这些数据时
char(4) 存储方式 “abcd” 占用 4 * 312 个字节 “A” 占用 4 * 312 个字节需要用空格填充至指定长度 “Abcde” 超过4个字符 varchar(4) 存储方式 “abcd” 占用 4 * 3113 个字节1 个字节用于记录存储内容长度 “A” 占用 1 * 314 个字节 “Abcde” 超过4个字符 日期和时间类型
date 类型 date 类型表示日期格式为 yyyy-mm-dd占用三个字节。它用于存储不包含具体时间的日期信息。
datetime 类型 datetime 类型表示日期和时间格式为 yyyy-mm-dd HH:ii:ss范围从 1000 年到 9999 年占用八个字节。它用于存储具体的日期和时间信息。
timestamp 类型 timestamp 类型也表示日期和时间格式与 datetime 完全一致但其范围从 1970 年开始占用四个字节。它通常用于记录数据的更新时间或创建时间在数据更新时自动更新为当前时间。
-- 创建表
CREATE TABLE birthday (t1 DATE,t2 DATETIME,t3 TIMESTAMP
);-- 插入数据
INSERT INTO birthday(t1, t2) VALUES (1997-07-01, 2008-08-08 12:01:01);以上插入了两种时间数据日期和时间都被正确存储在对应的列中。此时 timestamp 列会自动填入当前时间作为默认值。
Enum 和 Set 类型
Enum 类型 语法ENUM(‘选项1’, ‘选项2’, ‘选项3’, …) 枚举类型提供了若干个选项的值但实际上只存储其中一个值。 出于效率考虑枚举值实际上存储的是相应选项值的数字索引从1开始最多65535个。
Set 类型 语法SET(‘选项值1’, ‘选项值2’, ‘选项值3’, …) 集合类型提供了若干个选项的值但实际上可存储其中任意多个值。 与 Enum 类型类似出于效率考虑集合值实际上存储的是相应选项值的数字索引但索引值是通过二进制位来表示的。
CREATE TABLE votes (username VARCHAR(30),hobby SET(登山, 游泳, 篮球, 武术),gender ENUM(男, 女)
);-- 插入数据
INSERT INTO votes VALUES (雷锋, 登山,武术, 男);
INSERT INTO votes VALUES (Juse, 登山,武术, 男);
INSERT INTO votes VALUES (LiLei, 登山, 男);
INSERT INTO votes VALUES (HanMeiMei, 游泳, 女);