SQL基础学习笔记

学人智库 时间:2018-01-15 我要投稿
【meiwen.anslib.com - 学人智库】

一、基本操作

创建数据库:createdatabasedatabas_name;

创建表:createtabletable_name(var_name1var_type,var_name2var_type,...);

查看表格式:desctable_name;

删除表:droptabletable_name;

查看数据:select*fromtable_name;

添加数据:intotable_name(column_name1,column_name2,...)

value('value1','value2',...);

选择数据:selectcolumns_namefromtable_name

whereconditions;

更改数据:updatetable_name

setcolumn_name1=value1,column_name2=value2(可以用表达式,如x=x+1)

whereconditions;

删除数据:fromtable_name

whereconditions;

增加列:altertabletable_name(也可用于修改其它的表的特性)

addcolumncolumn_namevar_type(first/last/after/beforecolumn_name2(指定列位置));

改变列数据类型:altertabletable_name

changecolumncolumn_name_oldcolumn_name_newvar_type_new,

modifycolumncolumn_namevar_type_new

排序:orderbycolumn_name(desc)

改特征值分组:groupbycolumn_name

复制表:createtablenew_table_nameas

select*fromold_table_name

二、细节设置和高级命令

限定不允许Null:列数据类型加上notnull

限定赋值范围:列数据类型加上check

列取默认值:列数据类型加上defaultvalue

主键设定:主键特征类型设定为notnull,可以加auto_increment实现自动递增

声明主键:primarykey(column_name)

限制查询数量:limitnumber/number1,number2

声明外键:constraintconstraint_name

foreignkey(column_name)

referenceforeign_column_name(column_name)

联接,给出两列所有的组合可能:

selectname1.column_name1,name2.column_name2

fromtable_name1asname1

crossjoin

table_name2asname2(as可以不写)

自然联接,要求联接的表中名称相同的列要有相同的值,才会选择:naturaljoin

外联接,给出不仅给出满足条件的项,还会列出其中一个表中不满足条件的项,而另一个表对应的数据为Null

子查询,即中间暂存变量,以括号内给出的select语句作为外层查询的输入。据称所有使用子查询的地方都可以用联接来实现

合并,将多次选择得到的结果合并起来:union

视图,即将查询做成函数,方便调用:

createviewview_nameas

selectcolumn_namesfromtable_namewhereconditions

事务,要求一组数据操作要都一起完成,否则则都不进行,防止同时多方对表进行操作

starttransaction;%事务开始

……

rollback;%放弃上面的操作,回到操作前的状态

commit;%完成事务

三、选择时的条件表达

正则表达式:likeexpr

范围选取:in(value_name1,value_name2,...)

betweenvalue1andvalue2

四、表格设计原则

第一范式:1)数据要具有原子性,即每个特征只有一个值,且特征之间不能是同类,比如不应该设置特征为兴趣1,兴趣2,兴趣3...

2)每一行,既每个事例必须要有一个唯一的识别项,即主键

多表:利用多张表来使数据表符合第一范式,用专属表来专门处理具有多个值的特征,以外键将表关联起来

第二范式:1)符合第一范式

2)不存在部分函数依赖,即非主键特征依赖于组合主键的一部分而非全部,只要使用人工主键(与数据无关的id)作为主键即可

第三范式:1)符合第二范式

2)不存在传递函数依赖,即非主键特征之间不存在依赖

[SQL基础学习笔记]