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

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

原文地址:https://www.cnblogs.com/zach0812/p/12227163.html