环境
- SQL Server 2019
创建数据库
基本格式如下:
create database [数据库名称]
create database GradeManager;
生成了一个新创建的数据库 GradeManager
切换数据库
基本格式如下:
use [数据库名称]
use GradeManager;
切换以后,左上角显示已经切换到 自己创建的 GradeManager 数据库。
创建表
基本格式如下:
CREATE TABLE [表名]
([列定义]);
例如:
CREATE TABLE Employee
(Eno CHAR(4)NOT NULL UNIQUE,
Ename CHAR(8) NOT NULL,
Sex CHAR(2) NOT NULL DEFAULT('男'),
Age INT NULL,
Is_Marry CHAR(1) NULL,
Title CHAR(6) NULL,
Dno CHAR(2) NULL);
- NULL :该列值可以为空
- NOT NULL:该列值不可以为空
- Eno:取唯一值,该值在数据表中不会重复。
- DEFAULT:设置默认值
注意:数据库下的表名是唯一的,不可以有同名表出现。
创建的数据库Employee表如下图:
在表中插入数据
基本格式如下:
INSERT INTO [表名] ( field1, field2,...fieldN )
VALUES ([alue1, value2, ... valueN)
添加一条数据:
INSERT INTO Employee
VALUES ('1000', '小明', '男', 22, '1', '工程师', '02');
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1000 | 小明 | 男 | 22 | 1 | 工程师 | 02 |
通过设置字段添加一条数据:
INSERT INTO Employee(Eno, Ename, Sex)
VALUES ('1001', 'vvcat', '男');
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1000 | 小明 | 男 | 22 | 1 | 工程师 | 02 |
1001 | vvcat | 男 | NULL | NULL | NULL | NULL |
批量添加十条数据:
添加结果如下:
INSERT INTO Employee
VALUES('1002', '刘一', '男', 20, '1', '工程师', '01'),
('1003', '陈二', '女', 21, '1', '实习', '03'),
('1005', '李四', '男', 63, '1', '实习', '01'),
('1006', '王五', '女', 24, '1', '工程师', '01'),
('1007', '赵六', '男', 25, '1', '助工', '03'),
('1008', '孙七', '男', 46, '0', '助工', '02'),
('1009', '周八', '女', 37, '1', '助工', '02'),
('1010', '吴九', '男', 50, '0', '经理', '01'),
('1015', '郑十', '男', 40, '0', '经理', '01');
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1000 | 小明 | 男 | 22 | 1 | 工程师 | 02 |
1001 | vvcat | 男 | NULL | NULL | NULL | NULL |
1002 | 刘一 | 男 | 20 | 1 | 工程师 | 01 |
1003 | 陈二 | 女 | 21 | 1 | 实习 | 03 |
1004 | 张三 | 女 | 22 | 1 | 工程师 | 02 |
1005 | 李四 | 男 | 63 | 1 | 实习 | 01 |
1006 | 王五 | 女 | 24 | 1 | 工程师 | 01 |
1007 | 赵六 | 男 | 25 | 1 | 助工 | 03 |
1008 | 孙七 | 男 | 46 | 0 | 助工 | 02 |
1009 | 周八 | 女 | 37 | 1 | 助工 | 02 |
1010 | 吴九 | 男 | 50 | 0 | 经理 | 01 |
1015 | 郑十 | 男 | 40 | 0 | 经理 | 01 |
在表中查询数据
无条件查询
查询 Employee 表的所有的行和列。
SELECT Eno, Ename, Sex, Age, Is_Marry, Title, Dno
FROM Employee
以上查询方式可通过 * 替换。
SELECT *
FROM Employee
查询结果如下:
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1000 | 小明 | 男 | 22 | 1 | 工程师 | 02 |
1001 | vvcat | 男 | NULL | NULL | NULL | NULL |
1002 | 刘一 | 男 | 20 | 1 | 工程师 | 01 |
1003 | 陈二 | 女 | 21 | 1 | 实习 | 03 |
1004 | 张三 | 女 | 22 | 1 | 工程师 | 02 |
1005 | 李四 | 男 | 63 | 1 | 实习 | 01 |
1006 | 王五 | 女 | 24 | 1 | 工程师 | 01 |
1007 | 赵六 | 男 | 25 | 1 | 助工 | 03 |
1008 | 孙七 | 男 | 46 | 0 | 助工 | 02 |
1009 | 周八 | 女 | 37 | 1 | 助工 | 02 |
1010 | 吴九 | 男 | 50 | 0 | 经理 | 01 |
1015 | 郑十 | 男 | 40 | 0 | 经理 | 01 |
注:*
代替表中的所有列。
查询 Employee 表中的所有的姓名
SELECT Ename
FROM Employee
查询结果如下:
Ename | |
---|---|
1 | 小明 |
2 | vvcat |
3 | 刘一 |
4 | 陈二 |
5 | 张三 |
6 | 李四 |
7 | 王五 |
8 | 赵六 |
9 | 孙七 |
10 | 周八 |
11 | 吴九 |
12 | 郑十 |
取消结果集中的重复行
注:使用 DISTINCT 关键字可去掉结果集中的重复行。
SELECT DISTINCT Sex
FROM Employee
Sex | |
---|---|
1 | 男 |
2 | 女 |
在表中修改数据
基本语句格式如下:
UPDATE [表名]
SET column1=value1,column2=value2,...
WHERE [条件];
将 Ename 为小明的数据,修改成 Ename 为小刚
UPDATE Employee
SET Ename='小刚'
WHERE Ename='小明';
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1000 | 小刚 | 男 | 22 | 1 | 工程师 | 02 |
1001 | vvcat | 男 | NULL | NULL | NULL | NULL |
1002 | 刘一 | 男 | 20 | 1 | 工程师 | 01 |
1003 | 陈二 | 女 | 21 | 1 | 实习 | 03 |
1004 | 张三 | 女 | 22 | 1 | 工程师 | 02 |
1005 | 李四 | 男 | 63 | 1 | 实习 | 01 |
1006 | 王五 | 女 | 24 | 1 | 工程师 | 01 |
1007 | 赵六 | 男 | 25 | 1 | 助工 | 03 |
1008 | 孙七 | 男 | 46 | 0 | 助工 | 02 |
1009 | 周八 | 女 | 37 | 1 | 助工 | 02 |
1010 | 吴九 | 男 | 50 | 0 | 经理 | 01 |
1015 | 郑十 | 男 | 40 | 0 | 经理 | 01 |
将所有的 Eno 加 100
UPDATE Employee
SET Eno = Eno + 100;
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1100 | 小刚 | 男 | 22 | 1 | 工程师 | 02 |
1101 | vvcat | 男 | NULL | NULL | NULL | NULL |
1102 | 刘一 | 男 | 20 | 1 | 工程师 | 01 |
1103 | 陈二 | 女 | 21 | 1 | 实习 | 03 |
1104 | 张三 | 女 | 22 | 1 | 工程师 | 02 |
1105 | 李四 | 男 | 63 | 1 | 实习 | 01 |
1106 | 王五 | 女 | 24 | 1 | 工程师 | 01 |
1107 | 赵六 | 男 | 25 | 1 | 助工 | 03 |
1108 | 孙七 | 男 | 46 | 0 | 助工 | 02 |
1109 | 周八 | 女 | 37 | 1 | 助工 | 02 |
1110 | 吴九 | 男 | 50 | 0 | 经理 | 01 |
1115 | 郑十 | 男 | 40 | 0 | 经理 | 01 |
在表中删除数据
基本语句格式如下:
DELETE FROM [表名]
WHERE [条件];
删除某条指定数据
DELETE FROM Employee
WHERE Eno='1100'; /*删除 Eno=1000 的数据*/
Eno | Ename | Sex | Age | Is_Marry | Title | Dno |
---|---|---|---|---|---|---|
1001 | vvcat | 男 | NULL | NULL | NULL | NULL |
1002 | 刘一 | 男 | 20 | 1 | 工程师 | 01 |
1003 | 陈二 | 女 | 21 | 1 | 实习 | 03 |
1004 | 张三 | 女 | 22 | 1 | 工程师 | 02 |
1005 | 李四 | 男 | 63 | 1 | 实习 | 01 |
1006 | 王五 | 女 | 24 | 1 | 工程师 | 01 |
1007 | 赵六 | 男 | 25 | 1 | 助工 | 03 |
1008 | 孙七 | 男 | 46 | 0 | 助工 | 02 |
1009 | 周八 | 女 | 37 | 1 | 助工 | 02 |
1010 | 吴九 | 男 | 50 | 0 | 经理 | 01 |
1015 | 郑十 | 男 | 40 | 0 | 经理 | 01 |
删除表中所有数据
DELETE FROM Employee;
表结构的修改
基本语句格式如下:
添加列
ALTER TABLE [表名]
[ADD [列名] [数据类型] [约束名]]
修改列
ALTER TABLE [表名]
[ALTER COLUMN [列名] [新的数据类型]]
在 Employee 表中添加一列 Address
ALTER TABLE Employee
ADD Address CHAR(50) NULL;
修改Employee 表的 Address 数据类型为CHAR(100)
ALTER TABLE Employee
ALTER COLUMN Address CHAR(100) NULL;
后续继续更新…