一、SQL语句入门
可以再右击操作的数据库名MyDB2,再弹出的上下文菜单中选择“新建查询”,写Sql语句:
1. 字符串用单引号
2.不区分大小写
3. 新建表Create table 表名(id int not null,Name nvarchar(50),Age int null);
4.删除表
Drop table表名;
5.insert into表面(字段名,)values(字段值,)
注,如果有字段设置为“标识”——自动增长,那么在插入时,可以不写该字段。有些字段是可以为空Null,有些字段不可为空(主键) not null,这时,在插入一条记录的时候,可以为空的可以不写,不可为空的必须写。
6. Sql语句分为DDL和DML语句。
DDL数据库定义语句主要包含Create,Drop
DML数据库管理语句主要:insert,update, delete,select…等等。
Delete删除表,使表为空。
Drop……..
二. 数据插入
insert into表面(字段名,)values(字段值,)
字段:默认值属性。
设置主键的类型为 guid,unqhiefier…
将主键的默认值设为:newid()
三、数据更新
Update表名 Set字段名=N‘字段值’
Where age=50;!!等于使用=号,不是==
四、数据删除
Delete FROM表名 where….
五、数据检索Select who from who
1检索全部记录。
Selet * from表名
2检索需要的列
Select列名1 ,列名2 from 表名
3列别名:
Select列名1 as别名,列名2 as别名 from表名
例子:
create database TestSchool--创建一个数据库TestSchool
on primary
(
name="TestSchool.mdf",
filename="D:\test\TestSchool.mdf",
filegrowth=10%
)
log on
(
name="TestSchool_log.ldf",
filename="D:\test\TestSchool_log.ldf"
)
create table TblStudent--创建一个表TblStudent
(
tSId int identity(1,1) primary key,
tSName nvarchar(10) not null,
tSGender bit default(1),
tSAddress nvarchar(1500),
tSPhone varchar(50),
tSAge int,
tSBirthday datetime,
tSCardid varchar(50),
tSClassid int
)
--drop table TblStudent--删除表
create table TblScore--创建表TblScore
(
tScoreId int identity(1,1) primary key,
tSId int not null,
tEnglish float,
tMath float
)
go
create table TblTeacher
(
tTId int identity(1,1) primary key,
tTName nvarchar(50),
tTGender bit default(0),
tTAge int,
tTSalary money,
tTBirthday datetime
)
go
--跨数据库访问
use TestSchool--当前使用本数据表
select * into myteacher from School..TblTeacher;
--myteacher这个表本来不存在,但是select * into myteacher from School..TblTeacher就会把新建表myteacher,然后把其他数据库中的表的结构copy到中
--最基本的插入方式
insert into TblTeacher(tTName,tTGender,tTAge,tTSalary,tTBirthday) values('姚洪波',1,27,10000,'1980-10-10');
--只向某些列插入数据
insert into TblTeacher(tTName,tTSalary) values('李雨锦',5000);
--不建议大家使用这种方式给bit类型数据直接赋'true',这种做法只有2008版本支持,以前的版本不支持
insert into TblTeacher(tTName,tTGender,tTAge,tTSalary,tTBirthday) values('李伟','true',26,10000,'1980-10-16');
--自动编号为什么会跳转(字段中出现错误)
insert into TblTeacher(tTName,tTGender,tTAge,tTSalary,tTBirthday) values('陈红军','true',26,10000,'1980-10-16');
--为自动编号插入数据
insert into TblTeacher(tTId,tTName,tTGender,tTAge,tTSalary,tTBirthday) values(8,'陈红军','true',26,10000,'1980-10-16');
set identity_insert TblTeacher on
insert into TblTeacher(tTId,tTName,tTGender,tTAge,tTSalary,tTBirthday) values(8,'陈红军','true',26,10000,'1980-10-16');
set identity_insert TblTeacher off
--insert into 表名 [(列名1,列名2....列名n)] values()
insert into TblTeacher values('辛兴涛','true',27,10000,'1982-07-09');
--union插入多行
insert into TblTeacher
select 'Chris',1,20,1500,'1999-9-9' union
select 'James',1,20,1600,'1999-10-11' union
select 'Tom',1,20,1700,'1999-9-20' union
select 'Marry',0,20,1500,'1999-9-9'
--只显示修改一行
insert into TblTeacher
select '辛兴涛','true',27,10000,'1982-07-09' union
select '辛兴涛','true',27,10000,'1982-07-09' union
select '辛兴涛','true',27,10000,'1982-07-09' union
select '辛兴涛','true',27,10000,'1982-07-09'
--备份数据:1讲一个表中的数据备份到另一个表中
--将TblTeacher表中的数据备份到另外一个表TblTeacher表中表中,前提是TblTeacher表中不存在,如果它存在就会报错
select * from TblTeacher
select * into NewTblTeacher from TblTeacher
--向一个已经存在的表中插入数据,数据的来源是另一张表
insert into NewTblTeacher(tTName,tTAge)
select tTName,tTAge from TblTeacher
--在写SQL语句的时候,如果有字符串常量,应该在前面加N
--前面加N表示什么?不加也不会报错为什么要加?
--编辑器将来是要把编辑器中的代码取出来交给SqlServer数据库引擎来处理,然后引擎才能对脚本进行解释
insert into TblTeacher(tTName,tTGender,tTAge,tTSalary,tTBirthday) values(N'小红','true',26,10000,'1980-10-16');
--数据更新(修改)
--将表中年龄为20岁的人都修改为19岁
select * from TblTeacher
update TblTeacher set tTAge=19 where tTAge=20
--将所有人的工资都改为2000
update TblTeacher set tTSalary=2000
--update TblStudent set tSGender=0 where tSName='anna';
--练习3:所有女学生的年龄减1岁
update TblStudent set tSAge=tSAge-1 where tSGender=0;
select * from TblStudent
--删除工资大于2000的老师
delete from TblTeacher where tTSalary>2000;
--更新一个列
select * from TblStudent
update TblStudent set tSGender=1
update TblStudent set tSGender=0,tSAge=19,tSBirthday='1905-05-17'
--练习2:考试题偏难,所有人的成绩加5分
update T_Score set english=english+5 where english+5
<100;
update T_Score set english=100 where english+5>=100