[SQL基础]入门

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

目录

什么是SQL?

SQL能做什么?

RDBMS

SQL常见数据类型

SQL语法

什么是SQL?

结构化查询语言(Structured Query Language)简称SQL。

结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。

结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

SQL能做什么?

  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

RDBMS

RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。

SQL常见数据类型

分类

备注和说明

类型

说明

二进制数据类型

存储非子符和文本的数据

Image

可用来存储图像

文本数据类型

字符数据包括任意字母、符号或数字字符的组合

Char,8000

固定长度的非   Unicode   字符数据。固定长度的字符串相对于可变长度的字符串来说效率要高一些,在数据长度固定的情况下优先选用固定长度,省去了计算长度的过程,提高效率

Varchar,8000

可变长度非   Unicode   数据

Nchar,4000

固定长度的   Unicode   数据

Nvarchar,4000

可变长度   Unicode   数据

Text

varchar(max)

存储长文本信息(指针,2G)

varchar(max),大字符串类型可以保存非常多的字符,但是对于这种类型的数据DBMS经常将它们保存到单独的空间中,这就导致了数据的保存和加载速度比较慢,因此除非必要,否则不要使用。

Ntext

nvarchar(max)

Nvarchar(max)代替

日期和时间

日期和时间在单引号内输入

Datetime  

日期和时间

数字数据

该数据仅包含数字,包括正数、负数以及分数

int

smallint

整数

float

real

数字

货币数据类型

用于十进制货币值,money   和   smallmoney   数据类型精确到它们所代表的货币单位的万分之一。  

 

Money(C#:double)

 

Bit数据类型

表示是/否的数据

Bit

存储布尔数据类型(1-true 0-false)

 SQL语法

SQL主要分为:DDL(数据定义语言,建表、建库等语句。)、DML(数据操作语言)和DCL (数据库控制语言) 。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML, GRANT 授权、REVOKE 取消授权属于DCL。

T-SQL创建数据库的语法

复制代码
1 CREATE  DATABASE  数据库名
2  ON [PRIMARY]
3  (
4   <数据文件参数> [,…n]
5  )
6  [LOG ON] 
7  (
8   <日志文件参数> [,…n]
9  )
复制代码

实例: 

复制代码
 1 CREATE DATABASE WolfyDB
 2 ON PRIMARY --默认属于Primary主文件组,可省略
 3 (
 4 NAME='WolfyDB',--主数据文件的逻辑名
 5 FILENAME='F:\Database\WolfyDB_data.mdf',--主数据文件的物理名
 6 SIZE=5MB,--主数据文件初始大小,MS SERVER2012最低大小5M
 7 MAXSIZE=10MB,--主数据文件的最大的容量
 8 FILEGROWTH=10%--主数据文件的增长率
 9 )
10 LOG ON 
11 (
12 NAME ='WolfyDBLog',--不能和数据文件的逻辑名相同,否则报错
13 FILENAME='F:\Database\WolfyDB_log.ldf',
14 SIZE=5MB,--日志文件初始大小
15 MAXSIZE=20MB,
16 FILEGROWTH=1MB 
17 )
18 GO
复制代码

T-SQL创建数据表的语法

复制代码
1 CREATE TABLE 表名称
2 (
3 列名称1 数据类型,
4 列名称2 数据类型,
5 列名称3 数据类型,
6 ....
7 )
复制代码

实例:

复制代码
1 USE wolfydb
2 CREATE TABLE users
3 (
4 id INT IDENTITY(1,1) PRIMARY KEY,
5 NAME NVARCHAR(20) NOT NULL,
6 pwd VARCHAR(16) NOT NULL,
7 isLogin BIT NOT NULL DEFAULT(0)
8 )
9 GO
复制代码

其中id为主键,并且自增。

主键:就是数据行的唯一标识。不会出现重复数据的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键。

主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号,银行帐号等。逻辑主键是使用没有任何业务意义的字段做主键,完全是给程序看的,业务人员不会看的数据。因为很难保证 业务主键不会重复(身份证重复)、不会变化(帐号升级),因此推荐使用逻辑主键。

主键的作用:唯一标识表中的一条记录。

选择多列同时作为一个主键->组合主键(复合主键)。(一般不建议采用)

尽量选择单列作为主键:

1、必须唯一(不能重复)

2、该列不能为Null

3、比较稳定的列(不经常更新,最好是建好以后再也不更新。)

4、选择主键的列的时候,推荐使用“逻辑主键”(例如:自动编号,guid等。)不推荐“业务主键”(选择有实际意义的列作为主键(例如:身份证号,工号,学号等))

go语句的作用:

向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。

将SQL语句分段执行。

GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。

SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席会话或脚本开始后输入的所有语句组成。

GO 命令和 Transact-SQL 语句不能在同一行中。但在 GO 命令行中可包含注释。

用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。

 删除数据库,数据表:

1 USE WolfyDB;
2 DROP TABLE users--删除表
3 DROP DATABASE  WolfyDB --删除数据库

数据库约束

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制。

约束类型:

主键约束(PK)Primary Key Constraint 唯一且不为空

唯一约束(UQ)Unique Constraint唯一,允许为空,但只能出现一次。

默认约束(DF)Default Constraint默认值

检查约束(CK)Check Constraint范围以及格式限制

外键约束(FK)Foreign key Constraint表关系保证外键值来源于主键表。(增加外键约束时,设置级联更新,级联删除)

[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]

当创建了主外键关系后,如果在外键表中有任何记录引用了主键表中的某条记录,则在主键表中不能删除该记录。同时主键表也不能删除。

实例:

复制代码
 1 USE WolfyDB;
 2 --新建一张表:员工信息表
 3 create table Employees
 4 (
 5     EmpId int identity(1,1),
 6     EmpName varchar(50),
 7     EmpGender char(2),
 8     EmpAge int,
 9     EmpEmail varchar(100),
10     EmpAddress varchar(500)
11 )
12 create table Department
13 (
14     DepId int identity(1,1) primary key,
15     DepName varchar(50) unique not null    
16 )
17 --============手动增加约束==========
18 --手动删除一列(删除EmpAddress列)
19 alter table Employees drop column EmpAddress
20 --手动增加一列(增加一列EmpAddr varchar(1000))
21 alter table Employees add EmpAddr11 varchar(500),AA int ,bb varchar(10)
22 --手动修改一下EmpEmail的数据类型(varchar(200))
23 alter table Employees alter column EmpAddr varchar(1000)
24 --为EmpId增加一个主键约束
25 alter table Employees add constraint PK_EmpId primary key(EmpId)
26 --非空约束,为EmpName增加一个非空约束
27 alter table Employees alter column EmpName varchar(50) not  null
28 --为EmpName增加一个唯一约束
29 alter table Employees add constraint UQ_EmpName unique(EmpName)
30 --为性别增加一个默认约束,默认为'男'
31 alter table Employees add constraint DF_EmpGender default('') for EmpGender
32 --为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。
33 alter table Employees add constraint CK_EmpAge check(EmpAge >=0 and EmpAge<=120)
34 --创建一个部门表,然后为Employee表增加一个DepId列。
35 alter table Employees add DeptId int
36 --增加外键约束
37 alter table Employees add constraint FK_DeptId_DepId foreign key(DeptId) references Department(DepId)
38 --用一条语句为表增加多个约束。 
39 alter table Employees add 
40 constraint PK_Employees_EmpId primary key(EmpId),--增加主键约束
41 constraint UQ_Employees_EmpName unique(EmpName),--增加唯一约束
42 constraint DF_Employees_EmpGender default('') for EmpGender,--默认约束
43 constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120),
44 constraint FK_Employees_Department_DepId foreign key(DepId) references Department(DepId)
45 --删除约束
46 alter table Employees drop constraint 
47 CK_Employees_EmpAge,
48 FK_Employees_DepId
49 
50 --删除原有的外键约束
51 alter table Employees drop constraint FK_Employees_Department_DepId
52 
53 --设置主外键关系的级联删除
54 alter table Employees add constraint FK_Employees_Department_DepId
55 foreign key(DepId) references Department(DepId)
56 on delete CASCADE --设置级联删除
57 --on update cascade --设置级联更新
复制代码

总结

这里总结了,sql的基础内容,隔了很久了,有写东西有点模糊了。

参考资料:

http://www.w3school.com.cn/sql/

黑马培训班ppt(网上搜集的)

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3561730.html
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
21天前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
46 6
|
2月前
|
SQL 存储 关系型数据库
数据库SQL入门指南
数据库SQL入门指南
|
2月前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
66 0
|
2月前
|
SQL 关系型数据库 数据挖掘
SQL 基础入门简直太重要啦!从零开始,带你轻松掌握数据查询与操作,开启数据世界大门!
【8月更文挑战第31天】在数字化时代,数据无处不在,而 SQL(Structured Query Language)则是开启数据宝藏的关键钥匙。无论你是编程新手还是数据处理爱好者,掌握 SQL 都能帮助你轻松提取和分析信息。SQL 简洁而强大,像一位魔法师,能从庞大数据库中迅速找到所需数据。从查询、条件筛选到排序、分组,SQL 功能多样,还能插入、更新和删除数据,助你在数据海洋中畅游无阻。
36 0
|
2月前
|
SQL 数据库 索引
SQL语言入门:如何表达你的数据需求
在数据库的世界里,SQL(Structured Query Language)是一种至关重要的语言,它允许用户与数据库进行交互,执行数据的查询、更新、插入和删除等操作
|
3月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
46 2
|
4月前
|
SQL 存储 安全
SQL入门与进阶:数据库查询与管理的实用指南
一、引言 在数字化时代,数据库已经成为各行各业存储、管理和分析数据的关键基础设施
|
5月前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
137 9
SQL Server语法基础:入门到精通
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库数据模型概念入门及基础的SQL语句2024
MySQL数据库数据模型概念入门及基础的SQL语句2024
36 0
|
4月前
|
SQL 数据挖掘 数据库
深入理解SQL从入门到避坑
深入理解SQL从入门到避坑
下一篇
无影云桌面