企业网站seo贵不贵,网站海外推广方案,大连网站设计室,关于网站首页建设的文章目录 ♫什么是数据库 ♫数据库的分类
♪关系型数据库
♪非关系型数据库 ♫显示已有的数据库 ♫创建数据库 ♫删除数据库 ♫使用数据库 ♫数据类型
♪数值类型
♪字符串类型
♪日期类型 ♫创建表 ♫查看表
♪查看当前数据库下所以表#xff1a;
♪查看指定表结构#x…目录 ♫什么是数据库 ♫数据库的分类
♪关系型数据库
♪非关系型数据库 ♫显示已有的数据库 ♫创建数据库 ♫删除数据库 ♫使用数据库 ♫数据类型
♪数值类型
♪字符串类型
♪日期类型 ♫创建表 ♫查看表
♪查看当前数据库下所以表
♪查看指定表结构 ♫删除表 ♫什么是数据库 数据库是使用各种数据结构设计出来的一种用于存储、组织和管理数据的软件系统。数据库可以提供远程服务即通过远程连接来使用数据库因此也称为数据库服务器。 注数据库中的数据通常是存储在硬盘或固态硬盘等持久性存储介质中故数据库中的数据能持久化保存断电后也不会丢失。 ♫数据库的分类 数据库可以分为关系型数据库和非关系型数据库两种 ♪关系型数据库 关系型数据库RDBMS是一种基于关系模型的数据库。其中数据以表格的形式组织并保留在多个相关联的表格之间的关系中每个表格代表一个实体类别如顾客、产品或订单并且每个表格之间的关系通过共享键实现。关系型数据库使用结构化查询语言SQL进行数据访问和管理。常见的非关系型数据库有MySQL、Oracle和Microsoft SQL Server。 ♪非关系型数据库 非关系型数据库是一类非关系型的数据存储技术与关系型数据库相对。非关系型数据库通常采用键值对或文档形式存储数据具有可扩展、高可用、高性能和灵活的特点。非关系型数据库不要求使用SQL语言进行数据访问和管理。常见的非关系型数据库有MongoDB、Cassandra、Redis、Couchbase等。 知道了数据库是什么之后 我们接下来就来以关系型数据库MySQL为例学习管理关系型数据库的SQL语言~ ♫显示已有的数据库 MySQL中可以有多个数据库每个数据库可以有多个表每个表可以有多个行和列我们先用SQL来查询当前MySQL中已有的数据库 语法show databases; mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
4 rows in set (0.00 sec) 表格里的四个数据库就是MySQL自带的系统数据库通常情况下我们是不会直接使用这四个数据库的也不介意去动这几个数据库不然可能会出现一系列bug。 ♫创建数据库 既然系统库不能动那我们就得自己来创建个数据库 语法create database 数据库名; mysql create database test;
Query OK, 1 row affected (0.01 sec)mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
--------------------
5 rows in set (0.03 sec) 可以看到我们已经创建好了一个test的数据库了。 注数据库名不能是SQL关键字但可以是反引号括起来的关键字如table。 在创建数据库的时候我们还可以指定所建数据库采用的字符集以及字符集的校验规则 语法create database 数据库名 character set 字符集 collate 校验规则; mysql create database test2 character set utf8mb4 collate utf8_general_ci;
Query OK, 1 row affected (0.02 sec) 注 ①.当我们创建数据库没有指定字符集和校验规则时系统使用默认字符集utf8默认校验规则utf8_ general_ ci。 ②.我们可以通过 show charset; 来查询MySQL中的字符集通过 show collation; 来查询MySQL中的校验规则。 ③.由于字符集和比较规则是互相有联系的如果我们只修改了字符集比较规则也会跟着变化如果只修改了比较规则字符集也会跟着变化只修改字符集则比较规则将变为修改后的字符集默认的比较规则只修改比较规则则字符集将变为修改后的比较规则对应的字符集。 ④ .MySQL的utf8编码不是真正的utf8没有包含某些复杂的中文字符。MySQL真正的utf8是 使用utf8mb4。 在创建数据库时若是创建同名的数据库会报错 mysql create database test;
ERROR 1007 (HY000): Cant create database test; database exists 加上if not exists的可以将错误转换为警报 语法create database if not exists test; mysql create database if not exists test;
Query OK, 1 row affected, 1 warning (0.00 sec) ♫删除数据库 创建的数据库若是不需要了也可以删除它但是刷了就木有了需要谨慎执行这一指令 语法drop database 数据库名; mysql drop database test2;
Query OK, 0 rows affected (0.09 sec)mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
--------------------
5 rows in set (0.00 sec) 这样就已经将 test2 数据库删除了。 当然若是删除不存在的数据库会报错 mysql drop database test3;
ERROR 1008 (HY000): Cant drop database test3; database doesnt exist 加上if exists可以将错误转换为警报 语法drop database if exists 数据库名; mysql drop database if exists test3;
Query OK, 0 rows affected, 1 warning (0.00 sec) ♫使用数据库 要创建表需要先选定某个数据库 语法use 数据库名; mysql use test;
Database changed 选定了test的数据库后接下来的操作就都在该数据库里了。 数据库里的表每一列都是带有类型是所有行所对应的列所对应的类型必须一致故我们要创建表得先了解下MySQL的数据类型。 ♫数据类型 ♪数值类型 数据类型大小说明对应Java类型对应C类型BIT[(M)]M为指定位数默认为1 二进制数M的 范围从 1 到 64 存储数值范围从0 到 2^M-1 常用 Boolean 对应BIT 此时默认是1 位即只能存 0 和 1 char[]TINYINT1字节Bytesigned charSMALLINT2字节Shortshort intINT4字节IntegerintBIGINT8字节Longlong long intFLOAT(M,D)4字节 单精度 M 指定长度 D 指定小数位数。会发生精度丢失 FloatfloatDOUBLE(M,D)8字节DoubledoubleDECIMAL(M,D)M/D的最大值2双精度M指定长度D指定小数位数。精确数值BigDecimalchar[]NUMERIC(M,D) M/D 最大 值 2 与DECIMAL一样BigDecimalchar[] 注数值类型也可指定为unsigned表示无符号类型 ♪字符串类型 数据类型大小说明对应Java类型对应C类型VARCHAR(SIZE)0~65535字节可变长度字符串Stringchar[]TEST0~65535字节长文本数据Stringchar[]MEDIUMTEXT0~16777215字节中等长度文本数据Stringchar[]BLOB0~65535字节二进制形式的长文本数据Byte[]char[] ♪日期类型 数据类型大小说明对应Java类型对应C类型DATETIME8字节 范围从 1000 到 9999 年不会进行时区的 检索及转换 java.util.Date 、 java.sql.Timestamp MYSQL_TIMETIMESTAMP4字节 范围从 1970 到 2038 年自动检索当前时区并进行转换。 java.util.Date 、 java.sql.Timestam MYSQL_TIME 注由于TIMESTAMP的时间戳即将用尽故更建议使用DATETIME 知道了数据类型后就可以在指定的数据库中创建表了。 ♫创建表 语法create table 表名 (列名1 类型1, 列名2 类型2, 列名3 类型3); mysql create table student(- id int,- name varchar(20),- age int- );
Query OK, 0 rows affected (0.03 sec) 还可以使用 comment 增加字段说明 语法 create table 表名 (列名1 类型1 comment 注释内容, 列名2 类型2 comment 注释内容, 列名3 类型3 comment 注释内容); mysql create table student2(- id int comment 序列号,- name varchar(20) comment 姓名,- age int comment 年龄- );
Query OK, 0 rows affected (0.05 sec) 注comment只能在创建表时使用其他时候想要注释可以使用-- --后面还有个空格或#或/* */来表示。-- 和#都表示单行注释/* */表示多行注释 创建表时也可以添加if not exists预防报错 语法create table if not exists 表名 (列名1 类型1, 列名2 类型2, 列名3 类型3); mysql create table if not exists student(- id int,- name varchar(20),- age int- );
Query OK, 0 rows affected, 1 warning (0.03 sec) ♫查看表 创建完表后我们可以查看下我们所创建的表。 ♪查看当前数据库下所以表 语法show tables; mysql show tables;
----------------
| Tables_in_test |
----------------
| student |
| student2 |
----------------
2 rows in set (0.02 sec) ♪查看指定表结构 语法desc 表名; mysql desc student;
-----------------------------------------------
| Field | Type | Null | Key | Default | Extra |
-----------------------------------------------
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
-----------------------------------------------
3 rows in set (0.03 sec) 注int(11)中11表示的是显示的宽度不影响存储varchar(20)表示的是最大长度是20个字符Null表示是否可以为空key与列的约束有关Default表示默认值Extra表示额外的描述 ♫删除表 我们将不要的student2表删掉。 语法drop table 表名; mysql drop table student2;
Query OK, 0 rows affected (0.06 sec) 同样删表时也可以加上if exists预防直接报错 语法drop table if exists 表名; mysql drop table if exists student3;
Query OK, 0 rows affected, 1 warning (0.00 sec) 删表操作还支持同时删除多个表 语法drop table if exists 表名; mysql drop table if exists a,b,c;
Query OK, 0 rows affected, 3 warnings (0.02 sec)