sql基本语法+实验实践

sql语法

注释:

  1. 单行
--注释内容# 注释内容
  1. 多行

    /*
    注释内容
    */
    

数据定义语言DDL

  1. 查询所有数据库

    show databases;
    

    注意是databases而不是database。

  2. 查询当前数据库

    select database();
    
  3. 创建数据库

    create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
    
  4. 删除数据库

    drop database [if exists] 数据库名;
    
  5. 切换数据库

    use 数据库名;
    

表操作

表的查询创建

  1. 查询当前数据库所有表

    show tables;
    

    注意是tables而不是table。

  2. 查看指定表结构

    desc 表名;
    
  3. 查询指定表的建表语句

    show create table 表名;
    
  4. 创建表结构

    create table 表名(字段1 字段1类型 [comment 字段1注释],字段2 字段2类型 [comment 字段2注释],字段3 字段3类型 [comment 字段3注释],......字段n 字段n类型 [comment 字段m注释],
    )[comment 表注释];
    

    注意:[…]内是可选参数,最后一个字段后面没有逗号。

表的修改操作

  1. 添加字段

    alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
    
  2. 修改数据类型

    alter table 表名 modify 字段名 新数据类型(长度);
    
  3. 修改字段名和字段类型

    alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
    
  4. 删除字段

    alter table 表名 drop 字段名;
    
  5. 修改表名

    alter table 表名 rename to 新表名;
    

表的删除操作

  1. 删除表

    drop table [if exists] 表名;
    
  2. 删除指定表,并重新创建表

    truncate table 表名;
    

数据操作语言DML

添加数据

  1. 给指定字段添加数据

    insert into 表名 {字段名1, 字段名2,...} values{值1,2, ..};
    
  2. 给全部字段添加数据

    insert into 表名 values (1,2, ...);
    
  3. 批量添加数据

    insert into 表名 (字段1, 字段2, ...) values (1,2, ...),(1,2, ...);
    
    insert into 表名 values (1,2, ...), (1,2, ...);
    

修改数据

修改数据的具体语法

update 表名 set 字段名1 =1, 字段名2 =2, ..{where 条件};

删除数据

delete from 表名 {where 条件};

数据查询语言DQL

  1. 查询多个字段

    select 字段1, 字段2, 字段3,... from 表名;
    
    select * from 表名;
    

    ​ 注意:*号代表查询多有字段,在实际开发中尽量少用(不直观、影响效率)。

  2. 字段设置别名

    select 字段1 [as 别名1], 字段2 [as 别名2], ... from 表名;
    
    select 字段1 [别名1], 字段2 [别名2], ... from 表名;
    
  3. 去除重复记录

    select distinct 字段列表 from 表名;
    

    实验

    实验要求:
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述
    实验代码:

SHOW DATABASES;#1.使用SQL语句创建数据库studentsdb。
CREATE DATABASE if not exists studentsdb;#2. 使用SQL语句选择studentsdb为当前使用数据库。
USE studentsdb;
/*
12.删除表stu。13.删除数据库studb。*/#表student_info
#3.使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
DROP table student_info;
CREATE TABLE student_info(学号 CHAR(4) NOT NULL PRIMARY KEY,姓名 CHAR(8) NOT NULL,性别 CHAR(2),出生日期 DATE,家庭住址 VARCHAR(50)
);#4.使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据,各表数据如表4-表6所示。
INSERT INTO student_info VALUES ('0001','张青平','男','2000-10-01','衡阳市东风路77号'),('0002','刘东阳','男','1998-12-09','东阳市八一北路33号'),('0003','马晓夏','女','1995-05-12','长岭市五一路763号'),('0004','钱忠理','男','1994-09-23','滨海市洞庭大道279号'),('0005','孙海洋','男','1995-04-03','长岛市解放路27号'),('0006','郭小復','男','1997-11-10','南山市红旗路113号'),('0007','肖月玲','女','1996-12-07','东方市南京路11号'),('0008','张玲珑','女','1997-12-24','滨江市新建路97号');#7. 使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)。
ALTER TABLE student_info ADD 备注 VARCHAR(50);DESC student_info;
SELECT * FROM student_info;#表curriculum
DROP TABLE curriculum;
CREATE TABLE curriculum(课程编号 CHAR(4) NOT NULL PRIMARY KEY,课程名称 VARCHAR(50) NOT NULL,学分 INT
);INSERT INTO curriculum VALUES ('0001','计算机应用基础',2),('0002','C语言程序设计',2),('0003','数据库原理及应用',2),('0004','英语',4),('0005','高等数学',4);#5. 使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为空。
UPDATE curriculum SET 课程名称 = '';
SELECT * FROM curriculum;#表grade
DROP table grade;
CREATE TABLE grade(学号 CHAR(4) NOT NULL,课程名称 VARCHAR(50) NOT NULL,分数 INT
);
ALTER TABLE grade ADD PRIMARY KEY (学号,课程名称);
INSERT INTO grade VALUES 
('0001','0001',80),
('0001','0002',91),
('0001','0003',88),
('0001','0004',85),
('0001','0005',77),
('0002','0001',73),
('0002','0002',68),
('0002','0003',80),
('0002','0004',79),
('0002','0005',73),
('0003','0001',84),
('0003','0002',92),
('0003','0003',81),
('0003','0004',82),
('0003','0005',75);#6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
ALTER TABLE grade MODIFY 分数 DECIMAL(5,2);
DESC grade;
SELECT * from grade;#8. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
CREATE DATABASE if not exists studb;
USE studb;
CREATE TABLE stu(学号 CHAR(4) NOT NULL PRIMARY KEY,姓名 CHAR(8) NOT NULL,性别 CHAR(2),出生日期 DATE,家庭住址 VARCHAR(50)
);
INSERT INTO stu VALUES ('0001','张青平','男','2000-10-01','衡阳市东风路77号'),('0002','刘东阳','男','1998-12-09','东阳市八一北路33号'),('0003','马晓夏','女','1995-05-12','长岭市五一路763号'),('0004','钱忠理','男','1994-09-23','滨海市洞庭大道279号'),('0005','孙海洋','男','1995-04-03','长岛市解放路27号'),('0006','郭小復','男','1997-11-10','南山市红旗路113号'),('0007','肖月玲','女','1996-12-07','东方市南京路11号'),('0008','张玲珑','女','1997-12-24','滨江市新建路97号');
ALTER TABLE stu ADD 备注 VARCHAR(50);
DESC stu;
SELECT * FROM stu;#9. 使用SQL语句删除表stu中学号为0004的记录。
DELETE FROM stu WHERE 学号 = '0004';
#10.使用SQL语句更新表stu中学号为0002的家庭住址为“滨江市新建路96号”。
UPDATE stu SET 家庭住址 = '滨江市新建路96号' WHERE 学号 = '0002';
#11.删除表stu的“备注”列。
ALTER TABLE stu DROP 备注;
SELECT * FROM stu;
#12.删除表stu。
DROP TABLE stu;
SHOW TABLES;
#13.删除数据库studb。
DROP DATABASE studb;
SHOW DATABASES;

注意:为了结果可视化,在问题的实现步骤最后都进行了展示数据库、表结构或表数据等。
如果有任何问题欢迎提出!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496930.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云里物里轻薄系列电子价签,如何革新零售?

云里物里的DS轻薄系列电子价签,凭借轻巧外观和强劲性能,为零售行业提供了更便捷的商品改价方案。这不仅是对纸质价标的替代,更以其安全性和可持续发展性,实现对零售行业的效率升级,让商家们轻松迎接数字化时代的挑战&a…

HTTP详解(HTTP的特点,状态码,工作原理,GET和POST的区别,如何解决无状态通信)!!!

文章目录 一、HTTP协议简介二、HTTP的主要特点三、HTTP之URL四、Request和Respons五、HTTP的状态码六、HTTP工作原理七、GET和POST请求的区别八、解决HTTP无状态通信——Cookie和Session 一、HTTP协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议&…

STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例

STM32 合宙1.54“ 电子墨水屏(e-paper)驱动显示示例 📍相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏(e-paper)驱动显示示例》🔖程序是从GooDisplay品牌和微雪电子下同型号规格墨水屏的示例程序…

【亚马逊云新春特辑③】构生成式 AI 文生图工具之借助ControlNet进行AI绘画创作【使用OpenPose优化人物二维码】

文章目录 2.1 使用OpenPose优化人物二维码1)数据及环境准备2)导入骨架数据并启用OpenPose控制单元3)导入二维码并生成美化后的二维码图片 2.1 使用OpenPose优化人物二维码 在上一节体验到了使用ControlNet并结合QR Code生成二维码&#xff0…

一键安装|卸载 mysql 8.2.0 shell脚本

场景:为了在无网、外网 mysql 安装方便,这里分享一个自己编写得 shell脚本 这里以当前最新版 mysql 8.2.0;centos-7 二进制包下载: 下载地址 mysql_install.sh #!/bin/bash # 解压安装包 tar -xf mysql-8.2.0-linux-glibc2.17-x8…

【机器人最短路径规划问题(栅格地图)】基于蚁群算法求解

基于蚁群算法求解机器人最短路径规划问题的仿真结果 仿真结果 收敛曲线变化趋势 蚁群算法求解最优解的机器人运动路径 各代蚂蚁求解机器人最短路径的运动轨迹

C语言:数据在内存中的存储

C语言:数据在内存中的存储 整数存储原码、反码、补码转换规则数据与内存的关系 大小端字节序浮点数存储IEEE 754标准存储过程取用过程 数据的存储范围 整数存储 原码、反码、补码 整数的2进制表示方法有三种,即原码、反码和补码 三种表示方法均有符号位…

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…

捕获在野SMBGhost本地提权攻击样本

前言 从Windows10 v1903/Windows Server v1903开始,微软在协议SMB3.1.1中开启了对数据压缩传输的支持,但是由于SMB没有正确处理压缩的数据包,在客户端/服务端解压数据的时候,没有对COMPRESSIN_TRANSFORM_HEADE结构进行安全校验&a…

Unity中的UI系统之GUI

目录 概述工作原理和主要作用基础控件重要参数及文本和按钮多选框和单选框输入框和拖动条图片绘制和框 复合控件工具栏和选择网络滚动视图和分组窗口 自定义整体样式自定义皮肤样式 概述 什么是UI系统 UI是User Interface(用户界面)的简称,用…

Java特性之设计模式【命令模式】

一、命令模式 概述 ​ 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象&…

springcloud -服务注册治理之nacos

任务 查询: CPU密集型和IO密集型对 CPU内核之间的关系。—线程池 什么是Nacos **服务(Service)**是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理: Kubernetes Service gRPC & Dubbo RPC S…