数据库学习之数据库常用操作(一)
数据库常用操作
数据库操作(DDL)
1 2 | 1. 创建数据库(在磁盘上创建一个对应的文件夹) create database [ if not exists] db_name [character set xxx] |
1 2 3 | 2. 查看数据库 show databases;查看所有数据库 show create database db_name; 查看数据库的创建方式 |
1 2 | 3. 修改数据库 alter database db_name [character set xxx] |
1 2 | 4. 删除数据库 drop database [ if exists] db_name; |
1 2 3 | 5. 使用数据库 切换数据库 use db_name; - - 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换 查看当前使用的数据库 select database(); |
数据库数据类型
数值类型
日期和时间类型
字符串类型
数据表操作
1.创建表
(类似于一个excel表)
1 | id 姓名 性别 生日 入职时间 职务部门 薪水 |
创建表语法格式
1 2 3 4 5 6 | create table tab_name( field1 type [完整性约束条件], field2 type , ... fieldn type )[character set xxx]; |
创建一个员工表employee
1 2 3 4 5 6 7 8 9 | create table employee( id int primary key auto_increment , name varchar( 20 ), gender bit default 1 , - - gender char( 1 ) default 1 - - - - - 或者 TINYINT( 1 ) birthday date, entry_date date, job varchar( 20 ), salary double( 4 , 2 ) unsigned ); |
约束的作用 约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。 约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表。 下面是 SQL 中常用的约束,这些约束虽然已经在关系型数据库管理系统一章中讨论过了,但是仍然值得在这里回顾一遍。 NOT NULL 约束:保证列中数据不能有 NULL 值 DEFAULT 约束:提供该列数据未指定时所采用的默认值 UNIQUE 约束:保证列中的所有数据各不相同 主键约束:唯一标识数据表中的行/记录 外键约束:唯一标识其他表中的一条行/记录 CHECK 约束:此约束保证列中的所有值满足某一条件 索引:用于在数据库中快速创建或检索数据 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。 创建约束 当使用CREATE TABLE语句创建表时,或者在使用ALTER TABLE语句创建表之后,可以指定约束。 语法 CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name, .... ) 删除约束 任何现有约束都可以通过在 ALTER TABLE 命令中指定 DROP CONSTRAINT 选项的方法删除掉。 例如,要去除 EMPLOYEES 表中的主键约束,可以使用下述命令: ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK; 一些数据库实现可能提供了删除特定约束的快捷方法。例如,要在 Oracle 中删除一张表的主键约束,可以使用如下命令: ALTER TABLE EMPLOYEES DROP PRIMARY KEY; 某些数据库实现允许禁用约束。这样与其从数据库中永久删除约束,你可以只是临时禁用掉它,过一段时间后再重新启用。 完整性约束 完整性约束用于保证关系型数据库中数据的精确性和一致性。对于关系型数据库来说,数据完整性由参照完整性(referential integrity,RI)来保证。 有很多种约束可以起到参照完整性的作用,这些约束包括主键约束(Primary Key)、外键约束(Foreign Key)、唯一性约束(Unique Constraint)以及上面提到的其他约束。 批注 约束的种类有很多,通过约束我们可以让进入数据库的数据更加规范,虽然这样做会很麻烦,有时候甚至还可能影响用户体验,但是还是建议尽量让你的数据库设计的更加规范,只有数据规范了,在之后的数据处理过程中或数据查询分析过程中才会更加高效。本节主要介绍语法部分,下一节会着重介绍各个约束的使用方法。
2.查看表信息
1 2 3 4 | desc tab_name 查看表结构 show columns from tab_name 查看表结构 show tables 查看当前数据库中的所有的表 show create table tab_name 查看当前数据库表建表语句 |
3.修改表结构
1 2 3 4 5 6 7 8 | ( 1 )增加列(字段) alter table tab_name add 列名 类型[完整性约束条件][first|after 字段名]; alter table user add addr varchar( 20 ) not null unique first / after username; #添加多个字段 alter table users2 add addr varchar( 20 ), add age int first, add birth varchar( 20 ) after name; |
1 2 3 4 | ( 2 )修改一列类型 alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 modify age tinyint default 20 ; alter table users2 modify age int after id ; |
1 2 3 | ( 3 )修改列名 alter table tab_name change 列名 新列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 change age Age int default 28 first; |
1 2 3 4 5 6 | ( 4 )删除一列 alter table tab_name drop 列名; - - 思考:删除多列呢?删一个填一个呢? alter table users2 add salary float ( 6 , 2 ) unsigned not null after name, drop addr; |
1 2 | ( 5 )修改表名 rename table 表名 to 新表名; |
1 2 | ( 6 )修该表所用的字符集 alter table student character set utf8; |
4.删除表
1 | drop table tab_name; |
5 添加主键,删除主键
1 2 3 4 5 6 7 8 9 10 | alter table tab_name add primary key(字段名称,...) alter table users drop primary key; eg: mysql> create table test5(num int auto_increment); ERROR 1075 ( 42000 ): Incorrect table definition; there can be only one auto column and it must be defined as a key create table test(num int primary key auto_increment); - - 思考,如何删除主键? alter table test modify id int ; - - auto_increment没了,但这样写主键依然存在,所以还要加上下面这句 alter table test drop primary key; - - 仅仅用这句也无法直接删除主键 |
6.索引
1 2 3 4 5 6 7 8 9 10 | alter table tab_name add unique [index|key] [索引名称](字段名称,...) alter table users add unique(name) - - 索引值默认为字段名show create table users; alter table users add unique key user_name(name); - - 索引值为user_name - - 添加联合索引 alter table users add unique index name_age(name,age); #show create table users; - - 删除唯一索引 alter table tab_name drop {index|key} index_name |
分类:
Mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?