文章的操作都是基于小皮php study的MySQL5.7.26进行演示
数据库是能长期存储在计算机内,有组织的,可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储,具有较小的冗余性,较高的独立性和易扩展性,并为多用户共享。
我们可以把数据库的概念理解为excel:
-
数据库(database)---excel工作簿,最高层次的组织单位,可以包含一个或多个工作表
-
数据表(table)---excel工作表
-
字段(field)是数据库逻辑结构的基本单位---excel中的单元格
-
数据库中只有列的概念,所以字段(标明数据类型)是在创建表时就一并创建来定义表的结构,后续的增删改查对应的是字段的具体内容。没有空表这一说,创建数据表时至少定义一个字段
-
-
新建数据库---增
库---create database [name];
删除数据库/表---删
---drop database [name]; drop table [name];
显示数据库名称---查
--show database 这是以数据库服务器的视角去罗列服务器中所有的数据库
新建表---增
create table 表名(
字段名称 字段数据类型(字符型后面要跟(number)来表明长度) 不同字段间用,分割
)
CREATE TABLE stuent(
id int primary key,name char(10),sex char(10),address char(10))default charset=utf8; #默认编码UTF-8--可忽略 使用自动填充出来就是大写
特殊的数据类型enum: 用于限制字段的值只能是预定义的一个选项
gender ENUM('男', '女') DEFAULT '男'
向表内填入数据---增
insert into 表名(按照字段的顺序与数据类型以逗号为分割进行增入)
若只想插入指定字段内容--insert into 表名(columns,columns)(按照字段的顺序与数据类型以逗号为分割进行增入)
INSERT INTO stuent VALUES(1,'二狗','boy','天津');INSERT INTO stuent VALUES(2,'香秀','girl','象牙山');
insert #插入
into #到·····地方
student1 # 我们之前创建的表名
values() #我们创建的字段里面填入值
---我们把id设为主键,就意味着对于每此增加字段时id都是不为空且唯一
修改表内数据---改
update 表名 set 字段= ---一改都该,字段内容统一,主键不允许被这样操作。大多数情况搭配where进行针对字段的修改
update student set address='中国'
update #更新
student1 #表
set #设置
条件修改表内数据---改
update 表名 set 字段=new内容 where 字段= ps:多个条件用and/or连接
UPDATE stuent set address='象牙山'where id=2 '
删除表内数据---删
delete from 表名 where 字段=
---若没有where则是删除表内所有的字段内容,仅留下字段的数据结构
查询表内字段内容--查--一查查一列
select [字段] from [表]
当然可以跨库查询---SELECT [字段] FROM [库名.表名]
是用来修改现有表的结构和属性的。它用于添加、删除或修改表中的列,添加或删除约束,以及其他类似的结构性调整。
常见的 操作示例:
- 增加新列:
- 删除列:
- 修改列类型:
- 添加约束:
- 删除约束:
单条件查询where
多条件查询 AND/OR
区间查询 BETWEEN 100 AND 200 == 字段 >=100 and 字段<=200
关键字查询 IN(5,3,1)--查找关键字为5 or 3 or 1
模糊查询--LIKE(a%)查询以a为开头的 、%a以a为结尾、 %a%有a就行、-单字通配符用于查询第n个字母为a的查询 --对特定的字段进行匹配--SELECT * FROM users WHERE name LIKE '%a%';
约束(constraint)是用于约束或限制表中的数据,以确保数据的完整性、一致性和准确性的一组规则或条件。通过定义约束,可以防止无效数据的录入,确保数据库中的数据符合预期
-
PRIMARY KEY:
- 确保每行都有唯一的标识符,不允许 值。
- 示例:
- CREATE TABLE first ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT );
- 自增 必须与主键类型搭配
- 这样默认插入时就可以忽略该字段
-
FOREIGN KEY:
- 确保一个表中的值在另一个表中存在,用于维护表之间的关系。
- 示例:
-
UNIQUE:
- 确保列中的所有值都是唯一的,不允许重复。
- 示例:
-
NOT NULL:
- 确保列中的值不能为空。
- 示例:
-
CHECK:
- 强制列中的值满足指定的条件。
- 示例:
-
DEFAULT:
- 为列设置默认值,当插入数据时如果未显式提供值,则使用默认值。
- 示例:
多表联合查询,前提是多表查询的字段以及数据类型完全相同。但是后续也可以跟相同数量函数或内容,危险!
是 MySQL 中的一个特殊数据库,它包含了关于所有其他数据库、表、列、数据类型、索引、约束、视图、存储过程和触发器等的元数据信息。这些信息对于数据库管理员和开发者来说是非常有用的,因为它们可以用来查询和管理数据库结构。
数据库中的表是只读的,你不能在其中插入、更新或删除数据。这些表是由 MySQL 服务器在运行时动态生成的,以反映数据库系统的当前状态。
最重要的三个表-----
这个对于后续SQL注入时枚举数据库架构很有帮助---找到数据库找数据表然后再找字段最后对应字段内容(重要的密码信息等)
SCHEMATA
存储用户创建的所有数据库的库名。其中记录数据库库名的字段为SCHEMA_NAME
TABLES
存储用户创建的所有数据库的库名和表名。其中记录数据库库名和表名的字段分别为:TABLE_SCHEMA和TABLE_NAME
COLUMNS
存储用户创建的所有数据库的库名、表名、字段名。其中记录数据库库名、表名、字段名的字段分别为:table_schema、table_name、column_name
information_schema:表示所有信息,包括库、表、列
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_schema:数据库的名称
table_name:表名
column_name:列名
group_concat():显示所有查询到的数据
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/39545.html