• 复习知识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触发器。

     

  • 相关阅读:
    iOS开发——keychain的使用
    iOS开发——策略模式
    iOS开发——MVC模式
    iOS开发——代理模式
    ExtjsCode_Test02Panel.js
    网站收藏
    关于ExtJs Form表单的赋值、获取、重置
    ExtJS分页start,limit,pageSize的研究
    使Grid可编辑
    如何禁用Grid中的ToolBar中的Button
  • 原文地址:https://www.cnblogs.com/cheshui/p/2609985.html
Copyright © 2020-2023  润新知