sql语法
注释:
- 单行
--注释内容
# 注释内容
-
多行
/* 注释内容 */
数据定义语言DDL
-
查询所有数据库
show databases;
注意是databases而不是database。
-
查询当前数据库
select database();
-
创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
-
删除数据库
drop database [if exists] 数据库名;
-
切换数据库
use 数据库名;
表操作
表的查询创建
-
查询当前数据库所有表
show tables;
注意是tables而不是table。
-
查看指定表结构
desc 表名;
-
查询指定表的建表语句
show create table 表名;
-
创建表结构
create table 表名( 字段1 字段1类型 [comment 字段1注释], 字段2 字段2类型 [comment 字段2注释], 字段3 字段3类型 [comment 字段3注释], ...... 字段n 字段n类型 [comment 字段m注释], )[comment 表注释];
注意:[…]内是可选参数,最后一个字段后面没有逗号。
表的修改操作
-
添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
-
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
-
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
-
删除字段
alter table 表名 drop 字段名;
-
修改表名
alter table 表名 rename to 新表名;
表的删除操作
-
删除表
drop table [if exists] 表名;
-
删除指定表,并重新创建表
truncate table 表名;
数据操作语言DML
添加数据
-
给指定字段添加数据
insert into 表名 {字段名1, 字段名2,...} values{值1, 值2, ..};
-
给全部字段添加数据
insert into 表名 values (值1, 值2, ...);
-
批量添加数据
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
-
查询多个字段
select 字段1, 字段2, 字段3,... from 表名;
select * from 表名;
注意:*号代表查询多有字段,在实际开发中尽量少用(不直观、影响效率)。
-
字段设置别名
select 字段1 [as 别名1], 字段2 [as 别名2], ... from 表名;
select 字段1 [别名1], 字段2 [别名2], ... from 表名;
-
去除重复记录
select distinct 字段列表 from 表名;
实验
实验要求:
实验代码:
SHOW DATABASES;
#1.使用SQL语句创建数据库studentsdb。
CREATE DATABASE if not exists studentsdb;
#2. 使用SQL语句选择studentsdb为当前使用数据库。
USE studentsdb;
/*
12.删除表stu。
13.删除数据库studb。*/
#表student_info
#3.使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
DROP table student_info;
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;
#表curriculum
DROP TABLE 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;
#表grade
DROP table 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;
#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;
注意:为了结果可视化,在问题的实现步骤最后都进行了展示数据库、表结构或表数据等。
如果有任何问题欢迎提出!!