MySQL2:代码小节和代码测试

一.整体框架图

1.DDL

在这里插入图片描述在这里插入图片描述

2.DML(略简单)

3.其他结构

在这里插入图片描述

3.代码注意

①alter和update对比

  • alter需要指明 database,table,其可以更新数据库数据表
  • update不需要指明,因为其只能更新数据表

②视图能否更新字段?

二.DDL和DML

SHOW DATABASES;

#增加数据库
CREATE DATABASE IF NOT EXISTS test CHARACTER SET gbk
#删除数据库
DROP DATABASE IF EXISTS test
#更改数据库
ALTER DATABASE test CHARACTER SET utf8
#查看数据库
SHOW DATABASES
SHOW CREATE DATABASE test
SHOW TABLES FROM test


#创建表
CREATE TABLE employ(id INT,NAME VARCHAR(15))#写上个别名,否则会增加其他列
AS SELECT employee_id AS id ,last_name AS NAME FROM atguigudb.`employees` 
#删除表
DROP TABLE employ#删除表
TRUNCATE TABLE employ#清空表
#更改表
RENAME TABLE employees TO employ
#查看表
SHOW TABLES;
SHOW CREATE TABLE employ;
SELECT * FROM employ


#增加字段
ALTER TABLE employ
ADD salary DECIMAL(10,2)
#删除字段
ALTER TABLE employ
DROP COLUMN salary#注意,删除字段增加column
#更改字段
#更改字段名称
ALTER TABLE employ
CHANGE id1 id INT
#更改字段的其他(类型,位置)
ALTER TABLE employ
MODIFY id VARCHAR(15) AFTER `name`
#查看字段
DESC employ

#DML之增删改
INSERT INTO employ
VALUES('lkj',1000)
DELETE FROM employ
WHERE NAME='lkj'
UPDATE employ
SET id=101
WHERE NAME='king'
#约束的索引 主键 外键 unique有索引,not null和default没有索引
#主键的索引是primary一定是,其他的索引都可以自己定义名称,不定义则默认为是列名
#删除约束需要删除索引

CREATE TABLE my_employ(
id INT PRIMARY KEY AUTO_INCREMENT,#列级约束
last_name VARCHAR(15) NOT NULL,
salary INT DEFAULT 2000 UNIQUE,
department_id INT DEFAULT 0,
CONSTRAINT my_employ_rs_did FOREIGN KEY(department_id) REFERENCES departments(department_id))
#表级约束,注意被设置为外键的在另一个表中需要时主键


#修改约束,所有都可以改
ALTER TABLE my_employ
MODIFY last_name VARCHAR(15) NOT NULL

#删除unique约束的索引即删除索引约束
ALTER TABLE my_employ
DROP INDEX salary

DROP TABLE my_employ
DESC my_employ

三.其他数据库结构

1.视图

#创建视图
CREATE VIEW vie_em
AS SELECT employee_id,salary FROM employees
#删除视图
DROP VIEW vie_em
#更改视图(数据段,具体数据)(不能执行对字段的操作,只能直接对行数据进行操作)
ALTER VIEW vie_em
MODIFY employee_id DOUBLE
ALTER TABLE
CHANGE  employee_id id INT

UPDATE vie_em#不能updata加table或者view
SET salary=salary+100
#查看视图
DESC vie_em

2.存储过程和函数

#存储过程编写

DELIMITER $
CREATE PROCEDURE a()
BEGIN
	SELECT * FROM employees;
END $

CALL a()

SELECT * FROM employees

3.触发器

DELIMITER $
CREATE TRIGGER d
BEFORE INSERT ON my_employ
FOR EACH ROW
BEGIN
	UPDATE employees
	SET employee_id=0
	WHERE employee_id=100;
END $

INSERT INTO my_employ
VALUES(1,'a',1,1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值