数据库-DDL语言-数据定义语言

DDL语言-数据定义语言

对数据库对象进行操作的语言, 涉及到的关键字CREATE,ALTER,DROP

对数据库的操作

新建一个数据库
语法
sql 复制代码
CREATE DATABASE 数据库名 [charset=字符集]
sql 复制代码
新建一个数据库:mydb
CREATE DATABASE mydb;

注:SQL语句不区分大小写,但是好的书写习惯:关键字大写,非关键字小写

指定字符集
sql 复制代码
创建数据库mydb1,指定字符集为UTF-8
CREATE DATABASE mydb1 CHARSET=UTF8;

创建数据库mydb2,指定字符集为GBK
CREATE DATABASE mydb2 CHARSET=GBK;
查看已创建的数据库
语法
sql 复制代码
SHOW DATABASES;
查看创建数据库时的信息
语法
sql 复制代码
SHOW CREATE DATABASE 数据库名
sql 复制代码
SHOW CREATE DATABASE mydb
删除数据库
语法
sql 复制代码
DROP DATABASE 数据库名
SQL 复制代码
DROP DATABASE mydb
切换数据库
语法
sql 复制代码
USE 数据库名

sql 复制代码
USE mydb1;		//切换数据库到mydb1
USE mydb2;      //切换数据库到mydb2

表操作

创建表
语法
sql 复制代码
CREATE TABLE 表名(
	字段名名1 类型[(长度)] [DEFALUT 默认值] [约束],
    字段名名2 类型,
    ...
)[CHARSET=字符集]
SQL 复制代码
准备一个数据库mydb并使用
CREATE DATABASE mydb;			创建数据库mydb
USE mydb;						切换到mydb,那么后面创建表都是创建到这个库中

创建一张表user,保存用户信息(用户名,密码,昵称,年龄)
CREATE TABLE user(
	id INT,					类型是方言,不同数据库不同,mysql中整数为INT,oraclet为Number
    username VARCHAR(32),   字符串类型是VARCHAR,长度为字节量,如果是UTF-8编码32字节可以存
    password VARCHAR(32),   10个汉字。
    nickname VARCHAR(32),
    age INT(3)              对于整数而言,长度表示保存的数字位数。
)
查看表结构
语法
sql 复制代码
DESC 表名
sql 复制代码
查看user表的结构
DESC user
查看表创建时的信息
语法
sql 复制代码
SHOW CREATE TABLE 表名
sql 复制代码
SHOW CREATE TABLE user
查看当前数据库中创建的所有表
语法
sql 复制代码
SHOW TABLES
修改表名
语法
sql 复制代码
RENAME TABLE 原表名 TO 新表名
sql 复制代码
将user表改名为userinfo
RENAME TABLE user TO userinfo
删除表
语法
sql 复制代码
DROP TABLE 表名
sql 复制代码
删除表userinfo
DROP TABLE userinfo
修改表结构

准备一张表

sql 复制代码
CREATE TABLE hero(
	name VARCHAR(32),
	age INT(3)
)
添加一个字段
在表末尾追加新字段

语法

sql 复制代码
ALTER TABLE 表名 ADD 字段名 类型[(长度) 默认值 约束]

sql 复制代码
向表hero的末尾添加一个新字段gender,它的类型是字符串,长度占10个字节
ALTER TABLE hero ADD gender VARCHAR(10)
在表最开始添加字段

语法

sql 复制代码
ALTER TABLE 表名 ADD 字段名 类型 FIRST

sql 复制代码
在hero表最开始添加id字段,类型为int
ALTER TABLE hero ADD id INT FIRST
在表中插入新的字段

语法

sql 复制代码
在表中现有的字段后面添加新字段
ALTER TABLE 表名 ADD 字段名 类型 AFTER 表中现有字段名

sql 复制代码
在name字段后面添加密码pwd字段
ALTER TABLE hero ADD pwd VARCHAR(32) AFTER name
删除字段
语法
sql 复制代码
ALTER TABLE 表名 DROP 字段名
sql 复制代码
将hero中的pwd字段删除
ALTER TABLE hero DROP pwd
修改表字段
语法
sql 复制代码
ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型[长度 默认值 约束]
SQL 复制代码
修改hero表中的年龄字段长度为5
ALTER TABLE hero CHANGE age age INT(5)
sql 复制代码
修改hero表中的年龄字段为字符串,长度为20字节
ALTER TABLE hero CHANGE age age VARCHAR(20)
sql 复制代码
修改hero表中的gender字段,改名为nickname 类型为字符串,长度30字节
ALTER TABLE hero CHANGE gender nickname VARCHAR(30)
修改表结构的注意事项
  • 修改表结构最好是在表中没有数据的情况下进行
  • 当表中含有数据时
    • 尽量不修改表中某字段的类型,否则可能因为现有数据不满足新修改的类型导致修改失败
    • 尽量不缩短字段长度
    • 若为字段新添加约束,该字段现有的数据不能违反该约束
相关推荐
星星点点洲27 分钟前
【缓存与数据库结合最终方案】伪从技术
数据库·缓存
小黑屋的黑小子29 分钟前
【MySQL】MySQL索引与事务
数据库·mysql·oracle
OK_boom3 小时前
Dapper的数据库操作备忘
数据库
艺杯羹4 小时前
JDBC之ORM思想及SQL注入
数据库·sql·jdbc·orm·sql注入
blackA_4 小时前
数据库MySQL学习——day4(更多查询操作与更新数据)
数据库·学习·mysql
极限实验室5 小时前
Easysearch 迁移数据之 Reindex From Remote
数据库
朴拙数科5 小时前
基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估
数据库·langchain·neo4j
小李学不完6 小时前
Oracle--SQL事务操作与管理流程
数据库
qq_441996056 小时前
为何 RAG 向量存储应优先考虑 PostgreSQL + pgvector 而非 MySQL?
数据库·mysql·postgresql
Ivan陈哈哈6 小时前
Redis是单线程的,如何提高多核CPU的利用率?
数据库·redis·缓存