Lehman-Blog - DDL
type: channel
link: https://blog.lehman.top/tag/DDL/
items: PostgreSQL-DDL/DML/DCL/DQL
items: MYSQL-DDL/DML/DCL/DQL

PostgreSQL-DDL/DML/DCL/DQL
type: item
date: 2024-07-11T17:23:12+08:00
description: [scode type="red"]以下示例基于PostgreSQL[/scode][collapse status="false" title="常用DDL"]DDLDDL：[Data Mefinition Language] 数据定义语言关键点： CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE/DROP INDEX 等主要是用在定义或改变表（TABLE）的结构，数据类型，表之间的链接和约束等初始化工作上，他们大多在建立表时使用DDL操作是隐性提交的！不能rollback [scode type="blue"]创建表[/scode]CREATE TABLE employees ( employee_id SERIAL PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), birth_date DATE, hire_date DATE ); [scode type="blue"]修改表[/scode]#添加列 ALTER TABLE employees ADD COLUMN email VARCHAR(100); #修改列类型 ALTER TABLE employees ALTER COLUMN birth_date TYPE TIMESTAMP; #删除列 ALTER TABLE employees DROP COLUMN email; [scode type="blue"]删除表[/scode]DROP TABLE employees; [scode type="blue"]创建视图[/scode]CREATE VIEW employee_names AS SELECT first_name, last_name FROM employees; [scode type="blue"]删除视图[/scode]DROP VIEW employee_names; [/collapse][collapse status="false" title="常用DML"]DMLDML：[Data Manipulation Language] 数据操纵语言关键点： INSERT、UPDATE、DELETE主要是对表数据进行操作，如对表数据进行增、删、改[scode type="blue"]插入数据[/scode]#插入单行数据 INSERT INTO employees (first_name, last_name, birth_date, hire_date) VALUES ('John', 'Doe', '1990-01-01', '2020-01-01'); #插入多行数据 INSERT INTO employees (first_name, last_name, birth_date, hire_date) VALUES ('Jane', 'Doe', '1992-02-02', '2021-02-02'), ('Jim', 'Beam', '1985-03-03', '2019-03-03'); [scode type="blue"]更新数据[/scode]#更新单个字段 UPDATE employees SET hire_date = '2021-01-01' WHERE employee_id = 1; #更新多个字段 UPDATE employees SET first_name = 'Jonathan', last_name = 'Smith' WHERE employee_id = 2; [scode type="blue"]删除数据[/scode]#删除符合条件的行 DELETE FROM employees WHERE employee_id = 3; #删除所有数据（但保留表结构） DELETE FROM employees; [/collapse][collapse status="false" title="常用DCL"]DCLDCL： [Data Control Language] 数据控制语言关键点： GRANT、REVOKE主要主要用于控制数据库的访问权限和安全性[scode type="blue"]授予权限[/scode]#授予用户对表的全部权限 GRANT ALL PRIVILEGES ON TABLE employees TO user_name; #授予用户对表的特定权限 GRANT SELECT, INSERT, UPDATE ON TABLE employees TO user_name; #授予角色权限 GRANT SELECT ON TABLE employees TO role_nam…

MYSQL-DDL/DML/DCL/DQL
type: item
date: 2020-11-21T15:20:00+08:00
description: [scode type="red"]以下示例基于MYSQL[/scode][collapse status="false" title="常用DDL"]DDLDDL：[Data Mefinition Language] 数据定义语言关键点： CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE/DROP INDEX 等主要是用在定义或改变表（TABLE）的结构，数据类型，表之间的链接和约束等初始化工作上，他们大多在建立表时使用DDL操作是隐性提交的！不能rollback [scode type="blue"]创建数据库[/scode] # 创建 user 数据库 CREATE DATABASE user; [scode type="blue"]删除数据库[/scode] # 删除user数据库 DROP DATABASE user; [scode type="blue"] 创建表[/scode] # 语法： CREATE TABLE [IF NOT EXISTS] 表名( 字段名 字段类型 【字段约束】, 字段名 字段类型 【字段约束】, 字段名 字段类型 【字段约束】 ); # 案例：创建一张表【没有添加约束】 CREATE TABLE IF NOT EXISTS stuinfo ( stuid INT, stuname VARCHAR (20), stugender CHAR(1), email VARCHAR (20), borndate DATETIME ) ; -- 案例： DROP TABLE IF EXISTS stuinfo; CREATE TABLE IF NOT EXISTS stuinfo( stuid INT PRIMARY KEY, --添加了 主键约束 stuname VARCHAR(20) UNIQUE NOT NULL, -- 添加了 唯一约束+非空 stugender CHAR(1) DEFAULT '男', -- 添加了默认约束 email VARCHAR(20) NOT NULL, age INT CHECK( age BETWEEN 0 AND 100), -- 添加了检查约束，mysql不支持 majorid INT, CONSTRAINT fk_stuinfo_major FOREIGN KEY (majorid) REFERENCES major(id) -- 添加了外键约束-- majorid列 与 major表内的id列 ); [scode type="blue"]修改表[/scode] # 语法： ALTER TABLE 表名 ADD|CHANGE|MODIFY|DROP COLUMN 字段名 字段类型 【字段约束】 # 1，修改表名 ALTER TABLE stuinfo RENAME TO students ; # 2.添加字段 ALTER TABLE students ADD COLUMN borndate TIMESTAMP NOT NULL ; # 3.修改字段名 ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL ; # 4.修改字段类型 ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP ; # 5.删除字段 ALTER TABLE students DROP COLUMN birthday ; [scode type="blue"]删除表[/scode] DROP TABLE IF EXISTS students ; [scode type="blue"] 复制表[/scode] # 复制表 CREATE TABLE newTable LIKE students ; # 复制表的结构+数据 CREATE TABLE newTable SELECT * FROM girls.`admin` #案例：复制employees表中的last_name，department_id，salary字段到新表 xx 表，但不复制数据 CREATE TABLE xx SELECT last_name, department_id, salary FROM myemployees.`employees` WHERE 1=2; # 恒不成立 [/collapse][collapse status="false" title="常用DML"]DMLDML：[Data Manipulation Language] 数据操纵语言关键点： INSERT、UPDATE、DELETE主要是对表数据进行操作，如对表数据进行增、删…