--创建数据库并为数据库建立主数据文件和辅助数据文件
--设置大小 和增长速度
use testinfo
create database TestInfo on (
name = 'TestInfo',
filename = 'D:\testInfo\TestInfo.mdf',
size = 20,
maxsize = 100 ,
filegrowth = 2
)
log on (
name = 'TestInfo_log',
filename = 'D:\testInfo\TestInfo_log.ldf',
size = 20,
maxsize = 100 ,
filegrowth = 2
)
use Testinfo--切换到TestInfo数据库下
--  由于数据库是不区分大小写的,所以我们不必太在意其大小写的转换
--但通常情况下  内部命令我们用大写  用户自己定义的东西  可随便
--但 当用户定义的表明或者其他的东西 和数据库的系统命令发生冲突时
--我们可以用【】来将其包住 用以区分
USE MA
DROP TABLE STUDENT
DROP TABLE CLASS
CREATE TABLE Student(--创建表
 StuId BIGINT IDENTITY (10000,1) ,--PRIMARY KEY,--创建学生的学号并将其设置为主键自增长类型
 StuName VARCHAR(16),--学生的姓名
 StuAdress VARCHAR (32),--学生的户口所在地
 StuInfo TEXT DEFAULT('这家伙很懒从不更新自己的个人信息'),
 --学生的个人简介
 StuClassId BIGINT )--学生的班级号)
--忘了学生的sex age了

ALTER TABLE STUDENT ADD SSex VARCHAR(2)CONSTRAINT CK_SSex CHECK (SSEX ='男' OR SSex ='女')
--创建一列 并把其值设置为‘男’或者‘女’,当出现其他值时
ALTER TABLE STUDENT ADD SAge INT CONSTRAINT CK_SAge CHECK(SAGE >10 AND SAGE <200)
--创建一列  并把 其值约束为    10<Sage<36

CREATE TABLE Class(
 CId BIGINT IDENTITY (10000,1)PRIMARY KEY,
 CName VARCHAR(16)
)
ALTER TABLE STUDENT ADD CONSTRAINT FK_STUCLASSID FOREIGN KEY (STUCLASSID) REFERENCES CLASS (CID)
--给表student添加和class关联的外键
INSERT INTO CLASS VALUES('04102000')--给表class添加元素
--由于我们将CID设置为自增长类型,所以在添加元素时不需要给其输入值
INSERT INTO CLASS VALUES('04102001')
INSERT INTO CLASS VALUES('04102002')
INSERT INTO CLASS VALUES('04102003')
INSERT INTO CLASS VALUES('04102004')
INSERT INTO CLASS VALUES('04102005')
INSERT INTO CLASS VALUES('04102006')
INSERT INTO CLASS VALUES('04102007')
INSERT INTO CLASS VALUES('04102008')
INSERT INTO CLASS VALUES('04102009')

SELECT * FROM student
INSERT INTO STUDENT VALUES('赵敏','陕西省 咸阳市 永寿县',default ,10003,'女',18)
INSERT INTO STUDENT VALUES('张无忌','陕西省 咸阳市 永寿县',default ,10003,'男',20)
INSERT INTO STUDENT VALUES('张翠山','陕西省 咸阳市 永寿县',default ,10002,'男',48)
INSERT INTO STUDENT VALUES('殷素素','陕西省 咸阳市 永寿县',default ,10002,'女',48)
INSERT INTO STUDENT VALUES('宋远桥','陕西省 咸阳市 永寿县',default ,10002,'男',58)
INSERT INTO STUDENT VALUES('谢逊','陕西省 咸阳市 永寿县',default ,10001,'男',58)
INSERT INTO STUDENT VALUES('张三丰','陕西省 咸阳市 永寿县',default ,10000,'男',100)
INSERT INTO STUDENT VALUES('周芷若','陕西省 咸阳市 永寿县',default ,10000,'女',18)
INSERT INTO STUDENT VALUES('小昭','陕西省 咸阳市 永寿县',default ,10003,'女',18)
INSERT INTO STUDENT VALUES('阿朱','陕西省 咸阳市 永寿县',default ,10003,'女',18)
INSERT INTO STUDENT VALUES('殷天正','陕西省 咸阳市 永寿县',default ,10001,'男',68)
--选出班级号为10001的学生的姓名,性别,班级名
--方法一:
SELECT S.stuname 姓名,s.ssex 性别 ,c.cname
 FROM student s,class c
  WHERE s.stuclassid = c.cid and c.cid =10001
--方法二:
SELECT S.stuname 姓名,s.ssex 性别 ,c.cname
 FROM student s INNER JOIN class c
  ON s.stuclassid = c.cid and c.cid = 10001
--方法三:(该方法纯属于脱了裤子放屁型的类似的还有方法四)
SELECT *INTO MY FROM STUDENT INNER JOIN CLASS ON STUCLASSID =CID
 SELECT stuname 姓名,ssex 性别 ,cname FROM MY WHERE CID =10001
--方法四:
SELECT * INTO MY2 FROM STUDENT ,CLASS WHERE STUCLASSID = CID
 SELECT stuname 姓名,ssex 性别 ,cname FROM MY2 WHERE CID = 10001
USE MASTER --切换到master下

--创建表的几种形式
---方法一 :
CREATE TABLE CLA (
--列名和数据参数

)
select * from student
--方法二:
SELECT * INTO STUDENT2 FROM STUDENT WHERE 1=1--其实质是将一个表复制给另一个表
--给表插入信息
--方法一:
INSERT INTO STUDENT(数据类型列表) VALUES(值列表)
--在该方法中值得注意的是数据表中不能含有自增长类型

--对数据表进行约束条件的更改
--1 更改数据表的外键
--删除外键
ALTER TABLE STUDENT DROP CONSTRAINT FK_StuCLASSID
--添加外键
ALTER TABLE STUDENT ADD CONSTRAINT FK_STUCLASSID FOREIGN KEY (STUCLASSID) REFERENCES CLASS (CID)
--2.更改数据表的主键
--删除主键
ALTER TABLE STUDENT DROP CONSTRAINT PK_STUID
--添加主键
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUID PRIMARY KEY (STUID)

--3.更改自增长问题
SET IDENTITY_INSERT STUDENT ON --/OFF
--4给表中添加 OR 删除 一列
ALTER TABLE MY ADD STUDENTDEPT VARCHAR--增加一列,注意在增加列时  不能加column属性
ALTER TABLE MY DROP COLUMN STUDENTDEPT
--5.给列设置默认值
ALTER TABLE MY ADD STUDENTDEPT VARCHAR CONSTRAINT DF_STUDEPT DEFAULT ('住在学校的宿舍里')
--添加一列  并为其设置默认值
--删除默认值属性
ALTER TABLE MY DROP CONSTRAINT DF_STUDEPT
--6.更新表
UPDATE MY SET  STUCLASSID =0 WHERE  STUNAME = '张无忌'
UPDATE MY SET SSEX ='男' WHERE SSEX = '女'
--7.更新表的列(删除表的列)

ALTER TABLE  MY DROP COLUMN CNAME
--8.删除表的一行
DELETE FROM MY WHERE STUNAME ='周芷若'