修改表结构
--修改数据表 ALTER TABLE 表名
SQL代码的书写不考虑顺序,但是批量执行代码需要要考虑好先执行哪些,后执行哪些
在修改数据表结构时,必须要明确:修改的字段中是否存在数据,例如:如果需要更改一个字段的约束为非空约束,那么首先要保证该字段中已有的数据没有NULL值。
因此在做程序之前数据库分析,设计是至关重要
修改字段数据类型
ALTER TABLE 表名 ALTER COLUMN 字段名 目标数据类型
添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [字段的特征]
删除字段
SQL中删除语法使用DROP关键字,使用DROP关键字一定要谨慎,DROP掉的数据无法恢复
ALTER TABLE 表名 DROP COLUMN 字段名
修改字段特征(约束)
添加主键约束
ALTER TABLE 表名 ADD CONSTRAINT 主键名(PK_ID) PRIMARY KEY (字段名[ID])
添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名(UQ_Tel) UNIQUE (字段名[TEL])
添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名(DF_Address) DEFAULT (默认值['地址不详']) FOR 字段名[ADDRESS]
添加检查约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名(CK_SEX) CHECK (检查的表达式[SEX IN ('男','女')]) --ADD CONSTRAINT CK_SEX CHECK (SEX='男' or SEX='女')
添加非空约束
ALTER TABLE 表名 ALTER COLUMN 字段名(ID) 字段数据类型(INT) NOT NULL
添加外键约束
注意:添加外键时,必须先设置引用表中的引用字段为主键
ALTER TABLE 表名 ADD CONSTRAINT 外键名(FK_SUBID) FOREIGN KEY (字段名[SubID]) REFERENCES 引用表名[Subject](引用字段名[subid])
数据的操作
添加单行数据
INSERT [INTO] 目标表名 [(字段)] VALUES (字段对应的数据) INSERT INTO Teacher([NAME],TEL,SUBID) VALUES ('张三',110,1)
使用这种插入语法必须要注意:必须要明确这张表中具有非空约束的字段是哪 些
注意:
-
列名的个数必须和数据值对应
-
非数值类型的数据,必须放在单引号内
-
数据值的类型必须和定义的字段的数据类型保持一致
-
添加数据一定要注意数据表中的字段的各种约束问题,违反约束添加失败
-
这种添加数据的语法是只能添加一行数据
INSERT Teacher VALUES ('李四',1111111,2)
使用这种插入语法必须要注意:这张表里面的所有字段都必须为其提供对应的 数据值除过自增列之外,而且数据值的顺序必须保持和数据表字段的顺序一致
添加多行数据
INSERT INTO [SUBJECT] SELECT '.NET' UNION SELECT 'WEB' UNION SELECT 'JAVA' UNION SELECT 'Python'
简单查询数据
SELECT <字段名> FROM 表名 [WHERE <查询条件>] SELECT ID,[NAME] FROM TEACHER
注意:
-
在查询表的语法中不提供查询条件,则默认是查询整张表
-
在查询表的语法中提供了表中已有的部分字段,则查询结果中只会出现语法中提供的字段对应的数据,而且顺序和语法中字段的顺序一致
-
如果想要查询整张表的数据,则直接将字段名替换成一个“*”即可
SELECT * FROM TEACHER
--根据条件查询 SELECT * FROM TEACHER WHERE ID=10010
修改数据
UPDATE 表名 SET <字段名1=数据值1,字段名2=数据值2,……> [WHERE<条件>] UPDATE TEACHER SET SUBID=6 WHERE ID=10002
注意:
修改语法中的条件可以不提供,如果不提供条件则默认将目标表中的指定的这个字段的所有数据全部进行修改
具体的修改方案可以根据实际情况的不同,去书写SQL语句
UPDATE TEACHER SET SUBID=6 WHERE ID=10002 UPDATE TEACHER SET SUBID=1,TEL=112233 WHERE ID=10000 UPDATE TEACHER SET SUBID=2 WHERE ID=10001 UPDATE TEACHER SET SUBID=3 WHERE ID=10009 UPDATE TEACHER SET SUBID=4 WHERE ID=10010 OR ID=10011
删除数据
DELETE FROM 表名 [WHERE 条件] DELETE FROM TEACHER WHERE ID=10011
注意:
-
删除表中的数据不等于删除整张表所以删除不能用DROP
-
如果使用DELETE删除语法不提供删除条件则默认删除整张表中的数据
-
使用DELETE语法删除的数据如果有自增字段,那么被删除的自增数据不会再次被填充
还原数据表
TRUNCATE TABLE 表名 TRUNCATE TABLE TEACHER
注意:
-
清空数据表中的数据可以使用
DELETE FROM 表名 或者 TRUNCATE TABLE 表名
DELETE整张表中的数据相当于将表中的数据直接全部删除,自增量属于表字段的特征不会被改变
TRUNCATE还原整张表,相当于将表格式化清空,里面的所有数据被清除,表的所有字段特征属性还原,数据表恢复到创建数据时的状态
-
以上的两种清空数据表中的数据都不会影响数据表对象本身,而使用DROP删除表则是将数据库中的这个数据表对象直接 删除不可恢复
-
TRUNCATE比DELETE执行速度快,TRUNCATE比DELETE使用的系统资源和事务日志资源更少
总结
使用数据库管理系统软件操作数据基本上划分为两种操作:添加数据和查询数据