第四篇:SQL语法基础
Posted Zcb0812
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四篇: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 提交,此操作之后,之前的就无法再进行回滚了。
具体的内容到 事务里会 细说!!!
以上是关于第四篇:SQL语法基础的主要内容,如果未能解决你的问题,请参考以下文章