• 使用MYSQL数据库实现编程----第二章第三章课堂知识小总结


                                                                     第二章
    1:创建数据库
    create database myschool

    2.数据类型
      1.整型 int
      2.小数 double
      精确度要求高的 ----Decimal(18,4)
      22222222211111.3334
      对应的java中的类型 BigDecimal

      3.字符串:nvarchar(32)   varchar  char
       char :定长字符串(一旦设定了长度,无论真实内容有多少,都要占用指定长度的空间。)
       varchar:可变字符串
       nvarchar() 防止中文乱码出现   insert into grade(gradename) values(N'牛X班')

      4.日期类型
        DateTime  yyyy-mm-dd hh:mm:ss.ms

    二:.创建数据表
    create table student
    (
       sid int primary key auto_increment not null,
       sname nvarchar(32)
    )
    #添加记录和SQL 一样  ,表中2列,你能不能
    insert into student(gradename) values('XXX班级')

    1.真实的做表过程
      1.定制表结构
      2.添加约束  (唯一约束  检查约束 主键约束   外键约束  默认值约束)
      3.伪造记录 测试数据

    3.约束添加
      主键约束
      alter table grade
      add constraint PK_GradeId Primary key grade(gradeid)

      --删除主键
     #取消主键列的自增,再删除主键
     ALTER TABLE student MODIFY studentno INT

     #删除主键
     ALTER TABLE student DROP PRIMARY KEY

      外键约束

      alter table student
      add constraint FK_Grade_Student_GradeId Foreign key (gradeid) referrences grade(gradeid)

    ---删除外键   界面上(图形化界面)直接点击无效 (1.先用如下命令删除  2.再点击鼠标删除)
      alter table  student
      drop foreign key FK_Grade_Student_GradeId

      唯一约束 年级名称唯一()
      alter table grade
      add constraint UK_Gradename UNIQUE Key(gradename) 
     
       ---删除唯一约束
       alter table grade
       drop index UK_Gradename

      默认值约束
      alter table grade
      alter column gradename set default 'X班'

      --删除语法
       alter table grade
        alter column gradename drop default

      检查约束  mysql中不起作用 
       alter table student
       add constraint CK_GradeID Check(gradeid<7) 

       --无法删除
    4.一个问题
      有人不会设置外键?
      解析:1.找到外键表    1的一方是主表
            2.外键表中有非法数据
     3.主外键表中公共列的类型必须相同

    5. 默认值约束
      alter  table grade
      alter column 列名 set default '默认值'

    6.赵昌平  检查约束

    7.什么是引擎?
     解析:能让程序启动并执行的一个程序,也称之为驱动。
    搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。
    因特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪洋上的一个个小岛,
    网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为用户绘制一幅一目了然的信息地图,
    供用户随时查阅。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,
    并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。

    个人理解:在软件行业中,能给程序员提供工具类型的帮助的代码集锦等小工具。可以看成是一个引擎。

    8.修改表
     

    8.1 我有一张学生表
        SQLServer  中  studentbak
        select * into 新表名 from  student

        MYSql      中  studentbak
        create table 新表 
        select * from 旧表

     一次性向表中走N条记录

      Sql Server:
      insert into s2229(LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email)
      select LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email from student

      Mysql:
        insert into s2229(LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email)
      select LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email from student


    删除 之delete 和Truncate 巅峰对决
    VS1:delete 可以有where ,删除部分记录  ,Truncate 一删除所有记录
    VS2: delete  删除后可以恢复,记录日志     Truncate 删除后不可恢复,不记录日志
    VS3: delete  删除效率低一些               Truncate  删除速度快,效率高
    VS4:delete  删除后编号会接着上次最大值   Truncate  截断表:编号从1开始

    #主键约束
    ALTER TABLE grade
    ADD CONSTRAINT PK_GradeId PRIMARY KEY grade(gradeid)
    -- 删除主键
    #取消主键列的自增,再删除主键
    ALTER TABLE student MODIFY studentno INT
    #删除主键
    ALTER TABLE student DROP PRIMARY KEY
    
    
    
    #外键约束
    ALTER TABLE student
    ADD CONSTRAINT FK_Grade_Student_GradeId FOREIGN KEY (gradeid) referrences grade(gradeid)
    
    #删除外键界面上(图形化界面) 直接点击无效(1.先用如下命令删除2.再点击鼠标删除)
    ALTER TABLE
    DROP FOREIGN KEY FK_Grade_Student_GradeId
    
    
    
    
    #唯一约束年级名称唯一()
    ALTER TABLE grade
    ADD CONSTRAINT UK_Gradename UNIQUE KEY(gradename)
    # 删除唯一约束
    ALTER TABLE grade
    DROP INDEX UK gradename
    
    
    #默认值约束
    ALTER TABLE grade
    ALTER COLUMN gradename SET DEFAULT'X班'
    # 删除默认值约束
    ALTER TABLE grade
    ALTER COLUMN gredename DROP DEFAULT;
    
    
    
    
    #检查约束
    
    ALTER TABLE student
    ADD CONSTRAINT CK_GradeID CHECK(gradeid<7)
    
    # 创建备份表
    
    CREATE TABLE student2
    SELECT *FROM student
    
    
    #修改表名
    ALTER    TABLE student2 RENAME student3
    
    #添加字段
    ALTER TABLE grade ADD result VARCHAR(32) NOT NULL
    
    #修改字段
    ALTER TABLE student CHANGE idNumber identityCard CHAR(19) NOT NULL
    
    #删除字段
    ALTER TABLE grade DROP result 
    
    
    #插入单行数据
    INSERT INTO student (loginPwd,studentName,sex,gradeID,phone,address,bornDate,email,identityCard)
     VALUES(111,'','',111111,11111111,'北京','1999-08-09','1234@qq.com','123454656'); 
     
     
    #插入多行数据
    INSERT INTO student (loginPwd,studentName,sex,gradeID,phone,address,bornDate,email,identityCard)
     VALUES(111,'','',111111,11111111,'北京','1999-08-09','1234@qq.com','123454656'),
     (2222,'周明','',22222222,22222222233,'海淀','2001-09-09','123456@qq.com','12345678901'); 
    
    ---------------------------------------------------
    #连接字符串
    SELECT CONCAT ('1','2','3')
    #替换值
    SELECT INSERT ('这是SQL Server数据库的',3,10,'my SQL')    
    #全部变为小写
    SELECT LOWER ('my SQL')
    #全部变为大写
    SELECT UPPER ('my SQL')
    #截取
    SELECT SUBSTRING('wwfdduu',3,6)
    #当前的日期
    SELECT CURDATE();
    #当前的时间
    SELECT CURTIME();
    #当前日期和时间
    SELECT NOW();
    #返回一年的第几周期
    SELECT WEEK(NOW());
    #返回日期的年份
    SELECT YEAR(NOW());
    #返回小时值
    SELECT HOUR(NOW());
    #返回分钟值
    SELECT MINUTE(NOW());
    #之间相隔的天数
    SELECT DATEDIFF(NOW(),'2008-8-8');
    #加上几天后的天数
    SELECT ADDDATE(NOW(),5);
    #返回最小值的整数
    SELECT CEIL(2.3);
    #返回最大值的整数
    SELECT FLOOR(3.4);
    #0-1之间的随机数
    SELECT RAND();
        
        
        
  • 相关阅读:
    程序大牛由浅入深,带你学习面向对象编程
    「JVM」知识点详解一:JVM运行原理详解
    MySQL数据的高效检索
    一文教您如何实现持续集成服务器环境搭建
    有了Java8的“+”真的可以不要StringBuilder了吗
    关于处理iis8.0中设置Request.BinaryRead 不允许操作的解决方法
    windows怎样查看被程序占用的端口
    微信多客服功能与第三方授权客服系统的冲突问题
    asp.net 获得伪静态网址解决微信sdk签名问题
    nginx buffered to a temporary 解决
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8405378.html
Copyright © 2020-2023  润新知