给公司建网站需要多少钱,wordpress凌风教程,分答网站,做个网站好还是做淘宝好精选专栏链接 #x1f517; MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏
欢迎订阅#xff0c;点赞#xff0b;关注#xff0c;每日精进1%#xff0c;与百万开发者共攀技术珠峰
更多内容持续更新中#xff01;希望能给大家带来…
精选专栏链接 MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏
欢迎订阅点赞关注每日精进1%与百万开发者共攀技术珠峰
更多内容持续更新中希望能给大家带来帮助~ MySQL数据库与表的创建、修改及数据操作指南1数据库的创建和管理1.1创建数据库1.2使用数据库1.3修改数据库1.4删除指定数据库2表的创建和管理2.1表的创建2.2查看数据表结构2.3修改表2.3.1添加字段2.3.2修改字段2.3.3重命名字段2.3.4删除字段2.4重命名表2.5删除表2.6清空表3数据操作3.1添加数据3.1.1VALUES的方式添加3.1.2将查询结果插入到表中3.3修改数据3.2删除数据3.3对比TRUNCATE TABLE 和 DELETE FROM3.4MySQL8新特性计算列1数据库的创建和管理
1.1创建数据库
创建数据库的三种常用方式如下推荐使用方式三 方式一创建数据库 CREATE DATABASE 数据库名; 方式二创建数据库并指定字符集 CREATE DATABASE 数据库名 CHARACTER SET 字符集;方式三判断数据库是否已经存在不存在则创建数据库推荐 # 如果MySQL中已经存在相关的数据库则忽略创建语句不再创建数据库。
CREATE DATABASE IF NOT EXISTS 数据库名; 注意
DATABASE 不能改名。一些可视化工具可以改名它是建新库把所有表复制到新库再删旧库完成的如果创建表时没有指明使用的字符集则默认使用表所在的数据库的字符集 1.2使用数据库
① 查看当前所有的数据库
SHOW DATABASES; ② 查看当前正在使用的数据库
SELECT DATABASE(); #使用的一个 mysql 中的全局函数③ 查看指定库下所有的表
SHOW TABLES FROM 数据库名;④ 查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
或者
SHOW CREATE DATABASE 数据库名\G⑤ 使用/切换数据库
USE 数据库名;注意要操作表格和数据之前必须先说明是对哪个数据库进行操作。 1.3修改数据库
更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如gbk、utf8等1.4删除指定数据库
方式一
DROP DATABASE 数据库名;方式二推荐
DROP DATABASE IF EXISTS 数据库名;2表的创建和管理
2.1表的创建 创建表方式一从零创建 语法格式
CREATE TABLE [IF NOT EXISTS] 表名(字段1, 数据类型 [约束条件] [默认值],字段2, 数据类型 [约束条件] [默认值],字段3, 数据类型 [约束条件] [默认值],……[表约束条件]
);SQL示例
CREATE TABLE IF NOT EXISTS myemp1( #需要用户具备创建表的权限。
id INT,
emp_name VARCHAR(15), #使用VARCHAR来定义字符串必须在使用VARCHAR时指明其长度。
hire_date DATE
);创建完成后可以使用如下SQL查看表结构
DESC myemp1;运行结果如下 表的创建方式二基于子查询创建新表 语法格式
CREATE TABLE 表名 AS 子查询SQL示例
CREATE TABLE emp1 AS SELECT * FROM employees;CREATE TABLE myemp3
AS
# 说明查询语句中字段的别名可以作为新创建的表的字段的名称
SELECT e.employee_id emp_id,e.last_name lname,d.department_name
FROM employees e JOIN departments d
ON e.department_id d.department_id;注意
查询语句中字段的别名可以作为新创建的表的字段的名称此时的查询语句可以结构比较丰富使用前面章节讲过的各种SELECT具体可以看文章开头的MySQL技术笔记专栏 练习 需求1创建一个表employees_copy实现对employees表的复制包括表数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees;需求2创建一个表employees_blank实现对employees表的复制不包括表数据
CREATE TABLE employees_blank
AS
SELECT *
FROM employees
WHERE 1 2;2.2查看数据表结构
在MySQL中创建好数据表之后可以查看数据表的结构。MySQL支持使用 DESCRIBE 或 DESC 语句查看数据表结构也支持使用SHOW CREATE TABLE语句查看数据表结构。 语法格式如下 SHOW CREATE TABLE 表名\G使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句还可以查看存储引擎和字符编码。 2.3修改表
2.3.1添加字段
先查看myemp1的结构
DESC myemp1;给myemp1表添加字段salary
ALTER TABLE myemp1
# (10,2)表示一共有10位包括小数点2表示小数点后保留2位
ADD salary DOUBLE(10,2); 添加后继续通过DESC myemp1;查看表结构 注意添加字段时默认添加到表中的最后一个字段的位置。如果不想添加到最后一个字段位置可以显式指定。 比如 需求添加phone_number字段到表中的第一个字段位置 ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST;需求添加email字段到表中的emp_name字段后面 ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name;2.3.2修改字段
修改字段使用ALTER关键字 需求修改emp_name字段的最大长度位25原本是15 ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) ;需求修改emp_name字段的最大长度位35并修改默认值为 ’aaa‘ ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT aaa;通过DESC myemp1;查看表结构 设置默认值可以实现当我们向表中插入数据的时候没有指定该字段时会自动使用此默认值。 2.3.3重命名字段
重命名字段使用CHANGE关键字。 需求将salary 字段改为monthly_salary ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);运行后通过DESC myemp1;查看表结构 重命名字段的同时还可以修改字段长度比如
ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);2.3.4删除字段
删除字段使用DROP关键字。 需求删除my_email字段或my_email列 ALTER TABLE myemp1
DROP COLUMN my_email;2.4重命名表
重命名表有两种方式分别是RENAME方式和ALTER方式 方式一RENAME方式 RENAME TABLE myemp1
TO myemp11;方式二ALTER方式 ALTER TABLE myemp2
RENAME TO myemp12;2.5删除表
删除表操作使用DROP关键字不光将表结构删除掉同时表中的数据也删除掉释放表空间。 需求删除表myemp12 DROP TABLE IF EXISTS myemp12;2.6清空表
清空表使用TRUNCATE关键字表示清空表中的所有数据但是表结构保留。 需求清空employees_copy employees_copy 表中原本有如下数据 清空表
TRUNCATE TABLE employees_copy;再次查询表中记录 3数据操作
3.1添加数据
可以使用 INSERT 语句向表中插入数据。有如下两种插入方式
使用VALUES方式插入数据将查询结果插入到表中可快速地从一个或多个表中向一个表中插入多行
接下来一一介绍
3.1.1VALUES的方式添加
情况1 没有指明添加的字段。
此时值列表中需要为表的每一个字段指定值并且值的顺序必须和数据表中字段声明时的顺序相同否则可能报错。语法格式如下
INSERT INTO 表名
VALUES (value1,value2,....);emp1表结构如下 插入数据SQL实例如下
INSERT INTO emp1
VALUES (1,Tom,2000-12-21,3400); #注意一定要按照声明的字段的先后顺序添加插入后执行查询
SELECT *
FROM emp1;查询结果如下 情况2 指明要添加的字段 推荐
INSERT INTO emp1(id,hire_date,salary,name) # 插入时需要和此处的字段顺序匹配
VALUES(2,1999-09-09,4000,Jerry);插入后查询结果如下 情况3 同时插入多条记录
INSERT INTO emp1(id,NAME,salary)
VALUES
(4,Jim,5000), # 多条记录之间使用逗号隔开
(5,张俊杰,5500);插入后查询结果如下 3.1.2将查询结果插入到表中
将查询结果插入到表中会结合SELECT查询语句。
SQL示例
INSERT INTO emp1(id,NAME,salary,hire_date)
#查询语句
SELECT employee_id,last_name,salary,hire_date
FROM employees
WHERE department_id IN (70,60);注意
查询的字段一定要与添加到的表的字段一 一对应上述SQL中emp1表中要添加的数据的字段的最大长度不能低于employees表中查询的字段的长度。否则会有添加不成功的风险。 如果emp1中的最大字段长度小employees中的最大字段长度更大可能出问题比如employees表中last_name字段长度为 varchar(25)emp1表中name字段长度为 varchar(15)执行上述SQL如果employees表中某条记录的last_name长为20则会报错。 3.3修改数据
使用 UPDATE …SET…语句修改数据。语法如下
UPDATE table_name
SET column1value1, column2value2, … , columnvaluen
[WHERE condition]需求修改id为5的员工的hire_date为当前时间 SQL语句如下
UPDATE emp1
SET hire_date CURDATE()
WHERE id 5;需求修改4号员工的薪资为6000hire_date为当前时间 UPDATE emp1
SET hire_date CURDATE(),salary 6000
WHERE id 4;需求将表中姓名中包含字符a的提薪20% UPDATE emp1
SET salary salary * 1.2
WHERE NAME LIKE %a%;注意 UPDATE语句可以一次更新多条数据。如果省略 WHERE 子句则表中的所有数据都将被更新 3.2删除数据
使用 DELETE FROM 删除数据 。语法如下
DELETE FROM table_name [WHERE condition];需求删除表中id为1的员工信息 SQL语句如下
DELETE FROM emp1
WHERE id 1;3.3对比TRUNCATE TABLE 和 DELETE FROM
对比二者之前需要了解数据库中的 COMMIT命令 和 ROLLBACK命令 COMMIT提交数据一旦执行COMMIT则数据就被永久的保存在了数据库中意味着数据不可以回滚ROLLBACK回滚数据:一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后 TRUNCATE TABLE 和 DELETE FROM 的相同点 都可以实现对表中所有数据的删除同时保留表结构。 TRUNCATE TABLE 和 DELETE FROM 的不同点 TRUNCATE TABLE 一旦执行此操作表数据全部清除。同时数据是不可以回滚的DELETE FROM 一旦执行此操作表数据可以全部清除不带WHERE的DELETE FROM语句。同时数据是可以实现回滚的;
原因是
TRUNCATE TABLE属于DDL数据定义语言DELETE FROM属于DML数据操作语言DDL数据定义语言一旦执行就不可回滚因此执行DDL操作要慎重DML数据操作语言默认情况下一旦执行也是不可回滚的但是如果在执行DML之前执行了SET autocommit FALSE则执行的DML操作就可以实现回滚SET autocommit FALSE指令对DDL操作无效。因为在执行完DDL操作之后一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit FALSE指令影响。 SQL演示DELETE FROM ① 先提交一次
COMMIT;② 查看表中数据
SELECT *
FROM emp1;运行结果如下 ③ 禁用自动提交
SET autocommit FALSE;④ 执行 TRUNCATE TABLE
TRUNCATE TABLE emp1;查看表中数据发现删除成功 ⑤ 回滚
ROLLBACK;回滚后查看表中数据发现数据回滚成功回滚到最近一次COMMIT之后 SQL演示TRUNCATE TABLE ① 先提交一次
COMMIT;② 查看表中数据
SELECT *
FROM emp1;运行结果如下 ③ 禁用自动提交
SET autocommit FALSE;④ 执行DELETE FROM
DELETE FROM emp1;查看表中数据发现删除成功 ⑤ 回滚
ROLLBACK;回滚后查看表中数据发现数据回滚后数据未恢复 3.4MySQL8新特性计算列
计算列简单来说就是某一列的值是通过别的列计算得来的。
例如a列值为1、b列值为2c列不需要手动插入定义ab的结果为c的值那么c就是计算列是通过别的列计算得来的。 在MySQL 8.0中CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以CREATE TABLE为例进行讲解。 需求定义数据表tb1然后定义字段id、字段a、字段b和字段c其中字段c为计算列用于计算 ab 的值。 首先创建测试表tb1
CREATE TABLE tb1(
id INT,
a INT,
b INT,
c INT GENERATED ALWAYS AS (a b) VIRTUAL # 字段c即为计算列
);插入一条记录
# 只指明了字段a和字段b
INSERT INTO tb1(a,b) VALUES (100,200);查看数据
SELECT * FROM tb1;运行结果如下c字段自动计算出结果 更新字段值
UPDATE tb1 SET a 500;查看数据
SELECT * FROM tb1;运行结果如下c字段自动更新结果