SQL基础(1)---- 简单的SQL语句
虽然现在什么问题都能问百度、谷歌。但是有些基本的知识还是需要上手就有的。
现在很多工具都是可视化操作,很多命令就淡忘了。重新复习下,面试题中出现的几率很高的。
下面的操作是在microsoft sql server 2005中测试无误,其他版本请大家自行测试。
1>简单创建数据库,数据表
创建数据库mydb。
注意用户名称要用中括号包裹,以区分系统关键词。我很多时候就不太习惯用。不过这样在程序中很容易出错而找不到问题在哪。
create database mydb
创建一个员工表。
注意自增长的关键词identity;varchar和nvarchar的区别,两者都能存储中文字符,但varchar在英文操作系统中容易出现乱码。nvarchar占用空间要大些。
char和varchar区别在于char固定字符长度,如果存储字符长度不够,char会把其他位置用空格不全。
bit类型在c#是boolean类型,数据库中只能存储0和1。
create table [employees]( [id] int identity(1,1) primary key, [ename] varchar(20), [gender] bit, [age] int, [department] varchar(50), [entrydate] datetime )
2>基本查询语句用的比较多,这个很容易记忆。分组查询要分析和测试来写。
按性别分组,统计年龄大于30的、记录条数大于355,按人数降序排列。
use test select * from MyStudent select --distinct / top 之类的关键字(这些都是一些现实的选项) fgender as 性别, --5>选择列 count(*) as 人数 from MyStudent --1>先从MyStudent表中拿到数据(全部数据的一个结果集) where fage>30 --2>从MyStudent的数据中筛选出所有年龄大于30岁的人的信息(新结果集,都是年龄大于30的) group by fgender --3>按照性别分组,分完组以后又得到一个新结果集(分组后的结果) having count(*)>355 --4>基于分组以后的结果集,然后在筛选,筛选出那些组中记录大于500的组。 order by 人数 desc--6>最后把显示出来的结果排序
3>表中字段添加约束
constraint约束关键字,ch_age约束名称,check约束age大于零
alter table [employees] add constraint ch_age check(age>0)
4>增删改就简单了
insert into employees values('yuem',1,27,'IT部门',getdate())
update employees set age=28
delete from employees where id=2