SQL学习 小知识点(一)
这是我在做实验的时候总结的,随着学习可能会做更多的小总结
ssms上面把所有代码写下来后一块执行是行不通的(极大可能会报错),推测可能是因为ssms先对代码的语法进行了检查。 ——My experience
alter命令修改column属性为not null
alter table table_name
alter column column_name column_type NOT NULL;
alter命令向表中添加column
alter table table_name
add column_name column_type(max);
alter修改column为primary key
alter table table_name add constraint (外)键名 primary key (column_name);
alter修改column为foreign key
这个就和上面的修改为主键的命令类似了
alter table table_name
add constraint 键名 foreign key (column_name) references 参照表名(column_name);
alter删除列
alter table 表名 drop column 列名;
sqlserver重命名表名
EXEC sp_rename 原表名, 新表名;
sqlserver重命名列名
exec sp_rename 'tablename.ColumnName', 'NewColumnName', 'column'
例如:
EXEC sp_rename 'employ.term', 'term(天)', 'column';
添加具有唯一性的列
ALTER TABLE table_name
ADD column_name type(max) UNIQUE(column_name);
修改列使其具有唯一性
ALTER TABLE table_name
ADD CONSTRAINT 约束名 UNIQUE (column_name,column_name);
删除表中某行(delete & where)
delete from table_name
where a_column_name = column_name_value;
update基础更新
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
select基础查询
select 想回显列值的列名 from 表名
where 限制条件(如:age >= 18);
下面的内容就比较深了,不过也不算太难,众所周知,sql的最关键功能就是查询数据了,下面是关于查询的一些内容,有时间的话,我或许会抽出时间,写一篇质量更高的SQL查询语句总结。
1.做到的题目
select employ.mid,motorcade.mname,avg(driver.dage) '平均年龄' from driver,employ,motorcade
where driver.did = employ.did and motorcade.mid = employ.mid
group by employ.mid,motorcade.mname
这里涉及了,聚集函数,group by分组,连接查询,数据筛选。
平均年龄:列的别名,聚集函数新生成的列初始时没有列名,这种方式给他加上列名。
from后的两个表:进行连接查询的两的数据表
where语句:对连接查询的数据进行了筛选,
原因:
因为连接查询会对数据进行无脑组合,就是如果两个表进行连接查询,第一个表有4行.第二个
表有5行的话,那么连接后的表就有4 x 5 = 20行,而真正正确的只有满足where后条件的数据
,就是主键与外键的数据相等的是合理的数据(即可以分到一行的数据)。
表名.列名:似乎是列的更精准定位,可能是为了区分各表之间有相同的列名的情况。
--+哈哈,知识点还挺多的哈。
2.今天做到的另一个题目
select vid,penaltyScore from usage
group by vid,penaltyScore
having sum(penaltyScore) >= 12;
这里的这个having关键字是和group by 关键字相搭配的,有having就一定有group by,但是有group by不一定有having。having限定的是一个或者可以多个的含有聚集函数的条件。
此文转载于CSDN我的另一账号,便于备份