数据库基本语法

简介: 数据库基本语法

-- 创建数据库


CREATE DATABASE MySchool    --数据库名称
ON
(
    NAME =N'MySchool_dat',                   -- 数据库文件
    FILENAME =N'C:\MySchool.MDF',            -- 数据库文件保存地址
    SIZE =10MB,                           -- 初始容量大小
    MAXSIZE =UNLIMITED,                   -- 不限制文件增长的最大容量
    FILEGROWTH = 10%,                      --文件自动增长
)
LOG ON
(
    NAME =N'MySchool_log',                   -- 日志文件
    FILENAME =N'C:\MySchool.LDF',            -- 日志文件保存地址
    SIZE =1MB,                               -- 初始容量大小
    MAXSIZE =20MB,                           -- 限制文件增长的最大容量
)
GO     -- 执行


-- 创建数据表(<>:必须,[]:可选)


USE MySchool      -- 使用数据库
CREATE TABLE Students    --数据表名称
(
    -- [列名] [数据类型] 标识列(标识种子,增长量) 设置主键列不能为空
    [StuId] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    -- [列名] [数据类型]     非空
    [StuName] [nvarchar](30) NOT NULL,
    [StuAddress] [nvarchar](100) NULL,
    -- [列名]  [数据类型]   可以为空默认值
    [StuClass] [nvarchar](30) NULL DEFAULT('T0811'),
    [StuEmail] [nvarchar](30) NULL,
    [StuSex] [bit] NULL,
)
GO     -- 执行


-- 使用Insert 插入数据行(<>:必须,[]:可选)


INSERT [INTO] <表名> [列名] VALUES <值列表>
INSERT INTO Students (StuName, StuClass) VALUES ('江流','T0811')


-- 一次插入多行数据


-- 1.InsertSelect


-- 注意:(1) 查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致。


--     (2) 表TongXunLu 必须预先创建好,并且具有姓名,地址,电子邮件三个字段


INSERT INTO TongXunLu (姓名, 地址, 电子邮件)


SELECT StuName, StuAddress, StuEmail


FROM Students


-- 2.SelectInto


-- 注意:这个NewTable 是执行查询语句的时候创建的,不能够预先存在。

SELECT Student.StuName, Student.StuAddress, Student.StuEmail
INTO NewTable
FROM Students


-- 3.Union

INSERT Students (StuName, StuClass, StuSex)
SELECT '钟昌伟', 'T0811', '男' Union
SELECT '谢伟群', 'T0811', '男' Union
SELECT '郑增强', 'T0811', '男' Union
SELECT '吕东涛', 'T0811', '男' Union
SELECT '金桂生', 'T0811', '男' Union
SELECT '余楚锐', 'T0811', '男' Union
SELECT '刘晓胜', 'T0811', '男' Union
SELECT '钟松青', 'T0811', '男' Union
SELECT '陈咏铭', 'T0811', '女'


-- 使用T-SQL 更新数据


UPDATE <表名> SET <列名= 更新值> [WHERE <更新条件>]


UPDATE Students SET StuSex = '男' WHERE StuName = '陈咏铭'


-- 使用T-SQL 删除数据


-- 使用Delete 删除数据


DELETE FROM <表名> [WHERE <删除条件>]


DELETE FROM Students WHERE StuName = '陈咏铭'


-- 使用Truncate Table 删除数据


TRUNCATE TABLE NewTable


-- 使用Select 语句进行查询


SELECT <列名>


FROM <表名>


[WHERE <查询条件表达式>]


[ORDER BY <排序的列名> [ASC 或DESC]]]


-- 1.查询所有的数据行和列


SELECT * FROM Students


-- 2.查询部分行列——条件查询


SELECT StuId, StuName, StuAddress
FROM Students
WHERE StuAddress <> '蓝星'


-- 3.在查询中使用列名


SELECT StuId As 学员编号, StuName As 学员姓名, StuAddress As 学员地址
FROM Students
WHERE StuAddress <> '麻烦星'


-- 字段合并(例子:没有表Employees)

SELECT FirstName+'.'+LastName As '姓名' FROM Employees
SELECT '姓名' = FirstName+'.'+LastName FROM Employees

-- 4.查询空行


SELECT StuName FROM Students WHERE StuEmail IS NULL

-- 5.在查询中使用常量列


SELECT '姓名' = StuName, '地址' = StuAddress, '清华' As '学校名称'
FROM Students


-- 6.查询返回限制的行数(PERCENT:百分比、百分数)

SELECT TOP 20 PERCENT StuName,StuAddress
FROM Students WHERE StuSex = 0


-- 查询排序



SELECT <列名>


FROM <表名>


[WHERE <查询条件表达式>]


[ORDER BY <排序的列名> [ASC 或DESC]]] -- ASC:升序,DESC:降序


-- 在查询中使用函数(略)


-- 通配符


'_'    一个字符


'%'    任意长度的字符串


[]     括号中所指定范围内的一个字符


[^]    不在括号中所指定范围内的任意一个字符    


-- 使用Like 进行模糊查询


SELECT * FROM Students WHEREStuName LIKE '张%'      -- 查询姓张的学员
SELECT * FROM Students WHEREStuName LIKE '[^高]%'   -- 查询不姓高的学员


-- 使用Between 在某个范围内进行查询

SELECT * FROM Score WHEREScore BETWEEN 60 AND80       -- 查询分数在至之间的学员
SELECT * FROM Score WHEREScore NOT BETWEEN60 AND 80   -- 查询分数不在至之间的学员


-- 使用In 在列举值内进行查询


-- 查询出符合列举值内的项

SELECT StuName As '学员' FROM Students
WHERE StuAddress IN ('北京', '广州', '上海')
ORDER BY StuAddress

-- 查询出不在列举值内的项

SELECT StuName As '学员' FROM Students
WHERE StuAddress NOT IN ('北京', '广州', '上海')
ORDER BY StuAddress


-- SQL Server 中的聚合函数


-- 1.Sum 总和


-- 2.Avg 平均值


-- 3.Max和Min 最大值和最小值


-- 4.Count 计数(非空)


-- 使用Group By 进行分组查询


SELECT CourseId, AVG(Score) As 课程平均成绩
FROM Score
Group By CourseId

-- 使用Having 子句进行分组筛选

SELECT StuId As 学员编号, CourseId As 内部测试, AVG(Score) As 内部测试平均成绩
FROM Score
Group By StuId, CourseId
Having COUNT(Score)>1

-- 关键字使用顺序:WHERE > Group By > Having >ORDER BY


-- 多表联接查询


-- 内联接查询


-- 1.在Where 子句中指定联接条件

SELECT Students.StuName, Score.CourseId, Score.Score
FROM Students, Score
WHERE Students.SCode = Score.StudentId


-- 2.在From 子句中使用Join……On

SELECT S.StuName, C.CourseId, C.Score
FROM Students As S INNER JOIN Score As C
ON (S.SCode = C.StudentId)

-- 外联接查询


-- 左外联接查询

SELECT Students.StuName, Score.CourseId, Score.Score
FROM Students As S
LEFT OUTER JOIN Score As C ON (S.SCode = C.StudentId)

-- 右外联接查询

SELECT S.StuName, C.CourseId, C.Score
FROM Students As S
RIGHT OUTER JOIN Score As C ON (S.SCode = C.StudentId)

-- 完全联接


-- 交叉联接

目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
81 0
|
2月前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
2月前
|
自然语言处理 关系型数据库 MySQL
MySQL数据库使用Match语法需要安装什么插件吗?
【10月更文挑战第1天】MySQL数据库使用Match语法需要安装什么插件吗?
79 0
|
7月前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
105 0
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
474 0
|
6月前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL数据库的字符串拼接语法使用说明
【6月更文挑战第11天】PostgreSQL数据库的字符串拼接语法使用说明
640 1
|
7月前
|
SQL 存储 数据库
SQL数据库基础语法-增删改
SQL数据库基础语法-增删改
SQL数据库基础语法-增删改
|
6月前
|
SQL 存储 关系型数据库
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
93 3
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
74 2