标题Sqlserver 基础笔记
Sql 是结构化查询语言(Structured Query Language),是关系型数据库的标准查询语言;
-
为何要使用SQL?
为了用户脱离SSMS(数据库管理工具)使用数据库,方便应用程序与数据库打交道
-
何时使用?
-
所有对SQL Server执行所有的操作都可以
-
程序中的增删改查
-
-
如何使用?
通过数据库操作语言(DDL,DML,DCL,DQL)
-
T-SQL :Transact-SQL
T-SQL是SQL的扩展集
对功能进行了扩充:如变量说明、流程控制、功能函数(编程) -
T-SQL的组成:
-
DML-- 数据操作语言
INSERT 语句 Update 语句 Delete 语句
-
DDL–数据定义语言
以CREATE或DROP开头的命令,例如建立数据库、数据库对象定义等 CREATE TABLE、CREATE VIEW及DROP TABLE等
-
DQL ---- 数据查询语言
对数据库中的数据进行查询 Select 语句
-
DCL-- 数据控制语言(权限管理等)
控制数据库组件的存取许可、存取权限等 GRANT、REVOKE等
-
-
SQL设计规范
- 采用有意义的命名(数据库、表和字段等)
- 注意字段名不与保留字、数据库系统或者常用的访问方法冲突
- 据表应该避免可为空的列
- 保持不同数据表中相同意义的列名和类型一致
- 据表应该避免可为空的列
- 注意字段名不与保留字、数据库系统或者常用的访问方法冲突
- 采用有意义的命名(数据库、表和字段等)
-
命名规范:
-
使用帕斯卡(Pascal Case)命名
-
命名中的每一个逻辑断点(单词)都用大写字母标记
-
名称应有意义,建议选择产品或项目的名称命名
例如,学校管理系统对应的数据名为SchoolDB
-
避免使用特殊字符,如数字,空格之类
-
避免使用缩写
-
避免中文拼音
-
-
注释:
-
单行注释 (–)
use SchoolDB --这时候单行注释
-
多行注释 (/* 这是多行注释 */)
/* 这是多行注释 中间的内容不会被执行 */
-
-
插入记录到数据库表中:
语法:
- 无需指定列名,直接提供要插入的数据值,在执行插入过程中,插入的数据值按照表中列的顺序进行一一匹配
insert [into] [表名] values (对应的值列表)
insert into card values ('0001','123456',100,'admin');
-
需要指定列名和插入的值,在执行插入过程中,数据值与指定的列名将一一匹配
-
部分插入: insert into [表名] (字段列表) values (字段1值,字段2…)
-
insert into card (ID,Password,Balance,UserName) values ('0002','123456',100,'admin')
-
一次向表中插入多条记录语法:
INSERT [INTO] tablename (column1,column2,column3…)
VALUES (value1,value2,value3…),
(value4,value5,value6…),
(value7,value8,value9…)…如一次向表中添加3条记录,用()分开,用分号间隔
insert into card values('0001','123456',100,'张三'), ('0002','123456',100,'李四'), ('0003','123456',100,'王五')
-
注意事项:
-
字段数量与值的数量要一致
-
数据类型要一致
-
字段与对应的值顺序要一致
-
不可为标识列指定值,如果表有标识列,只需要除标识列以外的其他列有数据即可;
-
非空列必须要输入值
-
插入的数据项,要求符合检查约束的要求
-
具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值,也可以不管
例如,某字段age 默认为0,则以下2条语句的效果相同
insert into tablename (StudentName,Age) values ('张三',DEFAULT); --age 会采用默认值(Default) insert into TableName (StudentName) values ('张三'); -- age 默认为0
-
-
更新数据库记录
-
语法结构:
UPDATE tablename SET column1=value1,column2=value2,column3=value3 [ where 指定条件]
- 全表修改,如将所有学生的性别修改为“男”,年龄修改为16
update Student set gender='男',age = 16;
- 修改指定条件的学生信息
例如:将学生表中,姓名为张三的同学,年龄修改为17
update Student set age = 17 where StudentName ='张三';
-
WHERE条件语句后面可以存在多个过滤条件。“并且”关系使用AND关键字连接;“或”关系使用OR关键字连接
判断是否为NULL,可以使用IS NULL关键字判断判读null 可以使用 is null,如将身份证号码为null的记录修改为0000-0000-0000-0000-00update Student set idcard = '0000-0000-0000-0000-00' where idcard is null;
-
-
删除记录:
语法:
Delete from TableName [where 删除条件]
-
删除所有记录:
delete from tablename; --删除表中的所有记录(删除标记)
-
删除指定条件的记录;
delete from tablename where StudentName ='张三'
清空表中的记录:
语法:
Truncate table 表名 清空记录,标识回到初始化状态
truncate table student; -- 清空student表中的所有记录
delete 与 truncate的区别:
- delete只是做删除标记,并没有真正的删除记录,还占空间;
- truncate清除记录,速度更快
注:删除操作不可恢复,删除数据前务必谨慎
😆
-
- 无需指定列名,直接提供要插入的数据值,在执行插入过程中,插入的数据值按照表中列的顺序进行一一匹配