笺注:这是在 使用Navicat远程管理MSSQL2014 的基础上进行的。
使用Navicat的查询编辑器:
创建库data2:
CREATE DATABASE data2;
在库data2中创建表t_1:
Use data2;
create table t_1 (id int primary key not null identity (1,1),name nvarchar(20),sex nvarchar(2),age tinyint,grade nvarchar(5),address varchar(50),chinese numeric(12,2),math decimal(12,3))
效果:
表data2.dbo.t_1的表结构:
注释:字段id为主键、标识符列,会自动增长。
######
使用Navicat往表data2.dbo.t_1中一次性插入多条记录:(字段id为主键、标识符列,会自动增长,不用写)
Use data2;
INSERT INTO t_1 (name,sex,age,grade,address,chinese,math) VALUES ('张大白','男',12,'三年一班','广州市',120,99.5);
INSERT INTO t_1 (name,sex,age,grade,address,chinese,math) VALUES ('张三','男',13,'三年一班','广州市',108,77);
INSERT INTO t_1 (name,sex,age,grade,address,chinese,math) VALUES ('李小芳','女',14,'三年二班','佛山市',-60,48.5);
在查询编辑器里输出表data2.dbo.t_1中的所有记录:
Use data2;
SELECT * FROM t_1;
只显示前面两条记录:
Use data2;
select TOP 2 * FROM t_1;
查询中可以只显示某几个字段:
Use data2;
select TOP 2 name,grade,math FROM t_1;
再插入一条记录:
Use data2;
INSERT INTO t_1 (name,age,grade,address,chinese,math) VALUES ('zhuohua',13,'三年二班','佛山市',60,78.5);
SELECT * FROM t_1;
注释:字段sex不写,且没有默认值,那么就是空的(Null)
只显示字段sex的值为空的记录:
Use data2;
select * from t_1 where sex is Null;
只显示字段sex的值不为空的记录:
Use data2;
select * from t_1 where sex is not Null;
查询结果中更改字段的内容:(数据实际上没有更改)
Use data2;
select name,grade,'语文成绩优秀' as chinese from t_1 where chinese >= 100;
注释:把字段chinese的内容显示为“语文成绩优秀”。
查询结果中更改字段的标题:(标题实际上没有更改)
Use data2;
select name as 姓名,grade as 班级,'语文成绩优秀' as chinese from t_1 where chinese >= 100;
注释:在这种情况下,不可以再更改字段chinese的标题了。
截取字段name左边的两个字符:
Use data2;
select left(name,2) as 姓名左边的两个字符 from t_1;
截取字段name右边的三个字符:
Use data2;
select right(name,3) as 姓名右边的三个字符,grade from t_1;
从字段name的第2个字符开始截取3个字符:
Use data2;
select substring(name,2,3) as 新值,grade as 班级 from t_1;
排序:
Use data2;
SELECT * FROM t_1 ORDER BY chinese;
注释: ORDER BY 排序,默认是升序
Use data2;
SELECT * FROM t_1 ORDER BY chinese DESC;
注释: ORDER BY 排序; DESC 降序
Use data2;
SELECT * FROM t_1 ORDER BY age,math;
注释:先以字段age进行升序;如果字段age的值一样,就以字段math进行升序。
Use data2;
SELECT * FROM t_1 ORDER BY age,math DESC;
注释:先以字段age进行升序;当字段age的值一样时,以字段math进行降序。
Use data2;
SELECT * FROM t_1 ORDER BY age DESC,math DESC;
注释:先以字段age进行降序;当字段age的值一样时,以字段math进行降序。
等于的写法:
Use data2;
SELECT name,grade FROM t_1 WHERE grade = '三年二班';
注释:字符型要使用英文单引号。
Use data2;
SELECT id,name,grade,math FROM t_1 WHERE id = 1 OR id = 3;
注释:
OR 或者
整型不要使用英文单引号。
Use data2;
SELECT name,grade,math AS 数学,chinese AS 语文 FROM t_1 WHERE math = 78.5 OR chinese = -60;
注释:数值型不要使用英文单引号。
Use data2;
SELECT name,grade,math AS 数学,chinese AS 语文 FROM t_1 WHERE math IN (48.5,78.5) OR chinese = 120;
注释: IN 多个等于
Use data2;
SELECT name,grade,math AS 数学,chinese AS 语文 FROM t_1 WHERE name IN ('李小芳','zhuohua') OR chinese = 120;
Use data2;
SELECT name,grade,math AS 数学,chinese AS 语文 FROM t_1 WHERE name IN ('李小芳','zhuohua') AND chinese = 60;
注释: AND 而且
不等于的写法:
Use data2;
SELECT name AS Name,grade AS 班级 FROM t_1 WHERE name != '张大白';
或
SELECT name AS Name,grade AS 班级 FROM t_1 WHERE name <> '张大白';
Use data2;
SELECT name AS Name,grade AS 班级 FROM t_1 WHERE name != 'Zhuohua';
注释:
关键字不区分英文字母大小写。
Use data2;
SELECT name AS Name,grade AS 班级 FROM t_1 WHERE name NOT IN ('李小芳','Zhuohua');
注释:
NOT IN 多个不等于
关键字不区分英文字母大小写。
数值大小比较的写法:(大于)
Use data2;
SELECT name,grade,chinese AS 语文 FROM t_1 WHERE chinese > 108;
数值大小比较的写法:(大于或等于)
Use data2;
SELECT name,grade,chinese AS 语文 FROM t_1 WHERE chinese >= 108;
数值大小比较的写法:(小于)
Use data2;
SELECT name,grade,chinese AS 语文 FROM t_1 WHERE chinese < 108;
数值大小比较的写法:(小于或等于)
Use data2;
SELECT name,grade,chinese AS 语文 FROM t_1 WHERE chinese <= 108;
数值大小比较的写法:(在某个范围之间)
Use data2;
SELECT name,grade,chinese AS 语文 FROM t_1 WHERE chinese BETWEEN 60 AND 130;
LIKE语句:
Use data2;
SELECT name,grade,chinese FROM t_1 WHERE name LIKE '张_白';
注释:一个下划线代表一个字符。
Use data2;
SELECT name,grade,chinese FROM t_1 WHERE name LIKE '张__';
注释:两个下划线代表两个字符,以此类推。
Use data2;
SELECT name,grade,chinese FROM t_1 WHERE name LIKE '%Zhuo%';
注释:
% 代表任意多个字符。
关键字不区分英文字母大小写。
Use data2;
SELECT name,age FROM t_1 WHERE age LIKE '1[2-3]';
注释:第一个字符必须为1,第二个数字在2至3的范围内。
Use data2;
SELECT name,age FROM t_1 WHERE age LIKE '1[^2-3]';
注释:第一个字符必须为1,第二个数字不在2至3的范围内。
Use data2;
SELECT name,age FROM t_1 WHERE name LIKE 'Zhuohu[a-d]';
注释:
前面的字符必须为Zhuohu,最后一个字符在a至d的范围内。
关键字不区分英文字母大小写。
Use data2;
SELECT name,age FROM t_1 WHERE name LIKE 'Zhuohu[^b-d]';
注释:
前面的字符必须为Zhuohu,最后一个字符不在b至d的范围内。
关键字不区分英文字母大小写。
查询中使用加法:(数据实际上没有更改)
Use data2;
SELECT name,grade,chinese+math AS 总成绩 FROM t_1;
查询中使用减法:(数据实际上没有更改)
Use data2;
SELECT name,grade,chinese-math AS 新值 FROM t_1;
查询中使用乘法:(数据实际上没有更改)
Use data2;
SELECT name,grade,chinese*2.5 AS 新值 FROM t_1;
查询中使用除法:(数据实际上没有更改)
Use data2;
SELECT name,grade,chinese/2 AS 新值 FROM t_1;
查询中使用加法与乘法:(数据实际上没有更改)
Use data2;
SELECT name,grade,chinese + math * 2 AS 总成绩 FROM t_1;
注释:默认是先乘除,后加减。
查询中使用加法与乘法:(加上小括号)
Use data2;
SELECT name,grade,(chinese + math) * 2 AS 总成绩 FROM t_1;
注释:可以在小括号里再使用小括号。
聚合函数有5个,分别是COUNT()、SUM()、AVG()、MAX()、MIN()。
求数量:
Use data2;
SELECT COUNT(*) AS 记录数量 FROM t_1;
求和:
Use data2;
SELECT SUM(math) AS 数学总成绩 FROM t_1;
求平均值:
Use data2;
SELECT AVG(math) AS 数学平均成绩 FROM t_1;
求最大值:
Use data2;
SELECT MAX(math) AS 数学最高成绩 FROM t_1;
求最小值:
Use data2;
SELECT MIN(math) AS 数学最低成绩 FROM t_1;
按字段grade进行分组后,再求字段math的最小值:
Use data2;
SELECT grade,MIN(math) AS 各班级的数学最低成绩 FROM t_1 GROUP BY grade;
按字段grade进行分组后,再求字段math的最小值,最后以字段math的最小值进行排序:
Use data2;
SELECT grade,MIN(math) AS 各班级的数学最低成绩 FROM t_1 GROUP BY grade ORDER BY MIN(math) DESC;
分组再加条件:( group by + having )
Use data2;
select grade as 最低数学成绩大于或等于70的班级,min(math) AS 各班级的数学最低成绩 from t_1 group by grade having min(math) >= 70;
分组再加条件:( group by + having )
Use data2;
select grade,min(math) as 三年二班的数学最低成绩 from t_1 group by grade having grade = '三年二班';
更改记录:(假如匹配条件,会一次性更改多条记录)
Use data2;
UPDATE t_1 SET sex = '男' WHERE name = 'Zhuohua';
SELECT name,sex FROM t_1;
注释:关键字不区分英文字母大小写。
更改记录:(可以一次性更改同一条记录中的多个字段的内容)
Use data2;
UPDATE t_1 SET chinese = 66,sex = '男' WHERE name LIKE '李%';
SELECT * FROM t_1 WHERE name like '李__';
给字段的值加大:(数据实际上更改了)
Use data2;
UPDATE t_1 SET math = math + 10 WHERE grade = '三年二班';
SELECT * FROM t_1 WHERE grade = '三年二班';
给字段的值减小:(数据实际上更改了)
Use data2;
UPDATE t_1 SET math = math - 10.5 WHERE grade = '三年二班';
SELECT * FROM t_1 WHERE grade = '三年二班';
可以使用乘法:(数据实际上更改了)
Use data2;
UPDATE t_1 SET math = math * 2 WHERE grade = '三年二班';
SELECT * FROM t_1 WHERE grade = '三年二班';
也可以使用除法:(数据实际上更改了)
Use data2;
UPDATE t_1 SET math = math / 2 WHERE grade = '三年二班';
SELECT * FROM t_1 WHERE grade = '三年二班';
删除记录:(假如匹配条件,会一次性删除多条记录)
Use data2;
DELETE FROM t_1 WHERE chinese = 66;
SELECT * FROM t_1;
删除记录:
Use data2;
DELETE FROM t_1 WHERE address IN ('广州市','珠海市');
SELECT * FROM t_1;
删除记录:
Use data2;
DELETE FROM t_1 WHERE name like '李__' or name like 'Zhuo%';
SELECT * FROM t_1;
注释:关键字不区分英文字母大小写。
######
清空指定的表中的所有数据:(字段“id”会从1重新开始)
Use data2;
TRUNCATE TABLE t_1;
删除指定的表:
Use data2;
DROP TABLE t_1;
删除指定的库:
DROP DATABASE data2;
MSSQL的字段类型:
- int 整型 可以存储 -21亿 到 21亿 之间的整数
- smallint 整型 可以存储 -32768 到 32767 之间的整数
- tinyint 整型 可以存储 0 到 255 之间的整数
- datetime 日期时间型 格式为 yyyy-mm-dd hh:mm:ss.000
- float 数值型 可以存储15个有效位数,可以有小数,正负都可以的
- decimal(p, s) 数值型 p指的是有效位数(最小为1,最大为38) s指的是小数位数( 0 <= s < p ) 整数位数为p-s ,正负都可以的
- numeric(p, s) 数值型 p指的是有效位数(最小为1,最大为38) s指的是小数位数( 0 <= s < p ) 整数位数为p-s ,正负都可以的
- nvarchar 字符型 可以存储4000个任意字符
- varchar 字符型 可以存储8000个任意字符
- ntext 字符型 可以存储将近10亿个任意字符
- text 字符型 可以存储将近20亿个任意字符
复制代码
相关文章:
MSSQL的SQL语句(日期时间)
MSSQL的SQL语句(多表交叉查询)
MSSQL2008R2的数据库份的创建、分离、附加、删除
Zabbix5.0.12_调用Python3脚本监控Windows下的MSSQL
MySQL的SQL语句 |