MySQL基础 数据库创建基础

编程入门 行业动态 更新时间:2024-10-11 23:23:52

MySQL<a href=https://www.elefans.com/category/jswz/34/1770030.html style=基础 数据库创建基础"/>

MySQL基础 数据库创建基础

创建数据库









数值类型

日期类型

字符串类型

空间数据类型


#创建表
#方式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 employeesCREATE 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_idSELECT * 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;

更多推荐

MySQL基础 数据库创建基础

本文发布于:2024-03-06 09:33:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714988.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础   数据库   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!