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

相关推荐
笃行3503 分钟前
SQL编辑器的隐藏技能:KingbaseES 配套 KSQL Developer 使用笔记
数据库
CaptainT9 分钟前
WHERE 到底筛掉了哪些行
sql·mysql
努力进修19 分钟前
时序数据长期承载难题:从压缩、批量写入到数据组织优化
java·开发语言·数据库
CaptainT23 分钟前
先把例子跑起来:MySQL 环境与本文的示例数据
数据库·后端·mysql
Dovis(誓平步青云)24 分钟前
总用电下降了,为什么家庭能源看板仍然提示异常
java·开发语言·数据库·人工智能·算法·电脑·能源
xiaogai_gai24 分钟前
电商采购入库对接财务VMI采购入库(单号回写)实战教程
大数据·数据库
夜雪一千31 分钟前
MySQL中查询和操作JSON类型的数据
数据库·mysql·json
一条破秋裤1 小时前
05_设备树自定义属性_写入读取验证
linux·网络·数据库
辛迪聊物业数字化1 小时前
物业数字化选型避坑:3步判断系统是否适配你的业态
数据库
砚底藏山河1 小时前
量化新手误区:因子计算与行情数据的工程化解耦
java·数据库·python·金融