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;

#表student_info
#3.使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
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;
DROP table student_info;

#表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;
DROP TABLE curriculum;


#表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;
DROP table 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;

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大话设计模式——4.装饰模式(Decorator Pattern)

1.定义 1)可以在不改动原有对象代码的情况下扩展对象的功能,通过聚合的方式相较于继承更加灵活。 2)UML图 2.示例 汽车有很多装饰可选,如座椅、音响、轮胎等都可以进行自定义组装 1)抽象汽车对象 public interfac…

【yolov8部署实战】VS2019环境下使用Onnxruntime环境部署yolov8目标检测|含源码

一、前言 部署yolo项目,是我这几个月以来做的事情,最近打算把这几个月试过的方法,踩过的坑,以博客的形式,分享一下。关于下面动态中讲到的如何用opencv部署,我在上一篇博客中已经详细讲到了:【…

项目-论坛系统

基于Spring前后端分离版本的论坛系统。 1、构建项目结构 common公共类:统一返回结果、全局变量、异常枚举信息config配置类:Swagger,用于自动生成CRUD和基本对象controller控制器类:用于接受前端信息和控制路由dao数据库访问类&…

LeetCode206题:反转链表(python3)

采用递归 class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:cur headpre Nonewhile cur:temp cur.next # 保存下一轮循环的节点cur.next pre # 将当前节点 cur 的指针指向上一个节点 prepre curcur tempreturn pre

前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

一、前缀和的原理和特点 prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足: prefix有一个重要的特性,可以用于快速生成p…

sql注入之sqli-labs-less-1 错误注入

输入?id1 得到登录页面: 通过order by 函数试探: 5的时候报错 试探到3 的时候返回正确的值: 然后继续注入:?id -1 union select 1,2,3 -- 查看回显点: 开始查看数据库内容:id-1 union select 1,databa…

【C++精简版回顾】17.io流,流中提供的函数

1.流含义 2.流类 3.流对象 4.流对象的函数 举例&#xff1a; 要求&#xff1a;数据结构中经常需要对齐输出数据&#xff0c;应该怎么做&#xff1f; 1.头文件 #include<iomanip> 2.创建表格头 cout << setiosflags(ios::left) << setw(8) << "姓名…

Linux系统忘记root密码重置方法

一、操作系统-麒麟v10 操作方法和Centos系统进入救援模式类似&#xff0c;BMC中重启操作系统&#xff0c;启动界面按e键进入 进入救援模式需要密码 root/Kylin123123 进入编辑内核启动界面&#xff0c;找到以linux开头的那一段&#xff0c;在linux内核信息后面加入单用户模式…

Doris——基础概念 FAQ盘点

基本概念&#xff1a; 基于Apache Doris在读写流程、副本一致性机制、存储机制、高可用机制等概念进行整理&#xff1a; FE&#xff1a;Frontend&#xff0c;即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。BE&#xff1a;Back…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识&#xff1f;如何激发小学生古诗词的学习兴趣&#xff1f;如何提高小学古诗词的学习成绩&#xff1f;如何备考2024年小学生古诗文大会&#xff1f;... 如果你也在关注这些问题&#xff0c;我的建议是参加每年一度的小学生古诗词大会&#xff08;免费…

vue-router4 (六) 命名视图

命名视图可以使得同一级&#xff08;同一个组件&#xff09;中展示更多的路由视图&#xff0c;而不是嵌套显示&#xff0c; 命名视图可以让一个组件中具有多个路由渲染出口&#xff0c;这对于一些特定的布局组件非常有用。 应用场景&#xff1a; 比如点击login切换到组件A&am…

Sqli-labs靶场第15关详解[Sqli-labs-less-15]自动化注入-SQLmap工具注入

Sqli-labs-Less-15 #自动化注入-SQLmap工具注入 SQLmap用户手册&#xff1a;文档介绍 - sqlmap 用户手册 由于这题是post请求&#xff0c;所以先使用burp进行抓包&#xff0c;然后将数据包存入txt文件中打包 用-r 选择目标txt文件 python sqlmap.py -r data.txt -current-db…

Java——数组的定义与使用

目录 一.数组的基本概念 1.什么是数组 2.数组的创建及初始化 3.数组的使用 二.数组是引用类型 1.初始JVM的内存分布 2.基本类型变量与引用类型变量的区别 3.再谈引用变量 4.认识 null 三.数组的应用场景 1.保存数据 2.作为函数的参数 2.1参数传基本数据类型 2.…

Python算法100例-3.3 阿姆斯特朗数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展 1&#xff0e;问题描述 如果一个整数等于其各个数字的立方和&#xff0c;则该数称为“阿姆斯特朗数”&#xff08;亦称为自恋性数&#xff…

ubuntu20.04安装docker及运行

ubuntu20.04安装docker及运行 ubuntu环境版本 Ubuntu Focal 20.04 (LTS) 查看系统版本 rootubuntu20043:~# cat /proc/version Linux version 5.15.0-78-generic (builddlcy02-amd64-008) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) …

JAVA *数据库连接池 * 接JDBC

一.介绍: 数据库连接池实际上就是一个 " 容器 " 当有多个拥护需要访问数据库的时候, 一个用户会打开一个数据库连接, 但是!当用户离开的时候,就会断开数据库连接,那么数据库连接就作废了,之后如果还有用户需要进行访问,需要再建立一个数据库连接......循环往复, …

(Linux学习四)用户权限介绍以及操作UGO(一)

用户提权 su永久提权&#xff1a; su - root //-加不加- 都可以 - 后面可以加变量 su root //su - root //切换root权限&#xff0c;需要输入密码 exit //登出 root 再次exit退出shellsudo 临时提权&#xff1a;部分特权语法&#xff1a;user MACHIN…

MySQL相关知识汇总

MySQL是一个广泛使用的开源关系型数据库管理系统&#xff0c;它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域&#xff0c;无论是大型项目还是小型应用&#xff0c;MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总&#xff0c;帮助读者更好地了…

type-alisaea-package

type-alisaea-package : 是自动配置别名&#xff0c;也就是设置这个之后&#xff0c;在Mybatis的Mapper文件里就可以写对应的类名&#xff0c;而不用写全路径名了 ; 作用 : 简化xml文件中resultType中指定路径配置 ; 如何配置 : 在springboot项目中的application.yaml文…

【网站项目】219一中体育馆管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…