SQL总结(四)编辑类
SQL总结(四)编辑类
应有尽有
1、数据库
创建数据库语法:
CREATE DATABASE database_name
1)创建测试库
CREATE DATABASE TestDB
2)使用库
USE TestDB
3)删除库
DROP DATABASE TestDB
2、表
1)创建用户信息表,包括ID、姓名、年龄、专业ID、所在城市
CREATE TABLE Students(
ID int,
Name nvarchar(20),
Age int,
MajorID int,
City nvarchar(50)
)
2)更新表
- 添加字段
语法:
ALTER TABLE table_name
ADD column_name datatype
学生信息表增加年纪字段
ALTER TABLE Students ADD Grade int
- 修改字段
语法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
实例:将Grade字段,int改为nvarchar
ALTER TABLE Students ALTER COLUMN Grade nvarchar(20)
- 删除字段
语法:
ALTER TABLE table_name
DROP COLUMN column_name
实例:删除学生信息表中的Grade字段
ALTER TABLE Students DROP COLUMN Grade
3)删除表
删除学生信息表:
DROP TABLE Students
3、约束(Constraints)
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
主要有以下几种约束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
1)不可空(NOT NULL)
约束强制列不接受 NULL 值
2)唯一约束(UNIQUE)
UNIQUE 约束唯一标识数据库表中的每条记录
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证.
创建表时指定
CREATE TABLE Students(
ID int primary key not null,
Name nvarchar(50) UNIQUE,
Age int,
City nvarchar(50),
MajorID int
)
但是这样UNIQUE约束名是按规则默认的,我们无法确认,不便于后续修改。
需在创建时指定约束名称,当然可以同时多多列建立唯一约束。建议创建表后添加约束。
(1)创建学生表时,指定ID和Name唯一约束
CREATE TABLE Students(
ID int not null,
Name nvarchar(50),
Age int,
City nvarchar(50),
MajorID int,
CONSTRAINT UK_Students_ID_And_Name UNIQUE (ID,Name)
)
(2)为学生的姓名添加唯一约束
ALTER TABLE Students ADD CONSTRAINT UK_Students_Name UNIQUE(Name)
(3)删除学生姓名唯一约束
ALTER TABLE Students DROP CONSTRAINT UK_Students_Name
3)主键(PRIMARY KEY)
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
规则:
- 主键必须包含唯一的值。
- 主键列不能包含 NULL 值。
- 每个表都应该有一个主键,并且每个表只能有一个主键。
其使用方法与UNIQUE一样,这里只说几个简单例子
(1)指定学生ID为主键
ALTER TABLE Students ADD CONSTRAINT PK_Students_ID PRIMARY KEY(ID)
(2)删除学生ID主键
ALTER TABLE Students DROP CONSTRAINT PK_Students_ID
(3)创建学生ID和姓名的联合主键
注意:在创建主键时,一定要保证列有NOT NULL约束
ALTER TABLE Students ADD CONSTRAINT PK_Students_ID_AND_Name PRIMARY KEY(ID,Name)
4)外键(FOREIGN KEY)
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
如:学生信息表中的MajorID即是专业信息表Majors的外键。
(1)学生信息表中的MajorID添加外键约束
ALTER TABLE Students ADD CONSTRAINT FK_Students_MajorID FOREIGN KEY(MajorID) REFERENCES Majors(ID)
(2)删除外键约束
ALTER TABLE Students DROP CONSTRAINT FK_Students_MajorID
5)校验约束(CHECK)
CHECK 约束用于限制列中的值的范围。
(1) 设置学生的名称长度不能少于2
ALTER TABLE Students ADD CONSTRAINT CK_Students_Name CHECK(LEN(Name)>=2)
(2)删除该约束
ALTER TABLE Students DROP CONSTRAINT CK_Students_Name
(3)多列约束,对姓名和年龄添加约束
ALTER TABLE Students ADD CONSTRAINT CK_Students_Name_AND_Age CHECK(LEN(Name)>=2 AND Age>=18)
6)默认值(DEFAULT)
DEFAULT 约束用于向列中插入默认值。
此约束可以直接在创建表时执行。一般改动较小。
(1)建表时指定默认值,指定性别的默认值为0(0代表男,1代表女)
--学生信息表
CREATE TABLE Students(
ID int primary key not null,
Name nvarchar(50),
Age int,
Sex bit DEFAULT(0),
City nvarchar(50),
MajorID int
)
(2)单独语句增加Sex默认值约束
ALTER TABLE Students ADD CONSTRAINT DF_Students_Sex DEFAULT(1) FOR Sex
(3)删除默认值约束
ALTER TABLE Students DROP CONSTRAINT DF_Students_Sex
(4)修改默认值约束,暂时没找到
建议删除后重建。
4、索引
索引类似于书记的目录
索引可以加快查询速度,当然过多的索引会影响数据的更新效率,建议索引建立在那些变化不大且经常查询的列。
1)创建索引
CREATE INDEX 语句用于在表中创建索引。
CREATE UNIQUE INDEX是创建唯一索引,意味着其值唯一。
(1)在学生表的ID上创建索引
CREATE INDEX Index_Student_ID
ON Students (ID)
(2)在学生表的ID上创建唯一索引
CREATE UNIQUE INDEX Index_Student_ID
ON Students (ID)
(3)在学生ID降序创建索引
CREATE UNIQUE INDEX Index_Student_ID
ON Students (ID DESC)
(4)创建多个列联合索引
CREATE INDEX Index_Student_ID_AND_NAME
ON Students(ID,Name)
2)删除索引
语法:
DROP Index TABLE_NAME.INDEX_NAME
如:删除学生表的ID索引
DROP Index Students.Index_Student_ID
5、视图(VIEW)
概念: 是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
1)创建视图,查询所有成年的学生信息
CREATE VIEW V_Adult_Students AS
SELECT ID,Name,Age,City FROM Students WHERE Age>=18
2)删除视图
DROP VIEW V_Adult_Students
3)更新视图,暂时没有直接方法,建议删除重建。
对于记录
1、插入
语法:
INSERT INTO 表名称 VALUES (值1, 值2,....)
指定所要插入数据的列(推荐):
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
实例:增加学生信息
INSERT INTO Students VALUES(2,'Lucy',17,'BeiJing','')
建议使用,指定列。
INSERT INTO Students(ID,Name,Age,City) VALUES(1,'Tom',19,'BeiJing')
2、更新
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
实例:
更新Lucy的年龄
UPDATE Students SET Age=18 WHERE Name='Lucy'
更新多列的值:
UPDATE Students SET Age=18,City='ShangHai' WHERE Name='Lucy'
3、删除
DELETE 语句用于删除表中的行。
语法:
DELETE FROM 表名称 WHERE 列名称 = 值
实例:
1)删除Lucy的学生信息
DELETE FROM Students WHERE Name='Lucy'
2)删除所有学生信息
DELETE FROM Students
SQL总结(四)编辑类的更多相关文章
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- SQL点滴14—编辑数据
原文:SQL点滴14-编辑数据 数据库中的数据编辑是我们遇到的最频繁的工作,这一个随笔中我来总结一下最常用的数据编辑. select into 经常遇到一种情况是,我们希望创建一个新表,表中的数据来源 ...
- SQL的四种连接
SQL的四种连接-内连接.左外连接.右外连接.全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图 ...
- [Effective Java]第四章 类和接口
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- .NET在EF中使用sql,用动态类吧!
.NET在EF中使用sql,用动态类吧! 前言 在.NET中使用Entity Framework能快速.方便地结合LINQ来对数据库进行一系列的增删改查操作.但是由于EF根据表达式最后生成通用的sql ...
- SQL的四种语言和数据库范式
1. SQL的四种语言 DDL(Data Definition Language)数据库定义语言 CREATE ALTER DROP TRUNCATE COMMENT RENAME DML(Data ...
- mysql 无法退出sql命令行编辑
mysql 无法退出sql命令行编辑 | ANBOBhttp://www.anbob.com/archives/579.html mysql 无法退出sql命令行编辑 - 码农甲乙丙 - CSDN博客 ...
- delphi RTTI 四 获取类属性列表
delphi RTTI 四 获取类属性列表 GetPropList(btn1.ClassInfo, tkAny, PropList) PropCount := GetTypeData(btn1.Cla ...
- Mybatis——SQL语句构建器类
SQL语句构建器类 问题 Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL语句.这么来做通常是由于SQL语句需要动态来生成-否则可以将它们放到外部文件或者存储过程中.正如你已经看到的 ...
随机推荐
- 网页项目——i家居网站
本文介绍一个网页项目--i家居网站,小妹初来乍到,欢迎大家评论建议O(∩_∩)O~ 详细源代码.各种框架的实现以及素材均已上传百度云,需要的可以下载: 首页展示 用户注册页面 用户登录页面 商家注册页 ...
- 计算机上没有找到was服务
控制面板->程序->打开或关闭windows功能,勾选Microsoft .net framework下的两项.
- BZOJ4049 [Cerc2014] Mountainous landscape
首先对于一个给定的图形,要找到是否存在答案非常简单... 只要维护当然图形的凸包,看一下是否有线段在这条直线上方,直接二分即可,单次询问的时间复杂度$O(logn)$ 现在用线段树维护凸包,即对于一个 ...
- Spring 7大功能模块的作用[转]
核心容器(Spring core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.Spring使用BeanFactory来产生和管理B ...
- get a new level 25 battle pet in about an hour
If you have 2 level 25 pets and any level 1 pet, obviously start with him in your lineup. Defeat all ...
- JavaScript的this用法
1. 全局代码中的this this在全局上下文中,它的值是全局对象本身(Global Object),在浏览器中就是Window Object,如下图示. 看下面几个例子: //Global sc ...
- HDFS中的checkpoint( 检查点 )的问题
1.问题的描述 由于某种原因,需要在原来已经部署了Cloudera CDH集群上重新部署,重新部署之后,启动集群,由于Cloudera Manager 会默认设置dfs.namenode.checkp ...
- python多线程监控指定目录
import win32file import tempfile import threading import win32con import os dirs=["C:\\WINDOWS\ ...
- HOW TO BE SINGLE 最后那段的摘录
我一直在思考我们不得不单身的时间这个时间我们需要擅长一个人独处但是有多少独处的状态是我们想要拥有的呢难道不是件很危险的事情吗当你适应状态并且如鱼得水的时候所以当你安定下来 你就会与某人擦肩而过吗 有些 ...
- 循环数据forin,foreach,for of
最近一直在对数据处理,循环匹配之类的,我的mentor也已经多次指出一个问题,就是在循环里面用if去判断一个数值是否存在的时候,只要找到就要退出,这个时候就要对循环的语法提出了要求: 1.for in ...