数据库是一个按照数据结构来构造、存储和管理数据的堆栈。以下是对数据库概念的详细解释:
定义与基本概念:
数据库是长期存储在计算机内的、有构造的、可共享的、统一管理的大量数据的聚集。
数据库不仅仅是数据的简单堆积,而是遵循肯定的规则和模式进行构造和管理的。
数据库中的数据可以包罗文本、数字、图像、音频等各种范例的信息。
数据库的作用:
数据库作为计算机系统中最紧张的组件之一,被广泛用于各种应用程序和业务领域。
数据库可以大概高效地管理和处置处罚大量数据,提供数据的存储、查询、更新和删除等功能。
名称 | 全称 | 简称 | 数据库 | 存储数据的堆栈,数据是有构造地进行存储 | DB | 数据库管理系统 | 利用和管理数据库的大型软件 | DBMS | SQL | 操纵关系型数据库的编程语言,定义了一套操纵挂机呢习性数据库统一尺度 | SQL | 数据模型:
关系型数据库(RDBMS)
概念:创建在关系模型上,由多张相互毗连的二维表组成的数据库。
特点:
1、使用表存储数据,格式统一便于维护
2、使用SQL语言操纵,便于统一,使用方便
1、SQL通用语法
1、SQL语句可以单行或多行誊写,以分号结尾。
2、SQL可以使用空格/缩进来加强语句的可读性。
3、MySQL数据库和SQL语句不区分巨细写,关键字建议使用大写
4、注释:
· 单行注释:--注释内容 或 # 注释内容(MySQL独有)
· 多行注释:/*注释内容*/
2、SQL分类
分类 | 全称 | 说明 | DDL | Date Definition Language | 数据定义语句,用来定义数据库对象(数据库、表、字段) | DML | Date Manipulation Language | 数据操纵语言,用于对数据库表中的数据进行增编削 | DQL | Date Query Language | 数据查询语言,用于查询数据库中表的记录 | DCL | Date Control Language | 数据控制语言,用于创建数据库用户、控制数据库的访问权限 | 3、DDL
· DDL - 数据库操纵
查询:
查询所有数据库:
show databases;
查询当前数据库
select database();
创建
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
删除
drop database [if exists] 数据库名;
使用
use 数据库名;
我们可以看到一共有四个数据库,这四个数据库是安装MySQL成功后自带的数据库
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 4 rows in set (0.00 sec)
- mysql> create database if not exists test;/*字符集内容是可以省略的因为MySQL有一套自己的字符集,排序顺序也可以省略*/
- Query OK, 1 row affected (0.00 sec)
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sys |
- | test |
- +--------------------+
- 5 rows in set (0.00 sec)
- mysql> drop database if exists test;
- Query OK, 0 rows affected (0.01 sec)
- mysql> /*假如我们想要使用某一个数据库所需要的指令为*/
- mysql> use mysql
- Database changed
- mysql> /*假如数据库创建太多,我们想要知道我们目前正在使用的数据库所需要的指令*/
- mysql> select database();
- +------------+
- | database() |
- +------------+
- | mysql |
- +------------+
- 1 row in set (0.00 sec)
复制代码 · DDL - 表操纵 - 查询
查询当前数据库所有表
show tables;
- mysql> create database if not exists test;
- Query OK, 1 row affected (0.01 sec)
- mysql> use test;
- Database changed
- mysql> show tables;
- Empty set (0.00 sec)/*刚创建出的数据库没有表结构*/
- mysql> use mysql;
- Database changed
- mysql> show tables;
- +------------------------------------------------------+
- | Tables_in_mysql |
- +------------------------------------------------------+
- | columns_priv |
- | component |
- | db |
- | default_roles |
- | engine_cost |
- | func |
- | general_log |
- | global_grants |
- | gtid_executed |
- | help_category |
- | help_keyword |
- | help_relation |
- | help_topic |
- | innodb_index_stats |
- | innodb_table_stats |
- | ndb_binlog_index |
- | password_history |
- | plugin |
- | procs_priv |
- | proxies_priv |
- | replication_asynchronous_connection_failover |
- | replication_asynchronous_connection_failover_managed |
- | replication_group_configuration_version |
- | replication_group_member_actions |
- | role_edges |
- | server_cost |
- | servers |
- | slave_master_info |
- | slave_relay_log_info |
- | slave_worker_info |
- | slow_log |
- | tables_priv |
- | time_zone |
- | time_zone_leap_second |
- | time_zone_name |
- | time_zone_transition |
- | time_zone_transition_type |
- | user |
- +------------------------------------------------------+
- 38 rows in set (0.00 sec)
复制代码 查询表结构
desc 表名
- mysql> desc tr_user
- -> ;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int | YES | | NULL | |
- | name | varchar(50) | YES | | NULL | |
- | age | int | YES | | NULL | |
- | sex | varchar(1) | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 4 rows in set (0.01 sec)
复制代码 查询指定表的建表语句
show create table 表名;
- mysql> show create table tr_user;
- +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | Table | Create Table
- |
- +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | tr_user | CREATE TABLE `tr_user` (
- `id` int DEFAULT NULL COMMENT '编号',
- `name` varchar(50) DEFAULT NULL COMMENT '姓名',
- `age` int DEFAULT NULL COMMENT '年龄',
- `sex` varchar(1) DEFAULT NULL COMMENT '性别'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表' |
- +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- 1 row in set (0.01 sec)
复制代码 · DDL - 表操纵 - 创建
create table 表名(
字段1 字段1范例[comment 字段1注释],
字段2 字段2范例[comment 字段2注释],
......
字段n 字段n范例[comment 字段n注释]
)[comment 表注释];
- mysql> use test;
- Database changed
- mysql> create table tr_user(
- -> id int comment '编号',
- -> name varchar(50) comment '姓名',
- -> age int comment '年龄',
- -> sex varchar(1) comment '性别'
- -> )comment '用户表';
- Query OK, 0 rows affected (0.03 sec)
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | tr_user |
- +----------------+
- 1 row in set (0.00 sec)
复制代码 · DDL - 表操纵 - 数据范例
分类 | 范例 | 巨细 | 有符号范围 | 无符号范围 | 描述 | 数值范例 | TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 | SMALLINT | 3byte | (-32768,32767) | (0,65535) | 大整数值 | MEDIUMINT | 3byte | (-8388608,8388607) | (0,16777215) | 大整数值 | INT或INTEGER | 4byte | (-2147483648,-2147483647) | (0,4294967259) | 大整数值 | BIGINT | 8byte | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 | FLOAT | 4byte | (-3.402823466 E+308,402823466351 E+308) | 0和(1.175494351 E-38,402823466 E+38) | 单精度浮点数 | DOUBLE | 8byte | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0和(2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数 | DECIMAL | | 依靠于M(精度)和D(标度)的值 | 依靠于M(精度)和D(标度)的值 | 小数值 | 分类 | 范例 | 巨细 | 描述 | 字符串范例 | CHAR | 0-255 byte | 定长字符串 | VARCHAR | 0-65535 byte | 变长字符串 | TINYBLOB | 0-255 byte | 不超过255个字符的二进制数据 | TINYTEXT | 0-255 byte | 短文本字符串 | BLOB | 0-65535 byte | 二进制形式的长文本数据 | TEXT | 0-65535 byte | 长文本数据 | MEDIUMBLOB | 0-16777215 byte | 二进制形式的中等长度文本数据 | MEDIUMTEXT | 0-16777215 byte | 中等长度文本数据 | LONGBLOB | 0-4294967259 byte | 二进制形式的极大文本形式 | LONGTEXT | 0-4294967259 byte | 极大文本数据 | 注意:char(10)代表当前字符串可以大概存储的最大长度即10个字符,一旦超出就会报错与varchar(10)的区别是char(10)是不管我们存储多大字节的数据,都占用10个字节(其他位置用空格代替);而varchar(10)会根据数据的巨细确定,但最大不能超过10个字节,大大节流了空间占用。 但char的性能更好,varchar的性能较差这是因为varchar必要内容来计算所占空间的巨细。
分类 | 范例 | 巨细 | 范围 | 格式 | 描述 | 日期范例 | DATE | 3 | 1000- 01- 01至9999- 12- 31 | YYYY-MM-DD | 日期值 | TIME | 3 | -838:59:59至839:59:59 | HH:MM:SS | 时间值或持续时间 | YEAR | 1 | 1901至2155 | YYYY | 年份值 | DATATIME | 8 | 1000- 01- 01 00:00:00至9999- 12- 31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | TIMESTAMP | 4 | 1970- 01- 01 00:00:01至2038- 01- 19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值、时间戳 | · DDL - 表操纵 - 修改
添加字段
ALTER TABLE 表名 ADD 字段名 范例(长度) [COMMENT 注释] [束缚];
比如:为tr_user表添加一个新的字段’昵称‘为nickname,范例为varchar(20)
- mysql> alter table tr_user add nickname varchar(20) comment'昵称';
- Query OK, 0 rows affected (0.03 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> desc tr_user;
- +----------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +----------+-------------+------+-----+---------+-------+
- | id | int | YES | | NULL | |
- | name | varchar(50) | YES | | NULL | |
- | age | int | YES | | NULL | |
- | sex | varchar(1) | YES | | NULL | |
- | nickname | varchar(20) | YES | | NULL | |
- +----------+-------------+------+-----+---------+-------+
- 5 rows in set (0.00 sec)
复制代码 修改数据范例
ALTER TABLE 表名 MODIFY 字段名 新数据范例(长度);
修改字段名和字段范例
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 范例(长度) [comment 注释] [束缚];
比如:将tr_user表中的nickname修改为username,范例为varchar(30)
- alter table tr_user change nickname username varchar(30) comment'昵称';
- Query OK, 0 rows affected (0.01 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> desc tr_user;
- +----------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +----------+-------------+------+-----+---------+-------+
- | id | int | YES | | NULL | |
- | name | varchar(50) | YES | | NULL | |
- | age | int | YES | | NULL | |
- | sex | varchar(1) | YES | | NULL | |
- | username | varchar(30) | YES | | NULL | |
- +----------+-------------+------+-----+---------+-------+
- 5 rows in set (0.00 sec)
复制代码 删除字段
ALTER TABLE 表名 DROP 字段名;
比如:将tr_user表的username删除
- alter table tr_user drop username;
- Query OK, 0 rows affected (0.01 sec)
- Records: 0 Duplicates: 0 Warnings: 0
复制代码 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
比如:将表名tr_user修改为新表名user_tr
- alter table tr_user rename to user_tr;
- Query OK, 0 rows affected (0.01 sec)
复制代码 · DDL - 表操纵 - 删除
删除表
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | tr_user |
- | user |
- +----------------+
- 2 rows in set (0.00 sec)
复制代码 比如:我们想要删除user这个表名
- drop table if exists user;
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | tr_user |
- +----------------+
- 1 row in set (0.00 sec)
复制代码- truncate table tr_user;
- Query OK, 0 rows affected (0.02 sec)
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | tr_user |
- +----------------+
- 1 row in set (0.00 sec)
- /*truncate的这种形式删除指定表,表名还在,但表的内容已经不存在了,仅仅留下了空表*/
复制代码 4、MySQL图形化界面(DataGrip)
下载安装:
DataGrip下载安装及使用教程(详细版)-CSDN博客
激活:DataGtip如何跳过试用设置永久使用?(Windows2021-2023版本通用)_datagrip无穷试用-CSDN博客
5、DML
DML全称为Data Manipulation Language(数据操纵语言),用来对数据库中表的数据记录进行增编削操纵。
· DML - 添加数据
1、给指定字段添加数据
INSERT INTO 表名 (字段1,字段2,...) VALUES(值1,值2,...);
2、给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
3、批量添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
注意:
插入数据时,指定字段数据必要与值的顺序是一一对应的;
字符串和日期型数据应该包含在引号中;
插入数据的巨细,应该在字段的规定范围内
- /*为指定字段添加数据*/
- insert into tr_user(id, name, age, sex) values(1,'李三',68,'男');
- #给全部字段添加数据
- insert into tr_user values(2,'狗蛋',20,'男');
- #批量添加数据
- insert into tr_user value(3,'二狗',18,'男'),(4,'林黛玉',25,'女');
- select * from tr_user;
复制代码
· DML - 修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE 条件];
注意:修改语句的条件可以有,也可以没有,假如没有条件,则会修改整张表的所有数据。
- update tr_user set name='张无忌' where id=1;
- #修改id为1的数据,将name修改为小昭,sex改为女
- update tr_user set name='小昭',sex='女' where id=1;
- #修改表中的sex,全部改为男
- update tr_user set sex='男' where id;
- select * from tr_user;
复制代码 · DML - 删除数据
DELETE FROM 表名 [WHERE 条件]
注意:
DELETE语句的条件可以有,也可以没有,假如没有条件,则会删除整张表的所有数据;
DELETE语句不能删除某一个字段的值(可以使用UPDATE) 。
- #删除id=1的数据
- delete from tr_user where id=1;
- #删除所有数据
- delete from tr_user where id;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |