当前位置:网站首页>MySQL基础 数据库创建基础

MySQL基础 数据库创建基础

2022-06-09 08:50:00 Maximize+

创建数据库

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

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

数值类型

在这里插入图片描述

日期类型

在这里插入图片描述

字符串类型

在这里插入图片描述

空间数据类型

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

#创建表
#方式1:
USE atguigudb;
SHOW CREATE DATABASE atguigudb;#默认使用UTF8
SHOW TABLES;
CREATE TABLE IF NOT EXISTS myemp1( #需要用户具备创建表的权限
	id INT,
	emp_name VARCHAR(15),#使用VARCHAR来定义字符串,必须在使用时指明其长度
	hire_date DATE 
);
#查看表结构
DESC myemp1;
SHOW CREATE TABLE myemp1;

SELECT *FROM  myemp1;
#方式2: 基于现有的表
CREATE TABLE myemp2
AS
SELECT employee_id,last_name,salary
FROM employees;
DESC myemp2;
DESC employees;
SELECT*FROM employees



CREATE TABLE myemp3
AS
SELECT e.employee_id,e.last_name,d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id

SELECT * FROM myemp3;

#创建一个表employees_cpoy,实现对employees表的复制,包括表数据
CREATE TABLE employees_cpoy
AS
SELECT *
FROM employees;
SELECT * FROM employees_cpoy

#创建一个表employees_blank,实现对employees表复制,不包括表数据

CREATE TABLE employees_blank
AS
SELECT *
FROM employees;
SELECT * FROM employees
WHERE department_id > 10000;
#where 1=2;#山无棱,天地含,乃敢与君绝。

删除、修改数据库

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

DESC myemp1;
##修改表
#添加一个字段 --->alter table
ALTER TABLE myemp1
ADD salary DOUBLE(10,2);#2位小数点 默认添加到表中的最后一个字段位置

ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST; #

ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name;#插入**之后

#修改一个字段
#一般不会修改字段类型
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25);

ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT 'aaa';


#重命名字段
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);

ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);
#删除一个字段
ALTER TABLE myemp1
DROP COLUMN my_email;
##重命名表
#方式1
RENAME TABLE myemp1
TO myemp11;
SHOW TABLES;

#方式2
ALTER TABLE myemp2
RENAME TO myemp12;

##删除表
DROP TABLE myemp12;
##清空表
#清空表中的所有数据,但表结构保留
SELECT *FROM employees_cpoy;
TRUNCATE TABLE employees_cpoy;	
SELECT *FROM employees_cpoy;
DESC employees_cpoy;

#DCL 中 COMMIT 和 ROLLBACK
#COMMIT:提交数据,一旦执行COMMIT,则数据就被永久保存在数据库中,意味着不可以回滚
#ROLLBACK:回滚数据,一旦执行ROLLBACK,则可以实现数据的回滚,回滚到最后一次COMMIT之后。

#对比 TURNCATE TABLE 和 DELECT FROM
#相同点:都可以实现对表中所有数据的删除,同时是保留表结构的
#不同点:
# TRUNCATE:清空表数据,一旦执行该操作,表数据全部清除,同时数据是不可以回滚的
# DELECT FROM :一旦执行该操作,表数据可以全部清除(不带WHERE)。同时数据可以实现回滚

/* DDL和DML的说明 ①DDL的操作一旦执行就不可回滚。指令SET autocommit = FLASE对DDL操作失效(因为在执行 DDL操作之后一定会执行一次COMMIT,而且此COMMIT不收受指令影响) ②DML的操作默认情况下也是不可回滚。但是如果在执行DML之前,执行了 SET autocommit = false.则执行操作可以实现回滚,默认为true */
#演示 : DELETE FROM
#1
COMMIT;#提交数据
#2
SELECT* FROM myemp3
#3
SET autocommit = FALSE;
#4
DELETE FROM myemp3
#5
SELECT* FROM myemp3
#6
ROLLBACK;
#7
SELECT* FROM myemp3


#演示 : TRUNCATE TABLE
#1
COMMIT;#提交数据
#2
SELECT* FROM myemp3
#3
SET autocommit = FALSE;
#4
TRUNCATE TABLE  myemp3
#5
SELECT* FROM myemp3
#6
ROLLBACK;
#7
SELECT* FROM myemp3


############
#MySQL8.0新特性:DDL的原子化
#执行如下操作
#如果是5.0则会删除book1,报错book2不存在
#如果是8.0则会删除bokk1,后报错book2并回滚book1表
#原子化:要么都执行要么都不执行,不能分隔,整体
CREATE DATABASE mytest;
USE mytest;
CREATE TABLE book1(
book_id INT,
book_name VARCHAR(255)
);
DELETE TABLE book1,book2
SHOW TABLES;

创建管理表练习

练习1

#创建和管理表练习
#创建数据库test01_office,指明字符集为utf-8,并在此数据库下执行下述操作
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';

USE test01_office;

#建立表 dept01
/* 字段 类型 id INT(7) NAME VARCHAR(25) */
CREATE TABLE dept01(
id INT(7),
`name` VARCHAR(25)
);

#将表departments中的数据插入新表dept02中
CREATE TABLE dept02
AS
SELECT * FROM atguigudb.`departments`

#创建emp01表
/* 字段 类型 id INT(7) first_name VARCHAR(25) last_name VARCHAR(25) dept_id INT(7) */
CREATE TABLE emp01(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT(7)
);
DESC emp01;
ALTER TABLE emp01
MODIFY last_name VARCHAR(50);

#根据employees创建emp2表
CREATE TABLE emp02
AS 
SELECT*FROM  atguigudb.`employees`;

SHOW TABLES;
SHOW TABLES FROM test01_office;
#删除emp01表
DROP TABLE emp01;

#将表emp02重命名为emp01
#alter table emp02 rename to emp01; 
RENAME TABLE emp02 TO emp01;

#在表dept02中和emp01添加新列 test_column
ALTER TABLE emp01 ADD test_column VARCHAR(10)
ALTER TABLE dept02 ADD test_column VARCHAR(10)

#直接删除表emp01中的列department_id
ALTER TABLE emp01
DROP COLUMN department_id;
DESC emp01;

练习2

#创建数据库test02_market
CREATE DATABASE IF NOT EXISTS test02_market CHARACTER SET 'utf8';
#打开数据库
USE test02_market;
SHOW CREATE DATABASE test02_market;
#创建数据表 customers
CREATE TABLE IF NOT EXISTS customers(
	c_num INT,
	c_name VARCHAR(50),
	c_contact VARCHAR(50),
	c_city VARCHAR(50),
	c_birth DATE
);
SHOW TABLES;
DESC customers;

#将c_contact字段移动到c_birth字段后面
ALTER TABLE customers
MODIFY c_contact VARCHAR(50) AFTER c_birth;
DESC customers;

#将c_name数据类型改为varchar(70)
ALTER TABLE customers
MODIFY c_name VARCHAR(70);

#将c_contact字段改名为c_phone
ALTER TABLE customers
CHANGE c_contact c_phone VARCHAR(50);

#增加c_gender字段到c_name后面,数据类型为char(1)
ALTER TABLE customers
ADD c_gender CHAR(1) AFTER c_name;

#将表名改为customers_info
RENAME TABLE customers
TO customers_info;
DESC customers_info;

#删除字段c_city
ALTER TABLE customers_info
DROP COLUMN c_city;
DESC customers_info;

练习3

#创建数据库test03_company
CREATE DATABASE IF NOT EXISTS test03_company CHARACTER SET 'utf8';
#进入数据库
USE test03_company;

#创建表office
CREATE TABLE IF NOT EXISTS office(
officeCode INT,
city VARCHAR(30),
address VARCHAR(50),
country VARCHAR(50),
postalCode VARCHAR(25)
);
SHOW TABLES;

#创建表employees
CREATE TABLE IF NOT EXISTS employees(
empNum INT,
lastName VARCHAR(50),
firstName VARCHAR(50),
mobile VARCHAR(25),
`code` INT,
jobTitle VARCHAR(50),
birth DATE,
note VARCHAR(255),
sex VARCHAR(5)
);

DESC employees;

#将表employees的mobile字段修改到code字段后面
ALTER TABLE employees
#如果修改的长度不合理则会报错
MODIFY mobile VARCHAR(25) AFTER `code`;
DESC employees;

#将表employees的birth字段改名为birthday
ALTER TABLE employees
CHANGE birth birthday DATE;

#修改sex字段,数据类型为char(1)
ALTER TABLE employees
MODIFY sex CHAR(1);

#删除字段note
ALTER TABLE employees
DROP COLUMN note;
DESC employees;

#增加字段名favoriate_activity,数据类型为varchar(100)
ALTER TABLE employees
ADD favoriate_activity VARCHAR(100);
DESC employees;

#将表名employees的名称修改为employees_info
RENAME TABLE employees TO employees_info;
DESC employees_info;

原网站

版权声明
本文为[Maximize+]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_55868059/article/details/125164048