1、SQL查询
2、约束
1)作用:保证数据的完整性,一致性,有效性.
2)约束分类:
默认约束(default)
插入记录,不给该字段赋值,则使用默认值
非空约束(not NULL)
不允许该字段的值有空值(NULL)
字段名 TYPE not null defalut ‘任意输出默认值’
3、索引
1)定义:
对数据库表的一列或多列的值进行排序的一种结构(Btree方式 != 二叉树)
2)优点:
加快数据检索速度
3)缺点:
占用物理存储空间
当对表中数据更新时,索引需要动态维护,降低数据维护速度
索引示例:
1)开启运行时间检测: set profiling = 1
2)执行查询语句
select name from 表名 where name = ‘查询名’;
3)查看执行时间
show profiles;
4)在name字段创建索引
create index name on 表名(name);
5)再执行查询语句
select name from 表名 where name = ‘查询名’
6)再查看执行时间进行比较
索引
1)索引的分类(约束不同)
1-普通索引(index)
可设置多个字段
字段值无约束
key标志:MUL
创建index:
创建表时
create table 表名(…
index(字段名),index(字段名))
已有表
create index 索引名 on 表名(字段名);
查看索引
decs 表名; --> KEY标志为: MUL
show index from 表名\G;
删除索引
drop index 索引名 on 表名;
2-唯一索引(unique)
基本同于普通索引
使用规则
可设置多个字段
约束: 字段值不允许重复,但可为空值
KEY标志: UNI
创建表时创建
unique(字段名),
unique(字段名)
已有表
create unique index 索引名 on 表名(字段名);
查看、删除 同 普通索引
3-主键索引(primary key)
自增长属性(auto_increment,配合主键一起使用)
使用规则:
只能有一个主键字段
约束: 不允许重复且不能为NULL
KEY标志: PRI
通常设置记录编号字段id,能唯一锁定一条记录
创建
创建表时
(id int primary key auto_increment,
)auto_increment=10000;##设置自增长起始值
已有表添加自增长属性
alter table 表名 modify 字段名 Type auto_increment;
已有表重新指定起始值
alter table 表名 auto_increment=20000
已有表
alter table 表名 add primary key(id);
删除
先删除自增长属性(modify)
alter table 表名 modify id int;
再删除主键索引
alter table 表名 drop primary key;
4-外键索引
4、数据导入
- 作用: 把文件系统内容导入到数据库中
- 语法:
load data infile"文件名"
into table 表名
fields terminated by “分隔符”
lines terminated by “\n”;
3)将.csv文件导入到数据库中
在数据库中创建一个对应的表
selecte database();
show database; # 检索目录下已有库
create database … character set utf8; # utf8 编码格式
create table 表名(
字段名 类型
…
);
把文件拷贝到数据库的默认搜索路径中
show variables like “secure_file_priv”;
拷贝到默认路径下
sudo cp ~/表名.csv /路径
系统未更改时默认路径一般为 /var/lib/mysql-files/
执行数据导入语句
load data infile"/路径/文件.csv"
into table 表名
filelds terminated by “,”
lines terminated by “\n”
;
文件权限:
rwx 分别为 4 2 1 根据chomd x ;
x 的值为权限和, 777 即为 -rwxrwxrwx-
Excel表格如何转化为CSV文件
打开Excel文件 -> 另存为 -> CSV(逗号分隔)
更改文件编码格式
用记事本/编辑器 打开,文件 -> 另存为 -> 选择编码格式
5、数据导出
1)作用
将数据库中表的记录导出到系统文件里
2)语法格式
select … from 表名
into outfile “/var/lib/mysql-files/文件名”
fields terminated by “分隔符”
lines terminated by “\n”;