MySQL基本操作(1)
初始数据库
数据库的基本概念
数据库是一个按照数据结构来组织、存储和管理数据的仓库,换句话说,就是存储数据的仓库。
为何使用数据库?使用数据库不仅仅为了使数据持久化,还能使得数据能够进行有效的管理,以及提供的各种安全机制能够保证数据的安全,还可以用过远程连接去使用它。对于传统的文件存储数据,共享性差,冗余度大,并且数据独立性较差,同时不利于数据查询和管理,不利于存储海量数据。
数据库与数据结构之间的关系。数据结构是数据之间的组织和存储方式,数据库可以看作是复杂的数据结构,数据库不仅存储数据,还提供了高效访问和管理大量数据的方法。例如:MySQL的索引使用的B+树这种数据结构。
数据库管理系统是建立,操作和管理数据库的大型软件,是操作数据库的工具。
数据库服务是指通过网络提供的数据库功能,使用户能够在远程服务器上存储、管理和访问数据。通常包括数据库服务器,网络连接,存储设备等组件。常见的数据库服务包括MySQL,Oracle等。
SQL是一种特定于数据库的编程语言,用于管理,查询,和操作关系型数据库。
SQL分类:(仅作整理,会在具体情况中展示)
- 数据查询语言(DQL):用于从数据库中检索数据,主要命令:select,用于从一个表或多个表检索数据
- 数据定义语言(DEL):用于定义和管理数据库的结构,主要命令:create(创建数据库),alter(修改数据库),drop(删除数据库),rename(重新命名数据库)
- 数据操作语言(DML):用于添加,修改和删除数据库中的数据。主要命令:insert(插入数据),undate(更新数据),delete(删除数据)
- 数据控制语言(DCL):控制数据库的访问权限和事务管理。主要命令:grant(授予权限),revoke(撤销权限)
- 事务控制语言(TCL):管理数据库中的事务。主要命令:commit(提交事务),rollback(回滚事务)
- 游标控制语言(CCL):管理和操作数据库中的游标。主要命令:declare(声明游标),fetch(获取游标中的数据)
数据库的分类:
关系型数据库:采用关系模型来组织的数据库,使用表来组织数据,每个表都有固定的模式,常见的有:Oracle,MySQL,SQL Sever
非关系型数据库:不使用传统的关系模型的数据库系统,并不基于SQL,支持多种数据模型,易于水平扩展,拥有更高的性能。常见的有redis,hbase
区别:
关系型数据库 | 非关系型数据库 | |
使用SQL | 是 | 一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性较高 |
使用场景 | 业务方面的联机事务处理(OLTP)系统 | 用于数据的缓存,或基于统计分析的OLAP系统 |
注:OLAP指的是联机分析处理
MySQL数据库
MySQL是一种流行的开源关系型数据库管理系统,用于有效的存储,管理和存储数据,因为开源,高效,灵活的特点,成为广泛应用的数据库管理系统。
基本操作:
库操作:
1.查看库操作:show databases;
注意:databases应为复数,否则就会报错。
2.创建数据库:从简单入手
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序
规则;
CREATE DATABASE test;
上面的代码表示创建了一个名为test的数据库,其中CREATE 是数据库定义语言,DATABASE表示对数据库进行的操作,test表示创建的数据库的名称。可以利用show databases;用来查看,结果如下:
如果我们再次执行create database test; 会出现以下报错,表示该数据库已存在。
为了避免,我们可以对以上语句加以约束,变为
CREATE DATABASE IF NOT EXISTS test;
表示如果不存在此数据库,便创建,这样子就不会报错。相当于多了一层校验,如果数据库存在,只会发出警告
还有一些是数据库创建时的可选选项,用于指定数据库的特性:
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CHARCTER SET 表示指定数据库字符的编码格式,通常采用utf8mb4'
COLLATE 用于指定数据库的字符排序规则,通常采用utf8mb4_0900_ai_ci;
ENCRTPTION 用于指定数据库是否加密
CREATE DATABASE IF NOT EXISTS test1 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
如果使用第一种最简单的方式进行创建数据库,那么会使用当前默认的字符集和排序规则。可以利用以下代码查看:
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
我的得到的结果如下:
注意:一般不使用关键词作为库名,如果利用关键词作为库名,要把关键词用''(单引号引起来)
3.选择数据库:use test;
use + 想要选中的数据库,只有选中了数据库,才能够对数据库中的表进行操作,其中select database();用于查看当前选中的数据库,如果没有选中数据库报错
4.删除数据库:慎重!!!
drop database + 要删除的库名,如果不存在就加以删除,会报错,加上if exists用于校验最终报一个警告。
常用的数据类型
字符串类型:
数据类型 | 大小 | 说明 | 对应Java类型 |
CHAR | 0~255字节 | 固定长度空间 | char |
VARCHAR(size) | 0~65535字节 | 可变长度字符串 | String |
TEXT | 0~65535字节 | 长文本数据 | String |
MEDIUMTEXT | 0~16777215字节 | 中等长度文本数据 | String |
BLOB | 0~65535字节 | 二进制形式的长文本数据 | byte[] |
CHAR类型占用固定长度的空间,当存储较短的字符串会浪费存储空间,但是好处是提高了检索效率,适用于存储长度相近或者固定长度的数据。
VARCHAR是使用最多的字符串类型,按实际存储内容占用空间,适合存储长度变化较大的字符串,从而可以节省存储空间,但是检索效率低于CHAR,适合存储长度不定的文本数据
数值类型:
数据类型 | 大小 | 说明 | 对应Java类型 |
BIT[(M)] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGint | 8字节 | Long | |
FLOAT(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数,会发生经度丢失 | Float |
DOUBLE(M,D) | 8字节 | Double | |
DECIMAL(M,D) | M/D最大值+2 | 双经度,M指定长度,D表示小数点位数,精确数值 | BigDecimal |
NUMERIC(M,D) | M/D最大值+2 | 和DECIMAL一样 | BigDecimal |
对于整形类型的范围:
1.有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就是-2^31~2^31-1
2.无符号范围:0~2(类型字节数*8-1)-1,如int是2^32-1
3.日期时间类型
类型 | 说明 | 取值范围 |
DATE | YYYY-MM-dd | 1000-01-01~9999-12-31 |
TIME | HH:mm:ss | -838:59:59~838:59:59 |
DATETIME | YY-MM-dd HH:mm:ss | 1001-01-01 00:00:00.0000000~9999-12-31 23:59:59.99999 |
YEAR | YYYY格式年份 | 1901~2155 |
数据表的操作
1.查看表
先选择使用哪个库,然后输入show tables;来查看当前库中有哪些表,如果库为空,如上图所示
2.创建表
CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
......
字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];
create table stu(
id int,
name varchar(20) comment '姓名',
sex varchar(1)
);
其中id,name,sex为自定义的段名,int, varchar为该字段的数据类型,(n)中的数字表示最大长度,comment关键字增加字段的说明,注意,说明必须被单引号引起来,无论中英文,最后一个字段没有逗号
创建结构相同的表
这里只是复制了表的结构,但是没有复制表的数据
create table if not exists stu1 like stu;
3.查看表结构
desc+要显示的表;
这些查看的是表结构,并不是数据,后四个以后发文介绍
- Field:属性名
- Type:属性类型
- Null:是否允许为空
- Key:索引类型(键值的类型)
- Default:默认值
- Extra:拓展功能
4.修改数据表
4.1修改表名
ALTER TABLE 表名 RENAME AS 新表名;
4.2增加字段
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
4.3修改字段
-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];
4.4删除字段
ALTER TABLE 表名 DROP 字段名;
5.删除表
drop table stu1;
删除stu1表后的库中存在的表。
可以连续删除,只需要加上,
原来只有两张表,删除之后为空
注意:
- 一条语句可以删除多个表,但是一条语句只能删除一个数据库
- 删除操作谨慎进行,无论是删除库还是删除表
原文地址:https://blog.csdn.net/2301_79985750/article/details/142785947
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!