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;

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

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

相关推荐
打鱼又晒网8 分钟前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
王小小鸭13 分钟前
【开发小技巧11】用经典报表实现badge list效果,根据回显内容用颜色加以区分
oracle·oracle apex
大白要努力!13 分钟前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库