复习知识6月12日 sql语句

真正自己做题时候,会遇到很多很2的情况 比如说  老是插入不进去,发现是数据库设的字符长度不够   有时候是sql语句的问题

--==================================创建数据库===========
--创建数据库的时候,指定一些数据库的相关参数,比如大小,增长方式i、文件保存路径的。
create database School
on primary --主数据文件*.mdf
(
--数据库的逻辑名称
name='School',
size=10mb,
filename='c:\school.mdf',
filegrowth=10%,
maxsize=100mb
)
log on --日志文件*.ldf
(
name='School_log',
filename='c:\school.ldf',
size=5mb,
filegrowth=2mb,
maxsize=50mb
)
--删除数据库
DROP DATABASE SCHOOL;
--切换数据库
use School

--==================================为数据库创建表===========

create table TblClass
(
--创建好了一列
--列名,数据类型、约束(自动编号、主键、外键、默认值等等)
ClsId int identity(1,1) primary key,
ClsName varchar(50) not null,
ClsDesc varchar(500)
)
--删除TblClass表
drop table TblClass

====--创建一个TblStudent表
create table [TblStudent]
(
stuId int identity(1,1) primary key,
stuName nvarchar(50) not null,
stuGender bit not null,
stuAddress varchar(200),
stuPhone varchar(50),
stuAge int,
stuBirthday datetime,
stuIdNumber varchar(20),--身份证号码
stuClsId int
)
====--通过sql语句向TblClass表中插入数据
insert into TblClass(ClsName,ClsDesc)
values('黑马三期','没有有二期NB')

----当向表中的除自动编号外的所有其他列都插入数据的时候,这时可以省略列名

===--跨数据库表拷贝表 跨数据库访问: 数据库..表名
select * into myteacher from School..TblTeacher

sp_tables: 数据库中的所有表
===--3.为自动编号插入数据
set IDENTITY_INSERT TblTeacher on
insert into TblTeacher(tid,tname,tsalary)
values(100,'bob',500000)
set IDENTITY_INSERT TblTeacher off

====--union关键字本身就具有去掉重复的意思。
--union \ union all
insert into TblTeacher
select 'Chris',1,20,2000000,'1999-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9'
====修改表
alter table t2
(
stuId int identity(1,1) primary key,
name nvarchar(50)
)
修改列:alter table T3 alter column userName nvarchar(50)
--向一个已经存在的表中插入数据,数据的来源是另外一张表。
insert into NewTblTeacher(tname,tage)
select tname,tage from TblTeacher


===主键
==========================
1.主键的作用:
保证表中的每条数据的唯一性。
=======主键的特点========
1.主键不能重复
2.主键不能为空
======主键的分类=====
1>逻辑主键(选择为表中增加的那些“自动编号”列或者"GUID"列为主键(没有实际业务上的意义))的主键,叫做逻辑主键。(建议使用逻辑主键)
2>业务主键(选择表中那些在业务中有实际意义的列作为主键,叫做业务主键。)
======组合主键(不建议使用)=========
同时选择多列作为一个主键,叫做组合主键。(复合主键)
(组合主键一般不建议使用。)

==========选择主键的策略,选什么样的列作为主键=====
1>.主键,建议选择那些一般不会被修改的列。
2>选择单列,不要选择多列(不用组合主键)
3>选择那些简单列(整数列(自动编号),)


--=========================更新语句---------------

--把表中所有的年龄为19岁的同学的姓名两边加个★,性别=女,工资都+500,
--SQL 2008 可以写成tsalary+=500,但是尽量用通用的语法 tsalary=tsalary+500
update TblTeacher set tname='★'+tname+'★',tgender=0,tsalary=tsalary+500
where tage=19

替换
update TblTeacher set tname=replace(tname,'★','☆') where tage=19 and tgender=0
--REPLACE ( string_expression , string_pattern , string_replacement )

=====删除
delete from TblTeacher where tage=19 or tage is null

--=======使用delete from 表名 与truancate table 表名,都能把表中的数据全部删除-======
--区别:
--1.delete 语句删除数据的时候,自动编号没有恢复到默认值。但是truancate语句重新设置了自动编号
--2.通过truncate语句删除表中的数据的时候,只能一次性都清空,不能根据条件来删除,而delete可以根据条件来删除。
--3.truncate语句清空表中的数据时,速度(性能)比delete语句快的多的多的多。
--4..truncate语句不触发delete触发器。

 

原文地址:https://www.cnblogs.com/cheshui/p/2609985.html