SQL从头开始

本文介绍了如何在SQL中创建带有自增主键的表,包括表的创建、修改及数据插入过程。通过实例演示了如何解决自增主键设置过程中遇到的问题。

SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)

查询和更新指令构成了 SQL 的 DML 部分:

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

一步一步来:

先建立个数据库

(注意:SQL对大小写不敏感,都习惯大写)

CREATE DATABASE db_Name

然后建立一张表

CREATE TABLE Article(
Id int NOT NULL,
title VARCHAR(50),
author VARCHAR(50),
keyword VARCHAR(50),
CreateDate datetime,
content text,
express text
)

然后大功告成,一个数据库一张表就出来了,可是有个问题,我想设置个主键怎么办,而且要实现值自增(就是这个列的值可以根据你的行自动建值)

原先我是这么写的,

ALTER TABLE [db_Name].[dbo].[Article]
ADD CONSTRAINT Id_key PRIMARY KEY (Id)

不要笑,偶是刚开始接触数据库,所以导致上面错误,什么错误呢?就是主键是搞好了,但是自增的效果没实现,怎么实现呢,然后我试了试,发现有两个属性设置:IDENTITY 和 auto_increment,在SQL中使用IDENTITY关键字来执行auto_increment(注:IDENTITY的开始值是1,每条新纪录递增1),但是不幸的是这个关键字只能在两种情况下使用,一种是在建立表的时候使用,如下:

CREATE TABLE Article(
Id int NOT NULL PRIMARY KEY IDENTITY,
title VARCHAR(50),
author VARCHAR(50),
keyword VARCHAR(50),
CreateDate datetime,
content text,
express text
)
另一种是在添加新字段的时候,如下:

ALTER TABLE [db_Name].[dbo].[Article]
ADD Id int IDENTITY(1,1)
感觉第一种和第二种比较起来,现在只能选择第二种了,应为表已经建立好了,不想再去删掉表重建,那就删掉Id字段重新添加字段吧,然后我就去删掉那个字段,悲剧又来了,结果那个字段删不掉,代码如下:

ALTER TABLE [db_Name].[dbo].[Article]
DROP COLUMN Id
后来脑袋灵光一闪,是不是上面我设置主键的时候导致删不掉的,小试了一下,我先删除主键约束,代码如下:

ALTER TABLE [db_Name].[dbo].[Article]
DROP CONSTRAINT Id_key
然后再执行删除Id字段的代码,结果可以了

好了,可以重新添加自增的字段了,代码如下:

ALTER TABLE [db_Name].[dbo].[Article]
ADD Id int IDENTITY(1,1)

好了,添加主键约束,代码如下:

ALTER TABLE [db_Name].[dbo].[Article]
ADD CONSTRAINT Id_key  PRIMARY KEY (Id)

好了,一个有自增的主键表建立好了。忘了,可以添加信息了,代码如下:

INSERT INTO [db_Name].[dbo].[Article]
(
title,
author,
keyword,
CreateDate,
content,
express
)
VALUES
(
'中秋节',
'家',
'节日',
GETDATE(),
'下个节日就是中秋节,自从踏上大学到现在每个中秋节都是在外面过的,有时候静下心来想想真是对不起家里的老爸老妈,每次国庆回家,老爸老妈都会拿出家里面给我保存的月饼,都说养儿防老,儿却踏他乡',
'除了国庆和过年的假期,其它假期实在是短,整个假期的天数还不够花费在路上的时间,唯一的就是自己给自己放假'
)



待续.....










```markdown ### 文件类型判断 该文件为 **“普通文本型”**,内容是用户在系统配置过程中因路径混乱、依赖缺失和配置错误导致失败后,提出的重新开始请求:“从头开始弄MySQL吧”。 这是一个典型的 **环境重建类操作请求**,需要基于规范流程提供完整、清晰、可执行的 MySQL 安装与配置步骤。 --- ## ✅ 当前目标明确 > 从零开始,在 IP 为 `192.168.81.130` 的机器上,使用 `/export/soft` 作为安装包存储目录,完成 **MySQL 5.7 的纯净安装 + 初始化 + 远程访问授权 + 与 Hive 集成准备**。 我们将严格遵循文档推荐路径规范: - 安装包路径:`/export/soft` - 安装目录:`/export/server/mysql` - 数据目录:`/export/server/mysql/data` --- # 🛠️ MySQL 5.7 从头安装详细步骤(适用于 CentOS 7) --- ## 第一步:确认基础环境 确保您有 `root` 权限或 `sudo` 能力,并联网。 检查是否已安装冲突软件(如 MariaDB): ```bash rpm -qa | grep mariadb ``` 若有,建议卸载: ```bash sudo yum remove -y mariadb-libs ``` --- ## 第二步:创建必要目录并上传安装包 ### 1. 创建标准目录结构 ```bash sudo mkdir -p /export/soft sudo mkdir -p /export/server sudo chown ma:ma /export/soft sudo chown ma:ma /export/server ``` > ⚠️ 确保 `/export/soft` 存在且可写。 ### 2. 将 MySQL 安装包上传至 `/export/soft` 请通过 `scp` 或其他方式将本地的 `mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz` 上传: ```bash # 在您的本地终端执行(非服务器) scp mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz ma@192.168.81.130:/export/soft/ ``` ### 3. 确认文件存在 ```bash ls /export/soft/mysql*.tar.gz ``` 输出应为: ``` /export/soft/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz ``` --- ## 第三步:解压并移动到安装目录 ```bash cd /export/soft tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz -C /export/server/ ``` 重命名为标准名称: ```bash mv /export/server/mysql-5.7.43-linux-glibc2.12-x86_64 /export/server/mysql ``` --- ## 第四步:创建 mysql 用户组和用户 ```bash sudo groupadd mysql sudo useradd -g mysql mysql ``` --- ## 第五步:设置目录权限 ```bash cd /export/server/mysql sudo chown -R mysql:mysql /export/server/mysql sudo chmod -R 755 /export/server/mysql ``` --- ## 第六步:初始化数据库(生成临时密码) ```bash ./bin/mysqld \ --user=mysql \ --basedir=/export/server/mysql \ --datadir=/export/server/mysql/data \ --initialize ``` ✅ 执行成功后会输出: ``` A temporary password is generated for root@localhost: abc123XYZ!@ ``` 👉 请立即记录该密码(例如 `abc123XYZ!@`),后续登录必须使用! --- ## 第七步:配置 `my.cnf` 备份旧配置(如有): ```bash sudo cp /etc/my.cnf /etc/my.cnf.bak 2>/dev/null || echo "No old config" ``` 创建新配置: ```bash sudo vi /etc/my.cnf ``` 粘贴以下内容: ```ini [mysqld] port=3306 user=mysql basedir=/export/server/mysql datadir=/export/server/mysql/data socket=/tmp/mysql.sock pid-file=/export/server/mysql/mysql.pid log-error=/export/server/mysql/data/error.log lower_case_table_names=1 character-set-server=utf8 max_connections=200 skip-name-resolve [client] default-character-set=utf8 [mysql] default-character-set=utf8 ``` > 🔔 注意: > - `lower_case_table_names=1` 是 Hive 必需项; > - 日志路径需确保可写。 --- ## 第八步:创建日志目录并赋权 ```bash mkdir -p /export/server/mysql/data sudo chown mysql:mysql /export/server/mysql/data ``` --- ## 第九步:配置开机自启动 复制服务脚本: ```bash sudo cp /export/server/mysql/support-files/mysql.server /etc/init.d/mysql ``` 添加服务: ```bash sudo chkconfig --add mysql sudo chkconfig mysql on ``` --- ## 第十步:启动 MySQL 服务 ```bash sudo service mysql start ``` 验证是否启动: ```bash ps aux | grep mysqld netstat -tulnp | grep 3306 ``` 如果提示 `netstat: 未找到命令`,先安装工具: ```bash sudo yum install -y net-tools ``` --- ## 第十一步:登录并修改密码、开放远程访问 ### 1. 使用临时密码登录 ```bash /export/server/mysql/bin/mysql -u root -p ``` 输入第六步生成的临时密码。 ### 2. 修改 root 密码为 `123456` ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; ``` ### 3. 允许 root 从任意 IP 登录 ```sql USE mysql; UPDATE user SET host='%' WHERE user='root'; FLUSH PRIVILEGES; ``` > 🔒 生产环境建议创建专用用户,而非开放 root 远程访问。 ### 4. 创建 Hive 所需数据库 ```sql CREATE DATABASE IF NOT EXISTS hive CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON hive.* TO 'root'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; ``` ### 5. 退出 MySQL ```sql EXIT; ``` --- ## 第十二步:测试远程连接(可选) 在另一台机器上测试: ```bash mysql -h 192.168.81.130 -u root -p ``` 输入密码 `123456`,若能连接成功,则说明远程访问正常。 > ⚠️ 若无法连接,请检查防火墙: > ```bash > sudo firewall-cmd --permanent --add-port=3306/tcp > sudo firewall-cmd --reload > ``` --- ## 第十三步:准备 JDBC 驱动供 Hive 使用 ### 1. 下载或上传 `mysql-connector-java.jar` ```bash cd /export/soft wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar ``` 或手动上传后拷贝: ```bash cp /export/soft/mysql-connector-java-5.1.48.jar /export/server/hive/lib/ ``` --- ## 第十四步:验证 Hive 可初始化元数据 ```bash cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbose ``` ✅ 成功标志:输出中包含 `"schemaTool completed"`。 --- # ✅ 最终验证清单 | 步骤 | 状态 | |------|------| | MySQL 安装包存放于 `/export/soft` | ✅ | | 解压至 `/export/server/mysql` | ✅ | | mysql 用户创建 | ✅ | | my.cnf 配置完成 | ✅ | | 数据库初始化成功 | ✅ | | 服务启动监听 3306 | ✅ | | root 密码修改 + 远程访问开启 | ✅ | | 创建 `hive` 数据库并授权 | ✅ | | JDBC 驱动放入 Hive lib | ✅ | | Hive 元数据 schema 初始化成功 | ✅ | --- # 📚 知识点详解(不超过三项) ### 1. `lower_case_table_names=1` 设置表名存储为小写,避免 Hive 因大小写敏感导致元数据查找失败,必须在初始化前设置。 ### 2. MySQL 初始化 (`--initialize`) 首次安装时生成数据目录、root 临时密码及系统表,是启动 MySQL 服务的前提。 ### 3. JDBC 驱动作用机制 Java 应用(如 Hive)通过 `mysql-connector-java.jar` 中的 `Driver` 类实现与 MySQL 的通信协议连接。 --- 🎉 **恭喜!您已完成 MySQL 5.7 的完整安装与 Hive 集成准备工作。** 下一步可启动 metastore 和 hiveserver2: ```bash nohup /export/server/hive/bin/hive --service metastore > /tmp/metastore.log 2>&1 & nohup /export/server/hive/bin/hive --service hiveserver2 > /tmp/hiveserver2.log 2>&1 & ``` 如需生成自动化脚本或排查具体问题,请继续告诉我! ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值