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;#表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;
注意:為了結果可視化,在問題的實現步驟最后都進行了展示數據庫、表結構或表數據等。
如果有任何問題歡迎提出!!