SQL Server 笔记
1、将一张表的部分字段传入另一张表(未建立),同时创建这张表
必须选整张表,不能只选部分字段,
可以用FROM嵌套语句实现选取原表部分字段
SELECT * INTO 库名.新表名
FROM ( SELECT ... FROM 库名.原表名) 临时表名;
2、在表中添加新的字段/删除字段/更新字段
更新时,”=“只能一一对应,可以用WHERE语句用唯一标识值(eg.id)进行比对,一条一条选入
--插入
ALTER TABLE ADD 字段名 类型 [特殊规范(NULL,IDENTITY...)]
--删除
ALTER TABLE 表名 DROP COLUMN 字段名
--更新
UPDATE 表名 SET 列名=数值
3、取INT型数据中的几位
CAST()函数转换类型
CAST (字段名 AS 要转换的类型)
先转换为字符型CHAR,用SUBSTRING()函数截取后,在转换回整数型INT
CAST (
SUBSTRING (CAST(CANTON_ID AS CHAR), 1, 6) AS INT
)
4、默认值
(1)SELECT临时表默认值
SELECT '默认值' AS 字段名
(2)CREATE创表时设置默认值
CREATE TABLE 表名
(字段名 字段类型 DEFAULT('默认值'))
5、JOIN
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
full join:外连接,返回两个表中的行:left join + right join。
cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
具体例子
6、查找id以1024开头的记录
SELECT * FROM 表名 WHERE id='1024%'
7、插入/更新记录
--插入
insert INTO 表明(字段名,...)
VALUES('值1','值2',...);
--更新
update 表名 set 字段名='值'
where 更新条件
8、系统表
--系统表的字段表
select * from sys.columns;
--
select * from sys.tables;
--
select * from sys.types;
字段表:
object_id 对象的ID
name 字段名称
column_id 字段排序
system_type_id 字段的类型ID
user_type_id 字段的类型ID
max_length 最大长度
is_nullable 是否可以为空,1可为空,0不可为空
is_identity 是否为自增列,1是,0不是
下一篇: SQL Server 根据另一张表更新表