PHP网站开发如何建立vip,网站接入服务提供单位,简单的小公司企业简介100字,别人做的网站自己根目录吗这一章的主角是数据表#xff0c;但因为上篇文章还有一些数据库的知识没解决#xff0c;因此先写了数据库。
选择数据库
在数据库创建后#xff0c;不会将当前创建的数据库作为后续操作的默认数据库#xff0c;如果需要在数据库中创建数据表并插入数据#xff0c;需要先…这一章的主角是数据表但因为上篇文章还有一些数据库的知识没解决因此先写了数据库。
选择数据库
在数据库创建后不会将当前创建的数据库作为后续操作的默认数据库如果需要在数据库中创建数据表并插入数据需要先选择操作哪个数据库。在MySQL中可以使用USE语句选择某个数据库为后续操作的默认数据库。USE语句的具体语法格式如下
USE 数据库名称;
上次创建了两个数据库data和data01 随便选择一个进入
mysql USE data;
Database changed
只要有Database changed这个语句就表明你进入成功了。
如果想要查看当前选择的是哪个数据库可以使用SELECT DATABASE();实现具体SQL语句及执行结果如下
mysql SELECT DATABASE();
------------
| DATABASE() |
------------
| data |
------------
1 row in set (0.00 sec)
从上述执行结果可以看出当前选择的数据库名称为data如若你进入了一个数据库此时你又想进入其它的数据库可以直接USE 数据库名称;使用这个语句会直接转换到你想要进的数据库具体SQL语句及执行结果如下
mysql USE data;
Database changed
mysql SELECT DATABASE();
------------
| DATABASE() |
------------
| data |
------------
1 row in set (0.00 sec)mysql USE data01;
Database changed
可以看到已经进入data01数据库了。
修改数据库特征
数据库一旦被创建其特征也就确定了。如果后续想修改数据库的特征可以使用ALTER DATABASE语句实现。修改数据库特征的基本语法格式如下。
ALTER DATABASE | SCHEMA] [db_name] alter_option;
在上述格式中ALTER DATABASE能够更改数据库的整体特征。db_name为可选项是数据库名称如果省略数据库名称则该语句适用于当前所选择的数据库如果当前没有选择数据库则会发生错误。alter_option为要修改的特征可修改的特征如下。
[DEFAULT] CHARACTER SET [] charset_name
| [DEFAULT] COLLATE [] collation_name
| [DEFAULT] ENCRYPTION [] {Y | N}
| READ ONLY [] {DEFAULT| 0 | 1}
在上述特征中CHARACTER SET为数据库字符集COLLATE为数据库校对集ENCRYPTION为数据库加密选项READ ONIY为My5QL8022中引入的选项用控制是古允许修改数据库及其中的对象允许的值为DEFAULT、0(非只读)和1(只读)
接下来根据上述语法格式编写一个修改数据库字符集的SQL语句将数据库data01的字符集修改为gbkSQL语句及执行结果如下。
mysql SHOW CREATE DATABASE data01;
--------------------------------------------------------------------------------------------------------------
| Database | Create Database|
--------------------------------------------------------------------------------------------------------------
| data01 | CREATE DATABASE data01 /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTIONN */ |
--------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
这个是没修改之前的也就是默认的字符集 SHOW CREATE DATABASE 数据库这个命令是显示创建数据库的语句的一般向这种默认的是不需要要我们手动输入的。
修改过后的
mysql ALTER DATABASE data01 DEFAULT CHARACTER SET GBK;
Query OK, 1 row affected (0.01 sec)
mysql SHOW CREATE DATABASE data01;
-------------------------------------------------------------------------------------------------------------
| Database | Create Database |
-------------------------------------------------------------------------------------------------------------
| data01 | CREATE DATABASE data01 /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTIONN */ |
-------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
删除数据库
当数据库不再使用时应该将其删除以确保数据库存储空间中存放的是有效数据。删除数据库是将已经创建的数据库从磁盘空间中清除数据库清除后数据库中的所有数据也将一同被删除。在MySQL中删除数据库的基本语法格式如下。
DROP [DATABASE | SCHEMA] [IF EXISTS] db_name;
在上述语法格式中DROP DATABASE或DROP SCHEMA表示删除数据库中的所有数据表并删除数据库IF EXISTS可选项用于防止删除不存在的数据库时发生错误db_name为要删除的数据库的名称。
接下来根据上述语法格式编写一个删除数据库的SQL语句删除名称为data01的数据库具体SQL语句及执行结果如下。
mysql DROP DATABASE IF EXISTS data01;
Query OK, 0 rows affected (0.01 sec)
从上述代码中可以看到提示删除语句执行成功。
为验证数据库是否真正删除成功可以使用SHOW DATABASES语句查看数据库系统中当前存在的数据库具体执行语句及结果如下
mysql SHOW DATABASES;
--------------------
| Database |
--------------------
| chapter04 |
| chapter05 |
| data |
| information_schema |
| itcast |
| mysql |
| performance_schema |
| sys |
--------------------
8 rows in set (0.00 sec)
从上述命令执行结果可以看出数据库系统中不存在名称为data01的数据库说明data01数据库已经被成功删除。
需要注意的是执行DROP DATABASE命令后MySQL不会给出任何提示确认信息而是直接删除数据库。数据库被删除后数据库中的数据也一同被删除因此要尽量避免删除数据库的操作如确实有删除数据库的需求也建议在删除数据库之前先将数据库进行备份。
从此刻开始我们就要进行数据表的内容了
数据类型
使用MySQL数据库存储数据时不同类型数据的存储格式各不相同。MySQL数据库提供了多种数据类型主要包括数值类型、日期和时间类型、字符串类型。本节将针对这些数据类型进行讲解。
提醒大家一下数据类型里面的内容过一遍有个印象就可以了不需要全部记住里面的大多内容是不常用的了解即可用到了再回头看一下就行了。
数值类型
在数据库中经常需要存储一些数值例如员工的工资、工号、年龄等它们适合用数值类型保存。数值类型包括整数类型、浮点数类型、定点数类型、BIT类型等下面分别进行讲解。
1.整数类型
在MySQL数据库中经常需要存储整数数值。根据整数的取值范围和存储方式的不同MySQL将整数类型分为五种分别是TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT具体如表所示 从表中可以看出不同整数类型所占用的字节数和取值范围都是不同的 其中占用字节数最小的是TINYINT占用字节数最大的是B1GINT。不同整数类型的取值范围可以根据字节数计算出来例如TINYINT类型的整数占用1字节1字节是8位那么TINYINT类型无符号数的最大值就是2的8次方减一(即255)TINYINT类型有符号数的最大值就是2的7次方-1(即127)。同理可以算出其他不同整数类型的取值范围。
需要注意的是如果使用无符号数据类型需要在数据类型的右边加上UNSIGNED关键字来修饰例如INT UNSIGNED表示无符号INT类型。
在实际应用时需要根据实际情况选择对应的数据类型如果给字段所赋的值超出数据类型取值范围会发生错误并提示Out of range。
2.浮点数类型
在MySQL数据库中小数的表示分为浮点数和定点数两种类型。其中浮点数类型分为两种分别是单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。MySQL中浮点数类型对应的字节及取值范围如表所示。 浮点值是近似值不是作为精确值存储表中列举的取值范围都是理论上的极限值。双精度浮点数的取值范围远大于单精度浮点数的取值范围但同时也会耗费更多的存储空间相对会降低数据的计算性能。
3.定点数类型
定点数类型表示精度确定的小数类型适合用于对精度要求比较高的数据。定点数类型分为DECIMAL 和NUMERIC(需要说明的是在MySQL中NUMERIC和DECIMAL同义)。定义定点数类型的方式如下。
DECIMAL(M,D)
在上述定义中M表示数据的精度即数据存储的有效位数(整数位数加小数位数)最大值为65默认值为10D表示数据的小数位数即可以存储的小数点后的位数最大值为30默认值为0。例如DECIMAL(5,2)表示存储的小数的范围是-999.99-999.99系统会根据存储的具体数据来分配存储空间。
浮点数和定点数也可以使用数据类型后加(M,D)的方式来表示(属于非标准语法从MySQL 8.0.17开始不推荐使用非标准语法定义浮点数)。需要注意的是对浮点数类型和定点数类型的字段插入数据时如果插入数据的精度高于实际定义的精度小数位数超出范围那么系统会自动对数据进行四舍五入处理使值的精度达到要求。不同的是定点数类型在四舍五入时会出现Data truncated(数据截断)警告而浮点数不会出现警告如果因为整数部分超出范围(数据的整数位数大于M-D的值)那么数据会插入失败提示Out of range(超出取值范围)错误。
4.BIT类型
BIT(位)类型的字段通常用于存储bit值。定义BIT类型的基本语法格式如下。
BIT(M)
在上述格式中M用于表示每个值的位数范围为1~64。需要注意的是如果分配的BIT(M)类型的数据长度小于M则将在数据的左边用0补齐。例如为BIT(6分配值b101的效果与分配b000101相同。
日期和时间类型
为方便在数据库中存储日期和时间MySQL提供了表示日期和时间的数据类型分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。MySQL中的日期和时间数据类型如表所示。 从表中可以看出每种日期和时间类型的取值范围是不同的如果插入的数值超出这个范围系统会进行错误提示并且自动将对应类型的零值插入数据库。为了更好的学习日期和时间类型下面会对表中的类型进行详细讲解。
1.YEAR类型
YEAR类型用于存储年份数据。当只需要记录年份时使用YEAR更为方便和节省空间。在MySQL中可以使用以下3种表示方式指定YEAR类型的值具体如下
(1)使用4位字符串或数字表示范围为1901-2155或1901-2155。例如输2021或2021则插入数据库的值均为2021。
(2)使用1位或2位字符串表示范围为0-99其中‘0-69范围的值会被转换为2000-2069范围的YEAR值70-99范围的值会被转换为1970-1999范围的YEAR值例如输入21则插入数据库的值为2021。
(3)使用1位或2位数字表示范围为0-99其中1-69范围的值会被转换为2001-2069范围的YEAR值70-99范围的值会被转换为1970-1999范围的YEAR值。例如输入21则插入数据库的值为2021。
需要注意的是当使用YEAR类型时一定要区分0和0。因为字符串格式的0表示的YEAR值是2000而数字格式的0表示的YEAR值是0000。
2. DATE类型
DATE类型用于存储日期数据。如果数据要用来记录年月日通常使用DATE类型。在MySQL中可以使用以下4种表示方式指定DATE类型的值具体如下。
(1)以YYYY-MM-DD或YYYYMMDD 字符串方式表示。例如输入2021-01-21或20210121则插入数据库的日期都为2021-01-21。
(2)以YY-MM-DD或YYMMDD字符串方式表示。YY表示的是年它转换为对应年份的规则与YEAR类型类似。例如输入21-01-21或“210121则插入数据库的日期都为2021-01-21。
(3)以YYMMDD数字方式表示。例如输入210121则插入数据库的日期为2021-01-21。
(4)使用CURRENT_DATE或NOWO表示当前系统日期。
3.TIME类型
1.TIME类型用于储存时间数据。如果数据要用来记录时分秒通常使用TIME类型。TIME类型的显示格式一般为hh:mm:ss其中hh表示小时,mm表示分,ss表示秒。在MySQL中可以使用以下3种表示方式指定TIME类型的值具体如下。
(1)以D hh:mm:ss字符串方式表示。其中D表示日可以取0~34的值插入数据.小的值等于D×24hh。例如输入2 11:30:50则插人数据库的时间为59:30:50。
(2)以hhmmss字符串方式或hhmmss数字方式表示。例如输入345454或345454则插入数据库的时间为34:54:54。
(3)使用CURRENT_TIME或NOW()输入当前系统时间。
4. DATETIME类型
DATETIME类型用于存储日期和时间的数据。如果数据要用来记录年月日时分秒可以使用DATETIME类型。DATETIME类型的显示格式为YYYY-MM-DD hh:mm:ss其中YYYY表示年MM表示月DD表示日hh表示小时mm表示分ss表示秒。在MySQL中可以使用以下4种表示方式指定DATETIME类型的值。
(1)以YYYY-MM-DD hh:mm:ss或 YYYYMMDDhhmmss字符串方式表示的日期和时间取值范围为1000-01-01 00:00:00~9999-12-31 23:59:59。例如输入 2021-01-22 09:01:23或20210122090123则插入数据库的DATETIME值都为2021-01-22 09:01:23。
(2)以YY-MM-DD hh:mm:ss或YYMMDDhhmmss 字符串方式表示的日期和时间其中YY表示年取值范围为00-99。与DATE类型中的YY相同0069范围的值会被转换为2000-2069范围的YEAR值70~99范围的值会被转换为1970-1999范围的YEAR值。
(3)以YYYYMMDDhhmmss或YYMMDDhhmmss数字方式表示的日期和时间。例如输入20210122090123或210122090123则插入数据库的DATETIME值都为2021-01-22 09:01:23。
(4)使用CURRENT_TIMESTAMP或NOW()输入当前系统时间。
5. TIMESTAMP类型
TIMESTAMP类型用于表示日期和时间它的显示形式与DATETIME类似但是在使用时两者却有一些区别具体如下。
(1)TIMESTAMP类型的取值范围比DATATIME类型小。
(2)TIMESTAMP类型的值和时区相关如果插入的日期时间为TIMESTAMP类型系统会根据当前系统所设置的时区对日期时间进行转换后存放从数据库中取出TIMESTAMP类型的数据时系统也会将数据转换为对应时区时间后显示。由于TIMESTAMP类型的这个特性因此可能会导致两个不同时区取出来的同一个日期显示不一样。
字符串类型
MySQL中的字符串类型分为CHAR、VARCHAR、TEXT等多种类型不同的数据类型具有不同的特点具体如表所示。 接下来针对这些字符串类型进行详细讲解。
1.CHAR和VARCHAR
CHAR类型和VARCHAR类型的字段通常用于存储字符串数据不同的是CHAR类型的字段用于存储固定长度的字符串其中固定长度可以是0~255中的任意整数值VARCHAR类型的字段用于存储可变长度的字符串其中可变长度可以是0~65535中的任意整数值。在MySQL中定义CHAR和VARCHAR类型的方式如下。
CHAR(M)或VARCHAR(M)括号里面的M是字节长度也就是你定义字段这个后面会有需要的一个字符串类型的整数值也可以代表字符串的最大长度。
为帮助大家更好的理解CHAR和VARCHAR的区别接下来以CHAR(4)和VARCHAR(4)做对比进行说明具体如表所示。 从表中可以看出当数据为CHAR(4)类型时不管插入值的长度是多少所占用的存储空间都是4字节而VARCHAR(4)对应的数据所占用的字节数为实际长度加1。
需要注意的是如果插入的字符串尾部存在空格CHAR类型会去除空格后进行存储而VARCHAR类型会保留空格完整地存储字符串。
2.BINARY和VARBINARY类型
BINARY和VARBINARY类型类似于CHAR和VARCHAR类型不同的是BINARY和VARBINARY类型用于存储二进制数据。定义BINARY和VARBINARY类型的方式如下。
BINARY(M)
或
VARBINARY(M)
在上述格式中M指的是可保存的二进制数据的最大长度。需要注意的是BINARY类型的长度是固定的如果数据的长度小于M将在数据的后面用\0补齐最终达到指定长度。例如指定数据类型为BINARY(3)当插入d时实际存储的数据为d\0\0当插入db时实际存储的数据为db\0。
3. TEXT类型
TEXT类型用于表示大文本数据该类型的字段通常用于存储文章内容、评论等它的类型分为4种具体如表所示。 4.BLOB类型
BLOB类型的字段通常用于存储二进制的数据如图片、PDF文档等。BLOB类型分为4种具体如表所示。 需要注意的是BLOB类型的数据是根据二进制编码进行比较和排序而TEXT类型数据是根据文本模式进行比较和排序。
5. ENUM类型
ENUM类型又称为枚举类型定义ENUM类型的语法格式如下。
ENUM(value1,value2,...)
在上述格式中(valuel,value2,...)称为枚举列表往ENUM类型的字段中插入值时需要插入枚举列表中存在的值。枚举列表中的每个枚举值都有一个索引值索引值从1开始一次递增。
6.SET类型
SET类型的字段通常用于存储字符串对象该类字段的值可以有零个或多个。SET类型数据的定义格式与ENUM类型类似具体如下。
SET(value1,value2,...)
与ENUM类型相同(valuelvalue2..)列表中的每个值都有一个索引值MySQL中存入的也是这个索引值而不是列表中的值。
数据表的基本操作
在MySQL中所有数据都存储在数据表中因此在学习数据表中的数据操作之前有必要先了解数据表的基本操作。
创建数据表
创建数据表指的是在已经创建的数据库中建立新表。在MySQL中使用CREATETABLE语句创建数据表其基本语法格式如下。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(字段名1 数据类型1 [列级约束1]
[字段名2数据类型2【列级约束2]][·..]
[表级约束(字段名3[字段名4][.])][···])
[table_options][partition_options];
上述语法格式的说明具体如下。
TEMPORARY可选项表示临时表。临时表仅在当前会话中可见并且在会话关闭时自动删除。IF NOT EXISTS可选项只有在创建的数据表尚不存在时才会创建数据表可以避免因为存在同名数据表导致创建失败。tbl_name:创建的数据表的名称。字段名数据表字段的名称。数据类型字段中保存的数据的类型如日期类型等。知道我为什么让你们了解数据类型了吧这个很重要的约束用于保证数据的完整性和有效性的规则具体内容会在后面进行讲解。table_options可选项表示表选项用于设置数据表的相关选项如字符集校对集等。partition opions:可选项表示分区选项用于设置数据表分区的内容。
看到有这么多条件是不是一阵头大没关系下面我会用简单的SQL语法带你了解数据表的创建一看就会的那种。具体SQL语法及执行结果如下
这里我们先选择一个库进入我选择的是之前创建的data数据库
use data;
Database changed
进入数据库之后开始创建数据表
mysql create table year(- name VARCHAR(100),- birthday YEAR);
Query OK, 0 rows affected (0.04 sec)
下面这个是查看数据表的结构的语句后面也会提到在这里先了解一下
mysql desc year;
---------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
---------------------------------------------------
| name | varchar(100) | YES | | NULL | |
| birthday | year | YES | | NULL | |
---------------------------------------------------
2 rows in set (0.01 sec)
下面这个是插入语句后面也会提到
mysql insert into year values- (李白,24);
Query OK, 1 row affected (0.01 sec)
这个是查看数据表中的具体内容的SQL语句
mysql select * from year;
------------------
| name | birthday |
------------------
| 李白 | 2024 |
------------------
1 row in set (0.00 sec)
至此我们已经创建好了一个简单的数据表上面提到的插入和查询语句后面会一一进行详细讲解。
这个就是创建数据表成功了create table是创建数据表的语句创建数据库就是database了year是数据表的名称name和birthday 是字段也可以理解为属性名称后面的 VARCHAR(100)和 YEAR是数据类型也就是前面说到的如果字段是age年龄或者学号就可以使用整数类型成绩也可以使用整数或者浮点类型这里的年龄学号成绩都是字段字段后面是数据类型下面再写一个SQL语句来加深理解;
mysql create table data01(- age int,- id int- );
Query OK, 0 rows affected (0.02 sec)
这里的两个字段的数据类型我都设置为整型了int默认是11位表后面有个括号结尾也要有个括号然后以英文分号结尾。
上面这两个SQL语法都是最简单的了
查看数据表
数据表创建成功可以通过SQL语句对数据表进行查看以确认数据表是否创建成功和数据表的定义是否正确。在MySQL中查看数据表的SQL语句有3中具体如下。
1使用SHOW TABLES语句查看数据表
选择数据库后可以通过SHOW TABLES语句查看当前数据库中的数据表基本语法格式如下
SHOW TABLES [LIKE patternI WHERE expr];
在上述语法格式中LIKE子句和 WFERE子句为可选项如果SHOW TABLES句中不添加可选项表示管看当前数据库中的所有数据表如果添加则按照LIKE子句或WHERE子句的匹配结果查看数据表。
接下来使用SHOW TABLES语句查看当前数据库中所有的数据表以验证数据表year和data01是否创建成功具体SQL语句及执行结果如下。
mysql SHOW TABLES;
----------------
| Tables_in_data |
----------------
| data01 |
| year |
----------------
2 rows in set (0.00 sec)
查询到了这两个数据表说明我们创建成功了
2.使用SHOWCREATE TABLE查看数据表创建语句
在MySQL中可以通过SHOW CREATE TABLE语句显示创建数据表的语句。SHOWCREATE TABLE语句的基本语法格式如下。
SHOW CREATE TABLE tbl_name;
在上述格式中tbl_name指的是要查看的数据表的名称。
接下来使用SHOW CREATE TABLE语句查看数据表tb dept的创建语句具体SQL语句及执行结果如下所示。
mysql SHOW CREATE TABLE year;
--------------------------------------------------------------------------------------------------------------------------------------
| Table | Create Table|
--------------------------------------------------------------------------------------------------------------------------------------
| year | CREATE TABLE year (name varchar(100) DEFAULT NULL,birthday year DEFAULT NULL
) ENGINEInnoDB DEFAULT CHARSETutf8 |
--------------------------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
从上述执行结果可以看出year数据表的创建语句显示出来了。
3.使用DESCRIBE语句查看数据表结构信息
在MySQL中使用DESCRIBE语句可以查看字段名、字段类型等数据表结构信息。DESCRIBE语句的基本语法格式如下。
DESCRIBE数据表名
上述语法格式可以简写为如下形式。
DESC 数据表名
上述两种语法格式效果都一样为简化书写后续查看数据表结构信息时都使用“DESC数据表名”这种方式。
接下来使用DESC语句查看数据表data01的表结构信息具体SQL语句及执行结果如下。
mysql DESC data01;
----------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------
| age | int | YES | | NULL | |
| id | int | YES | | NULL | |
----------------------------------------
2 rows in set (0.00 sec)
上述命令的执行结果显示了数据表data01的表结构信息其中第一行字段的含义如下。Field:表示数据表中字段的名称即列的名称。Type:表示数据表中字段对应的数据类型。Null:表示该字段是否可以存储NULL值。Key:表示该字段是否已经建立索引。Default:表示该字段是否有默认值如果有将显示对应的默认值。Extra表示与字段相关的附加信息。
码字不易请大家多多支持感谢