MySQL-day2

中间发生了好多乱七八糟的事情,去参加了2次数学建模,看了黑马大模型的网课,结果搁置了这部分的学习,现在重新捡起来。

以下内容是看课笔记【全85集】MySQL数据分析零基础小白必看!MySQL数据库基础教程,SQL数据库快速入门!(全程干货)_哔哩哔哩_bilibili

创建表与删除表

创建表

使用DDL语句创建表

sql 复制代码
CREATE TABLE  表名(列名 类型,列名 类型...); 

示例:

创建一个employees表包含雇员ID,雇员名字,雇员薪水。

sql 复制代码
create table employees(employee_id int,employee_name varchar(10),salary float(8,2));
sql 复制代码
mysql> create table employees(employee_id int,employee_name varchar(10),salary float(8,2));
ERROR 1046 (3D000): No database selected
mysql> CREATE DATABASE company;
Query OK, 1 row affected (0.00 sec)

mysql> USE company;
Database changed
mysql> CREATE TABLE employees(
    ->     employee_id INT,
    ->     employee_name VARCHAR(10),
    ->     salary FLOAT(8,2)
    -> );
Query OK, 0 rows affected, 1 warning (0.05 sec)

删除表

使用DDL语句删除表

sql 复制代码
DROP TABLE 表名;

示例:

删除employee表

sql 复制代码
drop table employees;
sql 复制代码
mysql> drop table employees;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.01 sec)

修改表

使用DDL语句修改表

sql 复制代码
ALTER TABLE 旧表名 RENAME 新表名;

示例:

sql 复制代码
mysql> create table employees(employee_id int,employee_name varchar(10),salary float(8,2));
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| employees         |
+-------------------+
1 row in set (0.00 sec)

mysql> alter table employees rename emp;  //改名
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| emp               |
+-------------------+
1 row in set (0.00 sec)

选中之后,按F2,编辑表名

修改列名

使用DDL语句修改列名

sql 复制代码
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
sql 复制代码
mysql> alter table emp change column employee_name name varchar(10);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改后按ctrl+s保存

修改列类型

使用DDL语句修改列类型

sql 复制代码
ALTER TABLE 表名 MODIFY 列名 新类型;

示例:

sql 复制代码
mysql> alter table emp modify name varchar(40);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

navicat:直接改

添加新列

使用DDL语句添加新列

sql 复制代码
ALTER TABLE 表名 ADD COLUMN 新列名 类型;

示例:

在emp表中添加佣金列,列名为commission_pct.

sql 复制代码
mysql> alter table emp add column commision_pct float(4,2);
Query OK, 0 rows affected, 1 warning (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 1

删除指定列

使用DDL语句删除指定列

sql 复制代码
ALTER TABLE 表名 DROP COLUMN 列名;

示例:

删除emp表中的commission_pct(我才发现之前创建的时候commission_pct.少了一个s)

sql 复制代码
mysql> alter table emp drop column commision_pct;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

MYSQL中的约束

约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

1. 主键约束 :唯一标识每一行数据,非空且不重复,一张表只能有一个。

2. 外键约束:关联两张表,保证当前表字段值,必须在另一张表主键中存在。

3. 唯一性约束 :字段值不能重复,允许为空。

4. 非空约束 :字段必须填值,不允许为空。

5. 检查约束:限定字段取值范围,不符合规则就无法插入/修改。

添加主键约束

单一主键:使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

联合主键:使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

修改表添加主键约束

使用DDL语句添加主键约束

sql 复制代码
ALTER TABLE 表名 ADD PRIMARY KEY(列名);

示例:

将emp表中的employee_id修改为主键

sql 复制代码
mysql> alter table emp add primary key(employee_id);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

主键自增长

MySQL中的自动增长类型要求:

1.一个表中只能有一个列为自动增长。

2.自动增长的列的类型必须是整数类型。

3.自动增长只能添加到具备主键约束与唯一性约束的列上。

4.删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束。

sql 复制代码
alter table 表名 modify 主键 类型 auto_increment;

示例:

将emp表中的employee_id主键修改为自增

sql 复制代码
mysql> alter table emp modify employee_id int auto_increment;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

有钥匙就是这个标记为主键

休息,目前进度17/85

相关推荐
这个DBA有点耶10 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶12 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技12 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend13 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence17 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend2 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶2 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung2 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql