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 提交,此操作之后,之前的就无法再进行回滚了。

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

  • 相关阅读:
    mongodb单机搭建
    zeus部署
    hive单机部署
    datax部署
    hadoop/hbase/hive单机扩增slave
    读取Jar中的json文件
    Mybatis 一对多 简单映射配置
    java/kotlin 读取文件、写入文件
    ES6中Json、String、Map、Object之间的转换
    java 客户端发起http请求2
  • 原文地址:https://www.cnblogs.com/zach0812/p/12227163.html
Copyright © 2011-2022 走看看