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;

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

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

相关推荐
时差95320 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式22 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
Mephisto.java28 分钟前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
秋意钟1 小时前
MySQL日期类型选择建议
数据库·mysql
山海青风1 小时前
第七篇: BigQuery中的复杂SQL查询
sql·googlecloud
Dxy12393102162 小时前
python下载pdf
数据库·python·pdf
桀桀桀桀桀桀2 小时前
数据库中的用户管理和权限管理
数据库·mysql
lzhlizihang3 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
BearHan3 小时前
Sqlsugar调用Oracle的存储过程
oracle·存储过程·orm
superman超哥3 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba