--【数据库】
go
create database DB_MGG  --添加数据库
on
(
name=DB_MGG --逻辑名称
,filename='C:\MDB\DB_MGG.mdf' --物理名称  逻辑名和物理名可以不一样
,size=3MB --大小
,filegrowth=1MB --增长多少
,maxsize=100MB --最大大小
),
filegroup DB_group --文件组
(
name=DB_MGN1
,filename='D:\NDB\DB_MGN1.ndf'
,size=3MB
,filegrowth=1MB
,maxsize=100MB
)
 log on
(
name=DB_MGL
,filename='F:\LDB\DB_MGL.ldf'
,size=1MB
,filegrowth=10%
,maxsize=10MB
)
go
use DB_MGG
go
--更改_添加一个新文件
alter database DB_MGG
add file
(
name=DB_MGN2
,filename='E:\NDB\DB_MGN2.ndf'
,size=3MB
,filegrowth=1MB
,maxsize=100MB
)
--更改_删除一个数据库文件
alter database DB_MGG
remove file DB_MGN2
--更改_新建一个文件组
alter database DB_MGG
add filegroup DB_group
--更改_添加一个新文件 到文件组
alter database DB_MGG
add file
(
name=DB_MGN2
,filename='E:\NDB\DB_MGN2.ndf'
,size=3MB
,filegrowth=1MB
,maxsize=100MB
)to filegroup DB_group --放到文件组里
--更改_添加一个日志文件
alter database DB_MGG
add log file
(
name=DB_MGL_T
,filename='F:\LDB\DB_MGL_T.ldf'
,size=1MB
,filegrowth=10%
,maxsize=10MB
)
--更改_更改一个数据库文件
alter database DB_MGG
modify file
(
 name=DB_MGN1
,filename='D:\NDB\DB_MGN1.ndf'
,size=5
,filegrowth=10%
,maxsize=50MB
)
--更改_更改数据库名称
alter database DB_MGG
modify name=DB_mgg
--删除文件组
alter database DB_MGG
remove filegroup DB_group --ps:文件组里有文件不能删除

use master
drop database DB_MGG  --删除数据库

-----------------------------------------------
--【数据表】
use DB_MGG
create table TB1_student --创建数据表
(
 id int,
 name nchar(4),
 --ps:char 固定大小查询方便; nchar 无论中文和英文用unicode编码统一占2个字节;varchar 大小会变储存小
 birthday date,
 mark decimal(4,1)
 )
 
 --更改 添加一列数据表字段
 alter table TB1_student
 add sex nchar(1)
--更改 修改一列数据表字段
 alter table TB1_student
 alter column sex char(2)
--更改 删除一列数据表字段
 alter table TB1_student
 drop column sex
--更改 修改名称
go
sp_rename 'TB1_student',TB_cjb --修改表名
go
sp_rename 'TB1_student.id',ID --修改字段名
go
-----------------------------------------
--【数据表内容】
    --添加数据
    insert into TB1_student values(1,'mzmz','1995-1-1',99,'男')
    insert into TB1_student values(2,'mzmz','1997/2/2',77,'女')
    insert into TB1_student values(3,'mmmm','1991.3.3',55,'男'),(4,'maaz','1999 4 4',66,'女')
    --连续添加多行数据 ps:数据间用,隔开 日期型用. /或-隔开

select * from TB1_student --查询
    update TB1_student set name='名字名字' where id=1 --更改数据
    delete  from TB1_student --删除数据表内容
    drop table TB1_student --删除数据表

--添加 insert into 表名 values (值1,值2)
    --查询 select COUNT(*) 统计[统计=count(*)/count as 统计] from 表名 order by [desc/asc(默认升序)]
    --子查询select 字段 from 表名 where 字段=(select max(字段)  from 表名)
    --复制数据表 select * into 新的表名[不需要预先创建该表] from 要复制的表名[已有的表]   只拷贝数据
    --更新 update 表名 set 字段=内容 [where 条件表达式(字段=值)]  若没有where条件,那么全都会更改
    --删除 delete from 表名 [where 条件表达式(字段[=/is 备注:null要用is/like/>/<] 值)[and/or/not] 条件表达式]
    --     删除的是记录,逐条删除,可恢复
    --删除 truncate 每个block删除 速度快 但不能逐条恢复
    --分组 group by  --去前n个 top n
    --去重复 distinct
    -- null是空值 是个空盒子 不知道里面有什么
    --like 模糊查询%表示一个或多个 _表示单个
    --查询范围 between 数值 and 数值 包涵头尾数值
    --count 统计 max 最大 min最小 avg 平均值 sum 和
    --select * from  where group by having
    --联合查询
    create database db_xs
    use db_xs
    create table tb_xs
    (
        id char(8) not null
        ,name char(8)
        ,constraint pk_id primary key(id)
    )
    insert into tb_xs values ('00000001','林艺')
    insert into tb_xs values ('00000002','灵儿')
    insert into tb_xs values ('00000003','凌珊')
    insert into tb_xs values ('00000004','零时')
    create table tb_kc
    (
        kcid char(2) not null
        ,kcname char(20)
        ,constraint pk_kcid primary key(kcid)
    )
    insert into tb_kc values ('01','林艺语文')
    insert into tb_kc values ('02','灵儿数学')
    insert into tb_kc values ('03','凌珊英语')
    insert into tb_kc values ('04','零时美术')
    create table tb_xk
    (
        id char(8)foreign key references tb_xs(id)
        ,kcid char(2) foreign key references tb_kc(kcid)
        ,xksj datetime default(getdate())
        ,constraint pk_zhid primary key(id,kcid)
    )
    
    insert into tb_xk(id,kcid) values('00000001','01')
    insert into tb_xk(id,kcid) values('00000001','02')
    insert into tb_xk(id,kcid) values('00000002','02')
    insert into tb_xk(id,kcid) values('00000003','01')
    insert into tb_xk(id,kcid) values('00000004','03')
    
    select * from tb_xs
    select * from tb_kc
    select * from tb_xk
    
    select tb_xs.id,tb_xs.name,tb_kc.kcid,tb_kc.kcname from tb_xs,tb_kc ,tb_xk
    where tb_xs.id = tb_xk.id and tb_kc.kcid=tb_xk.kcid and tb_xk.id='00000001'
----------------------------------
--【学生表】
--<约束>  
-- primary key 主键 not null 非空 default 默认 unique 唯一性 check 检查  identity(初始值,增长值) 标识符
create database mgg
use mgg
drop table Tb_xs
create table Tb_xs
(
    id char(8) primary key --主键 唯一可以区分不同记录的字段 只能有一个 不能为空
    ,name char(8) not null
    ,gender char(2) default('男') check(gender in ('男','女','x'))
    ,mobile char(11) unique check(len(mobile)=11 and mobile like '1[3,5,7,8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
    --,mobile char(11) unique check(mobile like '[0-9]{11}')
)
unique--unique 唯一性可以多个,可以出现空值,但空值只能出现一次
in--in 必须是这三个中的一个
like--like 正则表达式
len--函数 len(字段名或变量)结果给出长度(字符串的个数)

insert into Tb_xs values('1','pite','女','15345678910')
insert into Tb_xs values('2','tom','男','13345678920')
insert into Tb_xs(id,name) values('3','didi')
insert into Tb_xs(id,name,gender,mobile) values('4','didi','女','18181818181')

delete from Tb_xs

select * from Tb_xs
------------------------------
--【学生信息】
create database bb
go
use bb
go
--drop table Tb_xsxx
create table Tb_xsxx
(
    xsid char(10) primary key,--学生学号
    xsname char(10) not null,--学生姓名
)
insert into Tb_xsxx values('201401001','pig')
insert into Tb_xsxx values('201401002','god')

---------------------
--【课程信息】
use bb
--drop table Tb_xskc
create table Tb_xskc
(
    cid char(2) primary key,--课程编号
    cname char(20) not null,--编程名称
)
insert into Tb_xskc values ('01','sql数据库')
insert into Tb_xskc values ('02','web前端')
-------------------------------
--【课程成绩】
use bb
--drop table Tb_xscj
create table Tb_xscj
(   --foreign key 可以省略,正规写法要加上
    xsid char(9) foreign key references Tb_xsxx(xsid) --on update cascade on delete 为学生学号创建外键
    ,cid char(2),--课程编号
    xsmark decimal(4,1)--学生成绩
    primary key(xsid,cid)--组合主键
)
insert into Tb_xscj values ('201401001','01',95.5)
insert into Tb_xscj values ('201401002','02',100)
insert into Tb_xscj values ('201401001','02',100)

select xsid as 学生学号,xsname as 学生姓名 from Tb_xsxx
select cid as 课程编号,cname as 课程名称 from Tb_xskc
select xsid as 学生学号,cid as 课程编号,xsmark as 学生成绩 from Tb_xscj

--外键所引用的必须为主键
create database abc
use abc
create table a
(
a1 varchar(100) primary key
,a2 varchar(100)
)

create table b
(
b1 varchar(100) primary key
,b2 varchar(100) foreign key references a(a1/*a1必须为主键或唯一性(唯一性不规范)*/)-- on update cascade on delete
,b3 varchar(100)
)
----------------------------------------
--【修改约束】
create database DB_XS
use db_xs
drop table tb_xsxx
create table tb_xsxx
(
    id int
    ,name char(8)
    ,sr date
    ,constraint /*constraint 约束*/ pk_id primary key(id)
    ,constraint ck_name check(len(name)>=2)
    ,constraint ck_sr check(sr>'1990-1-1')
    --,constraint df_sr default('1990-1-1')----确定添加不了
)

--drop 删除

alter table tb_xsxx drop constraint ck_name

alter table tb_xsxx drop constraint pk_id

--add 添加

alter table tb_xsxx
add constraint ck_name check(len(name)>=2 and len(name)<=6)

alter table ta_xsxx
alter column c1 int not null

alter table ta_xsxx
add constraint pk_id primary key (id)

/*创建视图来自多个基表,若有相同字段则要精确定义*/

/*如果视图创建来自单个基表,那么通过视图
可以操作(查询、增加、删除、更改)基表*/

/*如果视图创建来自多个基表,那么通过视图
操作(查询、增加、删除、更改)只能其中的一个基表,
不可以同时操作的字段来自多个基表*/

--声明和定义
--(1)系统的全局变,@@开头,只能用不能改,用户不能定义
select @@CONNECTIONS
select @@ROWCOUNT--影响到的行数
--(2)用户自定义变量 @开头
declare @strfirst varchar(50)
set @strfirst ='helle,sql'--select或者set赋值 set 不能一次赋多个值
print @strfirst

select @@ROWCOUNT
go
declare @iNum1 int, @iNum2 int,@@myint int
select @iNum1=5,@iNum2=6
set @@myint=8
print @iNum1+@iNum2+@@myint
go
-----顺序 选择 循环
/*
if(表达式)
    begin
    end
else
    begin
    end
*/
declare @x int
set @x=5
if(@x<0)
   begin
    print('小于0')
   end
 else if(@x=0)
    begin
      print('0')
    end
else
  begin
    print('大于0')
  end
    
--------创建自定义函数--------------------
----格式
    create function 函数名
    (形参 as 数据类型,.....)
    returns 返回值的数据类型
    begin
      
    end
    ----阶乘实例
----显示每一个
go
  declare @i int,@n int,@sum decimal(38,0)
  select @i=1 ,@n=10,@sum=1
  while(@i<=@n)
    begin
        set @sum=@sum*@i
        print  @sum
        set @i+=1
    end
----显示最后一个
go
  declare @n int,@sum decimal(38,0)
  select @n=10,@sum=1
  while(0<@n)
    begin
        set @sum=@sum*@n
        set @n-=1
    end
    print  @sum    
-----阶乘函数实例
go
create function jiechen
(@m as int)
returns bigint
begin
        declare @i int,@n int,@sum decimal(38,0)
        select @i=1 ,@n=@m,@sum=1
        while(@i<=@n)
        begin
            set @sum=@sum*@i
            set @i+=1
        end
        return @sum
    end
go
print dbo.jiechen(10)
----函数
/*
getdate()--获取当前日期
substring(str,i,n)--取几个开始
charindex(str1,str2)--查询str2在str1里的第几个
cast(表达式 as 数据类型)--强制转换
convert(数据类型,表达式)--强制转换
ltrim(字段) --从左边开始去空格
rtrim(字段) --从右边开始去空格
replace(字段,' ','')--替换
*/
select ROUND(RAND()*10+1,0)--随机

case 字段
    when 值 then 值
    
    else 值
    end
    
    
    
--------【索引】---------

--聚集索引只能有一个,因为一个基本表只能按照一个字段排序
--一般用在那些字段?经常用来查询  主键 外键 经常用于连接的字段

------创建索引
create clustered index 索引表名 on 表格(字段)
create clustered index sy_sy on tb_sy(mz)

------删除索引
alter table tb_sy
drop constraint PK__tb_sy__32167A847F60ED59

-----【存储过程】
--优点: 对数据库立即访问的功能,可以加快程序的运行速度,实现模块化,
------可以减少网络流程,有利加密保护代码的安全性,可以提高数据库的安全性
        
-----创建存储过程
/*
create procedure 过程名称
参数=null
as

*/

use Northwind
go
create procedure up_getProductname
@pid int
as
select productname from Products where ProductId=@pid
go
--在一个go区域中如果是首行直接用存储过程名称执行,如果是非首行,存储过程名称前+exec

exec up_getproductname 2
go
---删除存储过程
drop procedure  up_getproductname
go
---可为空的参数
create procedure up_getProductnamenull
@pid int=null
as
if(@pid is null)
    select 'id不能为空'
else
    select productname from Products where ProductId=@pid
go
exec up_getproductnamenull
-----有输出值的存储过程
go
create procedure up_getProductnameoutput
@pid int=null,@productCount int output
as
begin
    if(@pid is null)
        select 'id不能为空'
    else
        select productname from Products where ProductId=@pid
    
    set @productCount=(select COUNT(*) from Products)
end    
go

declare @pcount int
exec up_getProductnameoutput 1,@pcount output
select @pcount

if OBJECT_ID('Northwind.dbo.up_getProductnameoutput','p') is not null

------【触发器】    trigger    书本P214
--概念 它是一种特殊类型的存储过程,不能直接调用 要通过时间 只能在当前表创建
--优点 它是自动执行  可以通过数据库中的相关表进行级联更改 触发器可以强制限制 可以引用其他表中的列

create database xg
use xg

create table cfq(c1 int)
insert into cfq values(1)
select * from cfq

/*
create trigger trigger_name
on{table|view}
[with encryption]
{
    after insert|instead of    insert
    as
        
}
*/
drop trigger tri_cfq
go
create trigger tri_cfqin
on cfq
after insert
as
    print '一条新的数据写入'
go
create trigger tri_cfqup
on cfq
after update
as
    print '一条新的数据更新'
go
create trigger tri_cfqdel
on cfq
after delete
as
    print '一条新的数据删除'
go
----SQL Server触发器判断当前操作类型(insert/update/delete)
create trigger tri_cfq
    on cfq
    after insert,update,delete
 as
 begin
     declare @inserted int, @deleted int
     select @inserted=COUNT(*) from inserted --刚插入的数据所在表
     select @deleted=COUNT(*) from deleted    --刚删除的数据所在表
     if @inserted>0 and @deleted=0
     begin
         print '一条新的数据写入'
     end
     if @inserted>0 and @deleted>0
     begin
          print '一条新的数据更新'
     end
     if @inserted=0 and @deleted>0
     begin
         print '一条新的数据删除'
     end
 end
 
go
    insert into cfq values(4)
    update cfq set c1=3 where c1=4
    delete from cfq where c1=2
    select * from cfq
go

create table tb1_user
(
    xh int,
    cj decimal(4,1)
)
drop trigger cfq_xs
go
create trigger  cfq_xs
on tb1_user
after insert
as
begin
    declare @cj int,@xh int
    select @cj= cj from inserted
    select @xh=xh from inserted
    if @cj>100 or @cj<0
     begin
        print '不能打印'
        delete from tb1_user where cj>100 or cj<0
     end
end
go
create trigger cfq_xsdel
on tb1_user
instead of delete
as
    print '就是不让你删哦'
go
go
insert into tb1_user values (1,1)
insert into tb1_user values(1,102),(2,100),(3,111)
update tb1_user set cj=22 where xh=1
delete from tb1_user

select * from tb1_user

-----【以下都是登录用户】(可以登录到引擎上即数据库服务器,此时还不能使用数据库)

--window身份验证模式的登录帐号创建
create login "ClOUD\201408225" from windows
--sqlserver身份验证 登录帐号创建
drop login aiai
create login aiai with password='123',check_policy=off

use DB_StudentManager
go
drop user db_aiai
create user db_aiai for login aiai with default_schema=dbo

--授权 aiai 可以创建表 grant

grant create table to db_aiai
grant select to db_aiai
grant insert to db_aiai
grant update to db_aiai
grant delete to db_aiai
--拒绝权限 deny
deny delete to db_aiai
--创建架构

create schema schema_aiai authorization db_aiai

sql新手全套的更多相关文章

  1. 关于SQL while 循环嵌套 外部循环数据无法进入内部循环

    下面一般是,作为SQL新手第一次写循环嵌套的办法,但是大家会发现一个问题,那就是变量@i总是不能进入第二个循环. declare @i int ,@j int, @k int set @j = 1 - ...

  2. SQL中关键字的执行顺序

    作为一个SQL新手,看到每种不熟悉的关键字时已经够迷茫了,可往往见到的语句关键字顺序还是各种各样,太难理解了.网上搜索了两篇文章,总结一下: 关于Sql关键字SELECT FROM GROUP ORD ...

  3. 存储过程中拼接SQL语句

    很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANS ...

  4. 关于oracle的准备

    作者:Steven Feuerstein 提高编写PL/SQL代码数量及质量的四个简单易行指导方针 我从1990年就开始编写PL/SQL代码.这意味着我已经编写了几万行的软件代码,但我确信,其中的绝大 ...

  5. LeetCode - Nth Highest Salary

    题目大概意思是要求找出第n高的Salary,直接写一个Function.作为一个SQL新手我学到了1.SQL中Function的写法和变量的定义,取值.2.limit查询分    页的方法. 在这个题 ...

  6. Hibernate4.3.5入门HelloWorld

    本文给出一个简单的Hibernate4.3.5入门实例,配置方式采用XML文件方式(这种方式已经不是主流了,目前越来越多采用Annotation方式映射POJO实体) 代码结构如下图所示:主要用到hi ...

  7. 42步进阶学习—让你成为优秀的Java大数据科学家!

    作者 灯塔大数据 本文转自公众号灯塔大数据(DTbigdata),转载需授权 如果你对各种数据类的科学课题感兴趣,你就来对地方了.本文将给大家介绍让你成为优秀数据科学家的42个步骤.深入掌握数据准备, ...

  8. 5-MySQL DBA笔记-开发技巧

    第5章 开发技巧 本章将介绍一些和数据库相关的开发技巧.由于开发领域很广,这里只选取部分比较常见的小技巧.5.1 存储树形数据 有时我们需要保存一些树形的数据结构,比如组织架构.话题讨论.知识管理.商 ...

  9. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

随机推荐

  1. javabean总结

    一. javabean 是什么? Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: ...

  2. python 实现冒泡排序与快速排序 遇到的错误与问题

    今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...

  3. Python 结巴分词模块

    原文链接:http://www.gowhich.com/blog/147?utm_source=tuicool&utm_medium=referral PS:结巴分词支持Python3 源码下 ...

  4. CESAsia:英特尔RealSense3D实感技术亮眼

    每年CES展会上都会有许多新奇的.更具创意的产品和创新技术亮相,而作为全球科技盛会之一的CES Asia也不例外.在CES Asia2016展会上,英特尔(Intel)可谓是有备而来,带着旗下支持Re ...

  5. C++转义字符 &amp; keyword

    转义字符: 换行符 \n   水平制表符\t 纵向制表符 \v 退格符 \b 回车符 \r   进纸符 \f 报警(响铃)符 \a 反斜线 \\ 疑问号 \? 单引號 \' 双引號 \"   ...

  6. 【WinForm】使用NSIS发布程序

    简介 NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能 使用 以下是 ...

  7. BZOJ 2208: [Jsoi2010]连通数 tarjan bitset

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  8. Codeforces Gym 100342E Problem E. Minima 暴力

    Problem E. MinimaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/attac ...

  9. Spring中ClassPathXmlApplicationContext类的简单使用

    转自:http://www.cnblogs.com/shyy/archive/2011/09/29/2453057.html 一.简单的用ApplicationContext做测试的话,获得Sprin ...

  10. Java I/O输入输出流详解

    一.文件的编码               开发时一定要注意项目默认的编码!!!!!!!!               文件操作的时候一定要记得关闭!!!!!!!!        ASCII:美国标准 ...