一、基本操作 创建数据库:create database databas_name; 创建表:create table table_name(var_name1 var_type,var_name2 var_type,...); 查看表格式:desc table_name; 删除表:drop table table_name; 查看数据:select * from table_name; 添加数据:insert into table_name(column_name1,column_name2,...) value('value1','value2',...); 选择数据:select columns_name from table_name where conditions; 更改数据:update table_name set column_name1=value1,column_name2=value2(可以用表达式,如x=x+1) where conditions; 删除数据:delete from table_name where conditions; 增加列:alter table table_name(也可用于修改其它的表的特性) add column column_name var_type (first/last/after/before column_name2(指定列位置)); 改变列数据类型:alter table table_name change column column_name_old column_name_new var_type_new, modify column column_name var_type_new 排序:order by column_name (desc) 改特征值分组:group by column_name 复制表:create table new_table_name as select * from old_table_name 二、细节设置和高级命令 限定不允许Null:列数据类型加上not null 限定赋值范围:列数据类型加上check 列取默认值:列数据类型加上default value 主键设定:主键特征类型设定为not null,可以加auto_increment实现自动递增 声明主键:primary key(column_name) 限制查询数量:limit number/number1,number2 声明外键:constraint constraint_name foreign key (column_name) reference foreign_column_name (column_name) 联接,给出两列所有的组合可能: select name1.column_name1,name2.column_name2 from table_name1 as name1 cross join table_name2 as name2(as可以不写) 自然联接,要求联接的表中名称相同的列要有相同的值,才会选择:natural join 外联接,给出不仅给出满足条件的项,还会列出其中一个表中不满足条件的项,而另一个表对应的数据为Null 子查询,即中间暂存变量,以括号内给出的select语句作为外层查询的输入。据称所有使用子查询的地方都可以用联接来实现 合并,将多次选择得到的结果合并起来:union 视图,即将查询做成函数,方便调用: create view view_name as select column_names from table_name where conditions 事务,要求一组数据操作要都一起完成,否则则都不进行,防止同时多方对表进行操作 start transaction;%事务开始 …… rollback;%放弃上面的操作,回到操作前的状态 commit;%完成事务 三、选择时的条件表达 正则表达式:like expr 范围选取:in (value_name1,value_name2,...) between value1 and value2 四、表格设计原则 第一范式:1)数据要具有原子性,即每个特征只有一个值,且特征之间不能是同类,比如不应该设置特征为兴趣1,兴趣2,兴趣3... 2)每一行,既每个事例必须要有一个唯一的识别项,即主键 多表:利用多张表来使数据表符合第一范式,用专属表来专门处理具有多个值的特征,以外键将表关联起来 第二范式:1)符合第一范式 2)不存在部分函数依赖,即非主键特征依赖于组合主键的一部分而非全部,只要使用人工主键(与数据无关的id)作为主键即可 第三范式:1)符合第二范式 2)不存在传递函数依赖,即非主键特征之间不存在依赖
|