• 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍


    16-数据库开发及ado.net

    数据库SQl,创建数据库和表,增删改语句,约束,topDistinct,聚合函数介绍

    SQL语句入门(脚本、命令)

    SQL全名是结构化查询语言(Structured Query Language)

    SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法。

    Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号。

    Sql中的注释“——” 单行注释比较好

    判断俩个数据是否相等使用=(单等号)

    在sql语句中sql代码不区分大小写

    SQL主要分为:

    DDL(数据定义语言、建表、建库等语言)(例:Create Table、Drop Table、Alter Table)

    DML(数据操作语言)(例:Select、Insert、Update、Delete)

    DCL(数据库控制语言)(例:GRANT授权、REVOKE取消授权)

    实例代码:

    --1.创建一个数据库

    create database School;

    --删除数据库

    drop database School;

    --创建数据库的时候指定一些选项

    create database School

    on primary

    (

    name='School',

    filename='D:Desktop置心一处,无事不成。二、编程(四)笔记黑马程序员.NET视频教程-Time第课-数据库开发及ado.netSchool.mdf',

    size=5mb,

    --filegrowth=10mb,

    filegrowth=10%,--按照文件的百分比增长

    maxsize=100mb

    )

    log on

    (

    name='School_log',

    filename='D:Desktop置心一处,无事不成。二、编程(四)笔记黑马程序员.NET视频教程-Time第课-数据库开发及ado.netSchool_log.ldf',

    size=3mb,

    filegrowth=3%,

    maxsize=20mb

    )

     

    --切换数据库

    use School;

    --在School数据库中创建一个学生表.TableStudent

    Create table TblStudent

    (

       --表中列的定义在这对小刮号中

       tSId int identity(1,1)  primary key,

       tSName nvarchar(10) not null ,

       tSGender bit not null,

       tSAddress nvarchar(300),

       tSPhone varchar(100),

       tSAge int,

       tSBirthday datetime,

       tSCardId varchar(18),

       tsClassId int not null--最后一行不加“,”

    )

    go

    --创建一个班级表

    create table TblClass

    (

    tclassId int identity(1,1) primary key,

    tclassName nvarchar(50) not null,

    tclassDesc nvarchar(100)

    )

    介绍生成脚本工具

    数据库→右键→任务→生成脚本

    可选择生成什么样的脚本

    1. 选择生成的数据库版本
    2. 是否包含某些脚本等
    3. 是否生成带数据的脚本(2005、2008都有该功能Express没有。)

    简单数据插入INSERT

    --使用insert语句向数据库的表中插入数据

    select * from TblClass

    --1.insert向表中插入一条数据

    insert into TblClass(tclassName ,tclassDesc ) values('Time第三期','珍惜时光')

    --向自动编号列插入数据

    set identity_insert tblClass on

    insert into TblClass(tclassId ,tclassName ,tclassDesc ) values(101,'Time第三期','珍惜时光')

    set identity_insert tblClass off

    --Ctrl+R 快捷键

    --如果要向该表中的除了自动编号以外的其它所有列都插入数据,则可以省略列名

    insert into TblClass values('Time第四期','时光不老,你我不散')

     

    select * from TblStudent

     

    --向TblStudent表中插入数据

    ----表中列的定义在这对小刮号中

    --   tSId int identity(1,1)  primary key,

    --   tSName nvarchar(10) not null ,

    --   tSGender bit not null,

    --   tSAddress nvarchar(300),

    --   tSPhone varchar(100),

    --   tSAge int,

    --   tSBirthday datetime,

    --   tSCardId varchar(18),

    --   tsClassId int not null--最后一行不加“,”

     

    insert into TblStudent(tSName,tSGender,tSAddress,tSPhone,tSAge,tSBirthday,tSCardId,tsClassId)

    values('Time001',0,'上海区','1778918281',18,'1989-10-11','78267287282819829X',1)

     

    insert into TblStudent

    values('Time001',0,'上海区','1778918281',18,'1989-10-11','78267287282819829X',1)

     

    --insert语句向表中那些不允许为空的列插入数据(tsClassId 不允许为空,必须插入数据)

    insert into TblStudent(tSName,tSGender ,tSAddress ,tsClassId )

    values('Time002',0,'上海''郊区',2)

    --null值就是表示空值

     

    --insert into语句一次只能向表中插入一条记录,如果通过一条语句向表中插入多条记录,

    --则需要使用其它方式insert语句。

     

    select * from TblClass

    --通过一条sql语句向表中插入多条sql语句

    insert into TblClass(tclassName ,tclassDesc)

    select 'Time第五期','珍惜时间,岁月不老' union

    select 'Time第五期','珍惜时间,岁月不老' union

    select 'Time第五期','珍惜时间,岁月不老' union

    select 'Time第五期','珍惜时间,岁月不老' union

    select 'Time第五期','珍惜时间,岁月不老' --最后一行不需要union

     

    create table TblClassBak

    (

    ClsId int identity(1,1) primary key,

    ClsName nvarchar(50) not null,

    ClsDesc nvarchar(50) null

    )

     

    select * from TblClassBak

    --将TblClass表中的数据导入(复制)到TblClassBak表中

    --也是使用Insert语句

    --insert into表(列) select 列,列from 表

    insert into TblClassBak (ClsName ,ClsDesc )

    select tclassName,tclassDesc from TblClass

    --N前缀,在存储中文字符时候,必须加大写字母N。

    简单数据更新(数据修改)

    use School

     

    select * from TblClass

    --更新语句

    update 表名 set 列名=值,列名=值 where 条件

    --在编写更新语句的时候,如果没有where条件则表示将表中的所有数据都更新为指定的数据。

    --所有学生年龄加

    update Student set sAge=sAge+1

    --这么写tclassName='▲',表示这列的值变为一个‘▲’

    --而我们的要求是在原来的列的基础上加上‘▲’

    update TblClass set tclassName=tclassName +'▲' where tclassId <100

    --更新多列

    update TblClass set tclassName=tclassName +'▲',tclassDesc =tclassDesc+'★' where tclassId =100

    --where中可以使用其它的运算符:(||)or ,<>(!=), (&&)and,(!)not

    简单数据删除(DELETE)

    删除表中全部数据:delete from Student

    Delete 只是删除数据,表还在,和Drop Table不同

    Delete 也可以带whre子句删除一部分数据:例:delete from student where sAage >20

    Truncate table student 的作用跟delete from student 一样

    都是删除student表中的全部数据,区别在于:

    1.  Truncate语句非常高效。由于truncate操作采用按照最小方式记录日志,所以效率比较高。对于数百万条数据使用truncate删除只要几秒钟,而使用delete需要几个小时。

    2.  Truncate语句会把表中的自动编号重置为默认值(恢复到种子的位置),而通过delete删除表中的数据后,还是从之前的数据继续添加。

    3.  Truncate语句不触发delete触发器。

    4.  Truncate 只能将表中所有数据删除,无法添加where,不能根据条件来删除。

    --复习

    insert into 表(列) values(值)

    update 表 set 列=值,列=值 where ...

    --删除语句

    delete from 表名  where ...

    select * from TblClass

    --删除tclassId为偶数的数据

    DELETE FROM TblClass where tclassId%2=0

    --删除表中全部数据

    delete from TblClass

    truncate table TblClass

    --删除表

    drop table TblClass

    通过设计器增加约束(结束.保证数据完整性)

    --通过设计器添加约束

    --为EmapEmail添加一个唯一约束

    --设计→右键→索引/键(已存在EmpId主键索引)→添加→设置(类型:唯一键;选择对应的列)

     

    --为性别添加一个默认约束,默认为'男'

    --设计→选中该列→在下方属性中→默认值或绑定(输入:男)

     

    1.主键约束

    2.外键约束

    3.唯一约束

    4.默认约束

    5.检查约束

    6.非空约束

    7.添加外键时,设置级联更新,级联删除

    通过SQL添加约束

    --删除表

    drop table Employees

    drop table Department

    --创建表

    create table Employees

    (

        EmpId int identity(1,1),

        EmpName varchar(50),

        EmpGender char(2),

        EmpAge int,

        EmpEmail varchar(100),

        EmpAddress varchar(500)

    )

    create table Department

    (

        DepId int identity(1,1),

        DepName varchar(50)

    )

    -============手动增加约束==========

    --手动删除一列(删除EmpAddress列)

    alter table Employees drop column EmpAddress --删除、修改时候需要加关键字column,添加时候则不需要。

     

    --手动增加一列(增加一列EmpAddr varchar(1000))

    alter table Employees add  EmpAddr varchar(1000) not null

     

    --手动修改一下EmpEmail的数据类型(varchar(200))

    alter table Employees alter column EmpEmail varchar(200) not null

     

    --为EmpId添加一个主键约束

    alter table Employees add

    constraint PK_Employees_EmpId primary key(EmpId)

     

    --非空约束,为EmpName增加一个非空约束

    alter table Employees alter column EmpName varchar(50) not null

     

    --为EmpName增加一个唯一约束

    alter table Employees add constraint

    UQ_Employees_EmpName unique(EmpName)

     

    --为性别增加一个默认约束,默认为'男'

    alter table Employees add constraint

    DF_Empyloyees_EmpGender default('男') for EmpGender

     

    --为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。

    alter table Employees add constraint

    CK_Employees_MepAge check(EmpAge>=1 and EmpAge<=120)

     

     

    --创建一个部门表,然后为Employee表增加一个DepId列。

    alter table Employees add DepId varchar(50) not null

     

    --为Department表增加一个主键约束

    alter table Department add constraint

    PK_Department_DepId primary key(DepId)

     

    --为DepName列增加一个非空约束与唯一约束

    --非空约束

    alter table Department alter column DepName varchar(50) not null

    alter table Department add constraint UQ_Department primary key(EepName)

     

    --为Employee表增加一个DepId列。

    alter table Employees add DepId int not null

     

    --增加外键约束

    alter table Employees add constraint

    FK_Emolopyees_DepId foreign key(DepId) references Department(DepId)

     

     

    --删除Employee

    drop table Employees

    drop table Department

    truncate table TblClass

     

    --通过sql代码删除约束

    alter table Employees drop constraint CK_Employees_EmpAge

     

    --用一句话来删除相应的约束

    alter table Employees drop constraint

    CK_Employees_EmpAge,

    CK_Employees_MepAge,

    DF_Empyloyees_EmpGender

     

    --通过一句代码来创建所有约束

    alter table Employees add

    constraint UQ_Employees_Empname unique(Empname)

    constraint CK_Employees_EmpAge check(EmpAge>=1 and EmpAge<=120),

    onnstraint DF_Employees_EmpGender default('男') for EmpGender,

    constraint FK_Employees_Dempartment foreign key(DepId)

    references Department(DepId) on delete cascade on update cascade

    数据检索:数据查询

    --查询所有数据:表中的所有列的所有行。

    select 

    from TblStudent

    --查询指定的列的数据,由于没有加where条件所以这里也是要返回所有行的数据。

    select tsname,tsgender,tsage

    from TblStudent

    --as 可以设置显示的列名

    select '黄林' as 姓名,18 年龄,'huanglin@yahoo.com' 邮箱

    select 1+1 as '1+1的结果'

    --获取当前系统时间(网格型)

    select getdate() as 时间

    --输出时间(文本型)

    print getDATE()

    TOPDistinct

    TOP/Distinct

    --查询前五个

    select top 5 * from Employees

    --查询ID最大值前五条,降序排序

    select top 5 * from Employees order by EmployeeId desc

    --查询部分数据前五条

    select top 5

      Lastname,

      FirstName,

      [Address]--因为Address是关键,则需加上[]

      from Employees

    --查询前百分之十(向上取整)

    select top 10 percent * from Employees

     

    --获取年级最小的五个学生

    select top 5 * from TblStudent order by tsage asc

    --获取年纪最大的%的学生

    select top 10 * from TblStudent order by tsage desc

     

    --distinct是对查询出的整个结果集进行数据重复处理的,而不是针对某一列

    select

        distinct

        tsname,

        tsgender,

        tsaddress

    from TblStudent

    聚合函数                                        

    SQL聚合函数:

    MAX(最大值)、MIN(最小值)、AVG(平均值)、SUM(和)、COUNT(数量:记录的条数)

  • 相关阅读:
    Python 基础 -2.4.2 生成器,迭代器
    Python 基础 -2.4.1 装饰器
    Python 基础 -2.4 函数进阶,名称空间,闭包,高阶函数,递归,匿名函数,生产式,生成器,迭代器
    Python 基础 -2.3 函数
    python中字典,元组,列表和字符串之间的转换
    input和raw_input区别
    Python 基础 -2.2 文件操作
    Golang之AES/DES加密解密
    Golang与MySQL
    RTFM
  • 原文地址:https://www.cnblogs.com/Time_1990/p/5755130.html
Copyright © 2020-2023  润新知