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;

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

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

相关推荐
leegong231111 小时前
PostgreSQL 初中级认证可以一起学吗?
数据库
秋野酱3 小时前
如何在 Spring Boot 中实现自定义属性
java·数据库·spring boot
weisian1513 小时前
Mysql--实战篇--@Transactional失效场景及避免策略(@Transactional实现原理,失效场景,内部调用问题等)
数据库·mysql
AI航海家(Ethan)3 小时前
PostgreSQL数据库的运行机制和架构体系
数据库·postgresql·架构
Amd7944 小时前
深入探讨索引的创建与删除:提升数据库查询效率的关键技术
数据结构·sql·数据库管理·索引·性能提升·查询优化·数据检索
Kendra9196 小时前
数据库(MySQL)
数据库·mysql
时光书签7 小时前
Mongodb副本集群为什么选择3个节点不选择4个节点
数据库·mongodb·nosql
人才程序员9 小时前
【C++拓展】vs2022使用SQlite3
c语言·开发语言·数据库·c++·qt·ui·sqlite
极客先躯9 小时前
高级java每日一道面试题-2025年01月23日-数据库篇-主键与索引有什么区别 ?
java·数据库·java高级·高级面试题·选择合适的主键·谨慎创建索引·定期评估索引的有效性
指尖下的技术9 小时前
Mysql面试题----MyISAM和InnoDB的区别
数据库·mysql