zoukankan      html  css  js  c++  java
  • 第四篇:SQL语法基础

    Create database:

    Create table:

    创建完数据库之后,我们就可以去创建表了

    创建表的三种方式:

    一:传统方式创建表:

    student 为表名,括号内为表中包含的属性。

    temporary 关键字:

    二:复制表结构(不复制数据)的方式创建表(使用like 关键字):

    注:主键等信息使用like 也可以复制过来。

    三:as  ...select 语句  方式创建表:

    关于是否为Null:

    下面的是不可以的:

    因为id 必须得是非空。

    修改 default 的值:

    CREATE TABLE `stu_temp` (
    `id` int(11) NOT NULL DEFAULT '0',
    `name` varchar(20) DEFAULT NULL
    ) ENGINE=InnoDB

    上面直接 将一个属性定义为 auto_increment 是不行的,一般都是先将其定义为主键,然后可以再定义为自增属性。

    如下可以:

    Unique 可以允许包含多个null ,但是多个“”则是不可以的,二者有着本质的区别,null代表的是未知!

    unique key 和 primary key 的主要区别:

    Unique key 可以有多个,而 primary key 只能有一个!

    在现有表上再增加一个字段

    如何修改字段名字:

    给已有表上的某个字段设置为主键:

    Alter table 表名 Add Constraint PrimaryKey Primary Key (主键字段名)

    关于外键 foreign key:

    student 表:

    course 表:

    stu_course_relation表:

    但是,对于 stu_course_realtion 表,我们确实是可以任意插入数据的,如果想限制其的话,我们创建表的时候就得用到外键了。

    此时,就不可以随意的插入数据了,此时要求所插入的数据必须在 所关联的表中存在。

    Insert 语句:

    第一种是使用values:

    第二种是使用set:

    第三种是使用select:

    将查询的结果直接插入到表中,

    假设有一个 dept_bak 表:

     我们现在将 dept 中的数据查询之后 插入到这个表中,

    此时的dept_bak 中就有数据了,

    :select 出的数据要和 将要插入的表的字段一致!

    dept 表如下:

    如果此时进行如下插入:

    则会出现,主键冲突,

    如果不想让它报错,可以进行如下操作(on duplicate key update),

    此时,就仅仅是 update 下dept_name 字段,

    dept 表如下:

    update 语句:

    dept 如下:

     单纯这样是不行的,会报错,[23000][1062] Duplicate entry '1002' for key 'PRIMARY'

    一个很好的解决方案是倒序着来,

    如下:

    此时就不会报错了,修改后的dept 如下:

    单表修改:

    update 语句的意义主要是用来修改已经存在的数据。

    limit 的用法:

    其中的limit 一般是 配合 order by 来是用的,limit 用来指定修改几行的数据, 

    初始为:

    多表修改:

    下表为dept:

    下表为dept_temp:

    现在要将 dept_temp 中的数据update 到 dept 中:

    执行操作之后的dept表为:

    启用回滚机制:

    可以发现 autocommit 自动提交是 默认打开的,

    我们可以把它关闭,

    此后如果出现 失误操作我们就可以通过  回滚 来撤销操作了,

    但我们确定了数据是我们要的时候,可以手动 commit 提交,此操作之后,之前的就无法再进行回滚了。

    具体的内容到 事务里会 细说!!!

  • 相关阅读:
    .NetCore Grpc 客服端 工厂模式配置授权
    DOCKER 拉取 dotnet 镜像太慢 docker pull mcr.microsoft.com too slow
    Introducing .NET 5
    VSCode 出现错误 System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached.
    Omnisharp VsCode Attaching to remote processes
    zookeeper3.5.5 centos7 完全分布式 搭建随记
    Hadoop2.7.7 centos7 完全分布式 配置与问题随记
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序
    SQL基础随记3 范式 键
    MySQL调优 优化需要考虑哪些方面
  • 原文地址:https://www.cnblogs.com/zach0812/p/12227163.html
Copyright © 2011-2022 走看看