`

基础SQL总结篇

    博客分类:
  • SQL
 
阅读更多

   作者:http://mrrobot.iteye.com/  

/*
* SQL SERVER 
*/
use master
--go:应用于批处理  分块处理语句  执行完一块SQL再执行另一块SQL
go
--判断数据库(user_db)是否存在,如果存在则删除(user_db)
/*
 *语法:
 *    
 *if exists (select * from sysdatabases where name = '数据库名')
 *drop database 数据库名
 *
 * 注释:sysdatabases 系统视图
 */
if exists (select * from sysdatabases where name = 'user_db')
drop database user_db
go
--数据库
/*
 * 创建语法:
 *     create database  数据库名
 * 删除语法:
 *     drop database  数据库名
 */
create database user_db
go
--切换数据库
/*
* 语法:use 数据库名
*/
use user_db
go
--表
/*
 * 创建语法:
 *         CREATE TABLE 表名称
 *        (
 *
 *          列名称1 数据类型,
 *
 *          列名称2 数据类型,
 *
 *          列名称3 数据类型,
 *
 *           ....
 *         )
 *
 *  删除语法:
 *        删除表和数据: drop table 表名称   
 *        删除表中数据不删除表结构:truncate  table 表名称
 */
 --用户表
create table sys_User(
      u_Id  int PRIMARY KEY IDENTITY, -- PK
      FK_sys_User_Status int,         -- FK > sys_User_Status
      FK_sys_User_Role int,           -- FK > sys_User_Role
      u_Account nvarchar(20) not null UNIQUE,-- 账号
      u_Name  nvarchar(20),           -- 昵称
      u_CreateDate  datetime,         -- 创建时间
      u_Asssets money,                -- 资产
      u_Desc  ntext default '暂时没有描述' -- 描述
)
go
--用户权限表
create table sys_User_Role(
      r_Id  int PRIMARY KEY IDENTITY, -- PK
      r_Name  nvarchar(20),           -- 权限名
      r_Desc  ntext   default '暂时没有描述' -- 描述
)
go
--用户状态表
create table sys_User_Status(
      s_Id  int PRIMARY KEY IDENTITY, -- PK
      s_Name  nvarchar(20),           -- 状态名
      s_Desc  ntext  default '暂时没有描述'  -- 描述
)
go
--添加约束
/*
 *  PK:
 *         创建:主键生成策略采用SQL SERVER自身的 NOT NULL AUTO_INCREMENT(1,1)
 *         删除:ALTER TABLE 表名 DROP CONSTRAINT 键名
 *  NOT NULL:非空约束
 *         创建:列名称3 数据类型  NOT NULL
 *  UNIQUE:唯一约束
 *         创建:列名称3 数据类型  UNIQUE
 *  CHECK:条件约束
 *         添加:ALTER TABLE 表名 ADD CHECK (条件)  条件:各种运算符的搭配条件
 *         删除:ALTER TABLE 表名 DROP CONSTRAINT 约束名称
 *  DEFAULT:默认值
 *         创建:列名称3 数据类型  DEFAULT '默认值'
 *         删除:ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT
 *  FOREIGN KEY:外键约束
 *         创建:alter table 外键表 
 *               add constraint 约束名称 
 *               foreign key (外键表外键列) 
 *               references 主键表(主键列);
 *         删除:DROP CONSTRAINT 约束名
 */
--条件约束
ALTER TABLE sys_User
ADD CONSTRAINT chk_Person_u_Asssets  
CHECK (u_Asssets<=1000000000)
go
--ALTER TABLE sys_User DROP CHECK chk_Person_u_Asssets
--外键约束
--用户表(sys_user)&权限表(sys_User_Role )
alter table  sys_user 
add constraint fk_sys_user_sys_User_Role 
foreign key (FK_sys_User_Role)
references sys_User_Role(r_Id)
--DROP CONSTRAINT fk_sys_user_sys_User_Role
go
--用户表(sys_user)&状态表(sys_User_Status )
alter table  sys_user 
add constraint fk_sys_user_sys_User_Status
foreign key (FK_sys_User_Status)
references sys_User_Status(s_Id)
--DROP CONSTRAINT fk_sys_user_sys_User_Status
go
--创建索引
/*
 *CREATE UNIQUE INDEX 索引名称 ON 表名 (列名)
 */
CREATE UNIQUE INDEX index_u_Account
ON sys_User (u_Account)
--DROP INDEX sys_User.index_u_Account
go
--列模式
/*
 *  添加列:ALTER TABLE 表名 ADD 列名 类型
 *  删除列:ALTER TABLE 表名 DROP COLUMN 列名
 *  改变表中列的数据类型:
 *  ALTER TABLE 表名
 *  ALTER COLUMN 列名 类型
 */
ALTER TABLE sys_User ADD u_images image
go
ALTER TABLE sys_User DROP COLUMN u_images
go
--视图
/*
 *CREATE VIEW 视图名称 AS(查询的结果集)
 */
CREATE VIEW view_sys_User_info AS(select * from sys_User as u,sys_User_Role as r,sys_User_Status as s )
--DROP VIEW view_sys_User_info
go

 

USE user_db
GO
INSERT INTO [user_db].[dbo].[sys_User_Status]
           ([s_Name]
           ,[s_Desc])
     VALUES
           ('冻结状态'
           ,'不能登陆')
GO
INSERT INTO [user_db].[dbo].[sys_User_Status]
           ([s_Name]
           ,[s_Desc])
     VALUES
           ('冻结状态'
           ,'不能登陆')
GO
INSERT INTO [user_db].[dbo].[sys_User_Status]
           ([s_Name]
           ,[s_Desc])
     VALUES
           ('正常状态'
           ,'正常进行操作')
GO
INSERT INTO [user_db].[dbo].[sys_User_Status]
           ([s_Name]
           ,[s_Desc])
     VALUES
           ('黑名单状态'
           ,'拒绝任何操作')
GO
INSERT INTO [user_db].[dbo].[sys_User_Role]
           ([r_Name]
           ,[r_Desc])
     VALUES
           ('管理员'
           ,'可以管理本系统')
GO

INSERT INTO [user_db].[dbo].[sys_User_Role]
           ([r_Name]
           ,[r_Desc])
     VALUES
           ('普通用户'
           ,'可以访问本系统')
GO


INSERT INTO [user_db].[dbo].[sys_User_Role]
           ([r_Name]
           ,[r_Desc])
     VALUES
           ('超级管理员'
           ,'超级权限')
GO
INSERT INTO [user_db].[dbo].[sys_User_Role]
           ([r_Name]
           ,[r_Desc])
     VALUES
           ('访客'
           ,'可阅读相关信息')
GO

INSERT INTO [user_db].[dbo].[sys_User]
           ([FK_sys_User_Status]
           ,[FK_sys_User_Role]
           ,[u_Account]
           ,[u_Name]
           ,[u_CreateDate]
           ,[u_Asssets]
           ,[u_Desc])
     VALUES
           (3
           ,1
           ,'chenxuan_s@163.com'
           ,'chenxuan'
           ,'2015-03-20 13:55:50.000'
           ,1000.00
           ,'这就是描述')
GO

INSERT INTO [user_db].[dbo].[sys_User]
           ([FK_sys_User_Status]
           ,[FK_sys_User_Role]
           ,[u_Account]
           ,[u_Name]
           ,[u_CreateDate]
           ,[u_Asssets]
           ,[u_Desc])
     VALUES
           (2
           ,1
           ,'chenxuan_s1@163.com'
           ,'chenxuan1'
           ,'2015-03-20 13:55:50.000'
           ,2000.00
           ,'这就是描述')
GO
INSERT INTO [user_db].[dbo].[sys_User]
           ([FK_sys_User_Status]
           ,[FK_sys_User_Role]
           ,[u_Account]
           ,[u_Name]
           ,[u_CreateDate]
           ,[u_Asssets]
           ,[u_Desc])
     VALUES
           (1
           ,1
           ,'chenxuan_s2@163.com'
           ,'chenxuan2'
           ,'2015-03-20 13:55:50.000'
           ,3000.00
           ,'这就是描述')
GO




 
 

 

USE user_db
GO
/*
 * SQL select
 */
--查询所有
select * from sys_user
go
--查询单列
select u_account from sys_user
go
--查询多列
select u_account,u_name from sys_user
/*
 *SQL distinct 
 *注意:ntext 数据类型不能选为 DISTINCT,因为它不可比。
 */
select s_name from sys_user_status
select distinct s_name from sys_user_status
/*
 * SQL where
 * 
 */
select * from  sys_user as u where  u.u_asssets = 1000
select * from  sys_user as u where  u.u_asssets > 1000
select * from  sys_user as u where  u.u_asssets < 1000
select * from  sys_user as u where  u.u_asssets <= 1000
select * from  sys_user as u where  u.u_asssets >= 1000
select * from  sys_user as u where  u.u_asssets != 1000
 /*
  * SQL AND & OR
  *
  */
 select * from  sys_user as u where  u.u_asssets != 1000 and u.u_asssets = 2000
 select * from  sys_user as u where  u.u_asssets = 1000 or u.u_asssets = 2000
 /*
 * SQL Order By
 *
 */
 select * from  sys_user as u where  u.u_asssets < 10000 order by u.u_id asc
 select * from  sys_user as u where  u.u_asssets < 10000 order by u.u_id desc
 /*
 * SQL insert
 *
 */
 INSERT INTO [user_db].[dbo].[sys_User_Status]
           ([s_Name]
           ,[s_Desc])
     VALUES
           ('冻结状态'
           ,'不能登陆')
GO
 /*
 * SQL update
 *
 */
 select * from sys_user
 update sys_user  set  sys_user.u_name='rrr' where sys_user.u_name ='xxx'
 update sys_user  set  sys_user.u_name='xxx' 
 select * from sys_user
 go
 /*
 * SQL delete
 */
 select * from sys_user
 --TRUNCATE TABLE sys_user
 --DROP TABLE sys_user 
 /*
 * SQL Top
 */
select * from sys_user
select top 2 * from sys_user 
 /*
 * SQL Like
 *
 */
select * from sys_user where u_Account like 'chen%'
select * from sys_user where u_Account like '%com'
select * from sys_user where u_Account like '_hen'
select * from sys_user where u_Account like '[c]%'
select * from sys_user where u_Account like '[^c]%'

 /*
 * SQL In
 *
 */
select * from sys_user
select * from sys_user  where FK_sys_User_Status in (1,2)
/*
 *  SQL Between
 */
select * from sys_user 
select * from sys_user  where u_asssets between 0 and 2100
  /*
 *SQL Aliases
 *
 */
 select * from sys_User  As u
  /*
  * SQL Join
  *
  */
  --笛卡尔积
  select *from sys_User,sys_User_Role,sys_User_Status 
  --普通方式两表联查
  select *from sys_User,sys_User_Role where sys_User.FK_sys_User_Role = sys_User_Role.r_Id
  --普通方式三表联查
  select *from sys_User,sys_User_Role,sys_User_Status 
  where sys_User.FK_sys_User_Role = sys_User_Role.r_Id and sys_User.FK_sys_User_Status = sys_User_Status.s_Id
  --SQL Inner Join
  --两表联查
  select * from sys_User as u 
  inner join sys_User_Role r  
  on  u.FK_sys_User_Role=r.r_Id 
  --三表联查
  select * from sys_User as u 
  inner join sys_User_Role r  
  on  u.FK_sys_User_Role=r.r_Id 
  inner join sys_User_Status s 
  on u.FK_sys_User_Status =s.s_Id
  --SQL Left Join
    --两表联查
  select * from sys_User as u 
  left join sys_User_Role r  
  on  u.FK_sys_User_Role=r.r_Id 
  --SQL Right Join
  --两表联查
  select * from sys_User as u 
  Right join sys_User_Role r  
  on  u.FK_sys_User_Role=r.r_Id 
  --SQL Full Join
  --两表联查
  select * from sys_User as u 
  full join sys_User_Role r  
  on  u.FK_sys_User_Role=r.r_Id 
  /*
  * SQL Union
  * 注意:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
  */
  --select * from sys_User
  --union
  --select *from sys_User_Role
  select COUNT(*) from sys_User
  union
  select count(*) from sys_User_Role
  /*
 * SQL Select Into
 *
 */
select  * into mycopeTable from sys_User
select  sys_User.u_Name,sys_User.u_Account into mycopeTable2 from sys_User
  /*
  * SQL  Nulls
  *
  */
 select  * from sys_User where sys_User.u_Account = null
 select  * from sys_User where sys_User.u_Account  is not null
 select  * from sys_User where sys_User.u_Account is null
 
 -------------------------------------函数应用---------------------------------------------------------------
 -- 语法:SELECT function(列) FROM 表
  /*
  * SQL isnull()
  * 如果值为null 返回指定的参数
  */
 select sys_User.*, ISNULL(sys_User.u_Desc,'') from sys_User 
   /*
  * SQL AVG(column)
  * 平均数
  */
  select AVG(sys_User.u_Asssets) from sys_User
    /*
  * COUNT(column)	返回某列的行数(不包括NULL值)
  */
  select COUNT(sys_User.u_Asssets) from sys_User
    /*
  * COUNT(*)	返回被选行数
  */
    select COUNT(*) from sys_User
    /*
  * MAX(column)	返回某列的最高值
  */
      select MAX(sys_User.u_Asssets) from sys_User
    /*
  * MIN(column)	返回某列的最低值
  */
     select MIN(sys_User.u_Asssets) from sys_User
     /*
  * SUM(column)	返回某列的总和
  */
       select sum(sys_User.u_Asssets) from sys_User
     /*
  * COUNT(DISTINCT column)	返回相异结果的数目
  */
  select COUNT(distinct sys_User.u_Asssets ) from sys_User
分享到:
评论

相关推荐

    SQLServer基础篇

    ### SQLServer基础篇知识点梳理 #### 一、SQL Server 简介 1. **SQL Server 定义**: - SQL Server 是由微软开发的一款关系型数据库管理系统。 - 它支持多种操作系统,最初是在OS/2系统上运行,后来主要在Windows...

    sql练习总结sql经验总结

    在本篇总结中,我们将深入探讨SQL的核心概念、常见操作以及实践经验,旨在帮助你提升SQL技能并积累宝贵的经验。 一、SQL基础 1. 数据库与表:SQL主要用于创建、查询、更新和管理数据库中的数据。数据库是一个组织...

    数据库基础之sql语句总结

    本篇文章将全面总结SQL语句的基础知识,为数据库学习者提供基础指导。 1. **查询操作** - **查表结构**:使用`DESC 数据表名`可以查看表的字段名称、数据类型和是否允许为空等信息。 - **单表查询** - **简单...

    青鸟S2全部手写总结 SQL进阶篇总结

    在"二期5.0 SQL总结.sql"这个文件中,很可能包含了以上提到的各种SQL语法示例和练习题,通过实践操作,可以加深对SQL进阶知识的理解和应用。学习并熟练掌握这些内容,将使你在数据库管理和数据分析领域更加得心应手...

    SQL语法总结篇数据库文件

    该资源为SQL语法总结篇使用到的数据库源文件 可使用该文件结合博客内容跟练学习SQL通用语法&SQL查询操作&SQL表连接操作&SQL聚合函数&SQL常用函数(时间函数、字符串函数、ifnull 和coalesce函数、if判断等),并掌握...

    Oracle数据库培训SQL基础篇PPT课件.pptx

    Oracle数据库培训SQL基础篇PPT课件笔记 以下是本资源的详细知识点总结: 基本的SELECT语句 * SELECT语句的功能:列选择、行选择、连接 * 基本的SELECT语句结构:SELECT *| {[DISTINCT] column|expression[alias],...

    SQL语句之基础语法汇总

    SQL语句之基础语法汇总是一篇详细的SQL语句基础知识总结,包括创建表、修改表、删除表、添加数据、更新数据、删除数据等基础语法。下面是对该篇文章的知识点总结: 一、创建表、修改表、删除表 * 创建表:使用...

    2017年深圳-华为SQL总结.rar

    《2017年深圳-华为SQL总结》 在信息技术领域,SQL(Structured Query Language,结构化查询语言)是数据库管理、数据查询和更新的核心工具。这篇文档详细总结了2017年深圳华为公司在使用SQL过程中的一些关键知识点...

    sql语句基础总结

    本篇文章将对SQL语句的基础进行深入的总结,包括常用的查询语句及其功能。 首先,SQL中最基础的查询语句是SELECT,用于从数据库中选择并返回指定列的数据。你可以通过指定列名来获取特定的信息,或者使用通配符(*...

    学习SQL数据库的自我总结

    这篇自我总结将探讨SQL的重要性、其功能以及如何有效地学习SQL。 首先,理解SQL的基本概念至关重要。SQL是一种标准化的语言,适用于多种数据库管理系统,如MySQL、Oracle、SQL Server、PostgreSQL等。它的主要功能...

    SQL学习总结[整理].pdf

    本篇总结将深入探讨SQL的基础概念、分类以及常用DDL语句。 首先,SQL语言的重要性在于其标准化,使得在不同关系型数据库系统如MySQL、Oracle、SQL Server等之间进行交互变得方便。SQL主要分为三类语句: 1. DDL...

    SQL学习总结

    ### SQL学习总结:掌握核心查询技巧 ...通过本篇文章的学习,相信读者已经对SQL的查询语句有了全面而深入的理解。未来,在面对各种数据库操作需求时,能够更加游刃有余地运用SQL,提升数据处理的效率和效果。

    SQL学习总结(实用)

    本篇文章将围绕《SQL学习总结(实用)》的标题和描述,探讨一些关键的SQL优化技巧和概念。 1. **选择最有效的表名顺序**:在编写SQL查询时,特别是涉及多表联接的查询,表的处理顺序会影响查询效率。Oracle解析器...

    SQL实习总结四篇.doc

    【SQL实习总结】 本次SQL实习是一次为期一周的实践学习,主要目的是巩固和深化理论知识,将课堂上学到的SQL Server数据库管理技能付诸实践。实习过程中,我们参与设计了一个google订餐系统的数据库,通过实际操作,...

    SQLSERVER基础典型案例详解

    本篇文章将深入探讨SQL Server中的基础典型案例,包括INSERT、UPDATE语句的详细解析。 首先,让我们从SQL语句的基础入手。SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。在SQL ...

    SQl实训总结3篇.docx

    根据提供的文档信息,我们可以从以下几个方面来总结和提炼SQL实训的相关知识点: ### 1. SQL实训的目的和意义 - **实训目的**:SQL实训的主要目的是让学生通过实践操作,加深对SQL语言及其应用的理解,提高解决...

    SQL大总结——转载经典——价值过亿

    这篇“SQL大总结”显然是一篇全面概述SQL核心概念和技术的文章,旨在帮助读者深入理解并熟练掌握SQL的使用。从标签“源码”和“工具”可以推断,这篇总结可能涵盖了SQL在实际开发中的应用以及与工具集成的相关内容。...

Global site tag (gtag.js) - Google Analytics