sql基本语法+实验实践

sql语法

注释:

  1. 单行
SQL 复制代码
--注释内容

# 注释内容
  1. 多行

    sql 复制代码
    /*
    注释内容
    */

数据定义语言DDL

  1. 查询所有数据库

    sql 复制代码
    show databases;

    注意是databases而不是database。

  2. 查询当前数据库

    sql 复制代码
    select database();
  3. 创建数据库

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

    sql 复制代码
    drop database [if exists] 数据库名;
  5. 切换数据库

    sql 复制代码
    use 数据库名;

表操作

表的查询创建

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

    sql 复制代码
    show tables;

    注意是tables而不是table。

  2. 查看指定表结构

    sql 复制代码
    desc 表名;
  3. 查询指定表的建表语句

    sql 复制代码
    show create table 表名;
  4. 创建表结构

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

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

表的修改操作

  1. 添加字段

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

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

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

    sql 复制代码
    alter table 表名 drop 字段名;
  5. 修改表名

    sql 复制代码
    alter table 表名 rename to 新表名;

表的删除操作

  1. 删除表

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

    sql 复制代码
    truncate table 表名;

数据操作语言DML

添加数据

  1. 给指定字段添加数据

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

    sql 复制代码
    insert into 表名 values (值1, 值2, ...);
  3. 批量添加数据

    sql 复制代码
    insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...),(值1, 值2, ...);
    sql 复制代码
    insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

修改数据

修改数据的具体语法

sql 复制代码
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ..{where 条件};

删除数据

sql 复制代码
delete from 表名 {where 条件};

数据查询语言DQL

  1. 查询多个字段

    sql 复制代码
    select 字段1, 字段2, 字段3,... from 表名;
    sql 复制代码
    select * from 表名;

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

  2. 字段设置别名

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

    sql 复制代码
    select distinct 字段列表 from 表名;

    实验

    实验要求:



    实验代码:

sql 复制代码
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;

注意:为了结果可视化,在问题的实现步骤最后都进行了展示数据库、表结构或表数据等。

如果有任何问题欢迎提出!!

相关推荐
IT成长日记25 分钟前
【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南
hive·hadoop·sql·ddl操作
拿破轮1 小时前
查询Hologres或postgresql中的数据
数据库·postgresql
声声codeGrandMaster2 小时前
django之账号管理功能
数据库·后端·python·django
Elastic 中国社区官方博客3 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AscendKing3 小时前
mongo客户端操作mongodb记录
数据库·mongodb
千千寰宇3 小时前
[设计模式/Java] 设计模式之解释器模式【27】
数据库·设计模式
BXCQ_xuan3 小时前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
施嘉伟4 小时前
Oracle 11g RAC手动打补丁详细步骤
数据库·oracle
朴拙数科4 小时前
基于 RAG 的 Text2SQL 全过程的 Python 实现详解,结合 LangChain 框架实现自然语言到 SQL 的转换
python·sql·langchain
my_realmy5 小时前
SQL 查询进阶:WHERE 子句与连接查询详解
java·开发语言·数据库·sql