Day3-体系结构+查询+导入/出

Mysql体系结构

Mysql存储引擎

存储引擎——处理不同类型表的处理器

        不同的存储引擎有不同的功能和存储方式

        在建表时可以设置表使用的存储引擎

        若不设置,新建的表使用mysql服务默认的存储引擎。

Show engines    查看当前数据库服务支持的存储引擎

Innodb    |default    Supports transactions, row-level locking, and foreign keys

    .frm    表结构        .ibd表记录和表索引        学名:共享表空间

Myisam    不支持外键,不支持事务

.frm    表结构     .myd    表记录        .myi    表索引        独享表空间

修改mysql配置文件

修改 默认存储引擎

   

事务——一次sql操作从开始到结束过程

事务回滚——若一次SQL操作没有成功,就把数据还原到操作之前的状态——例:向银行转账,若转账不成功,回滚

锁机制——可锁记录或锁表

解决并发访问冲突问题

锁的范围取决于存储引擎

读锁(共享锁)

写锁(排它锁    互斥锁)

   

Mysiam    表锁        查看比较多的使用该引擎

Innodb        行锁        写操作比较多的使用该引擎

   

Mysql体系结构——8个

1连接池(内存    CPU    进程数)

客户端要提供连接工具——语言连接数据库

2管理工具    提供mysql数据库服务的软件自带的命令

3 SQL接口——传递SQL命令给MYSQLD进程

4分析器——SQL命令格式是否正确,对操作操作的库、表是否有使用权限

5优化器——优化执行的SQL语句,让系统使用最少的资源去执行SQL命令

6缓存区——在mysql数据库服务时,会划分一定的系统物理内存给mysql服务做缓存

7储存引擎    myisam    innodb    

8文件系统——存储设备/var/lib/mysql/数据库名/表.*

   

数据导入——把系统文件的内容保存到数据库服务器的表里

    可以把系统用户信息保存数据库服务器的表里    

mysql> create table user_user(user varchar(30),password char(1),uid int(2),gid int(2),comment varchar(50),home varchar(50),shell varchar(50),index(user) );

mysql> load data infile '/etc/passwd' into table user_user fields terminated by ':' lines terminated by '\n';

mysql> alter table user_user add id int(6) primary key auto_increment first;

数据导入命令

LOAD DATA INFILE '文件名' INTO TABLE    表名    FIELDS TERMINATED BY '分隔符'    LINES TERMINATED BY '\n';

导入数据时注意事项

    表中字段的个数要和文件中列的个数相等

    字段的类型要与文件中列的值匹配

   

数据导出——把数据库表里的记录保存到系统文件里

mysql> select * from 表名 into outfile '导出的文件位置';

默认以TAB键为间隔可以使用

后面加        fields terminated by "符号"——————这是设置列分隔的

后面加        lines terminated by "符号";——————这是设置行分隔的

mysql> select * from user_user into outfile '/tmp/user.txt';

mysql> select * from user_user into outfile '/tmp/user.txt' fields terminated by "#";

注意事项

导出的内容由SQL查询语句决定若不指定路径,默认会放在执行导出命令时所在库对就的数据库目录下。就确保mysql用户对目标文件夹有写权限

   

表记录和基本操作

select 查     ——不消耗CPU,消耗内存

select 字段名列表 from 表名;

select 字段名列表 from 数据库名.表名where 条件表达式;

字段名列表

*     所有字段

字段名

字段名1、字段名2、字段名…

条件表达式

数值比较比较——字段名    比较符号(>、>=、<、<=、=、!=)    数字

 

字符比较——字段名    比较符号(=、!=)    "字符串"

 

范围内查找

In    在...里

Not    in    不在...里

Between    ....    and——————一般只用于数字,字符很少,不精准

匹配空    字段名    is    null

匹配非空    字段名is    not    null

 

逻辑比较——查询时使用 2个或2个以上查询条件

逻辑与    and    多个条件必须同时成立

逻辑或    or    多个条件只要有一个条件成立就可以

逻辑非    !    取反

 

DISTINCT不显示重复的值

Select distinct 字段名 from 表名

 

模糊查询    like

Where    字段名 like '表达式'

%匹配0到多个字符

_匹配任意一个字符

 

使用正则表达式做查询条件

Where 字段名 REGEXP '正则表达式'

^    首

$    尾

[]    范围

.    任意一个字符

 

查询时可运算——四则运算

    +    -    *    /    %

常用的统计的函数

集合的平均值——avg()

对集合中的各参数求和——sum()

集合中的最好小值——min()

集合中的最好大值——max()

记录的个数——count()

   

排序    order by    字段名 排序方式

    排序方式——ASC升序(默认) DESC降序

分组    group by    字段名    [having条件]

 

限制显示记录的条目数    limit

Limit N,M

N    表示从查询结果的第几条记录开始显示

    默认从查询结果的第1条记录开始显示    第一条记录的编号是零

M    显示记录的条目数

 

update改

批量修改    update 数据库名.表名    set    字段名="值",字段名="值"

    只修改符合条件的记录中指定字段的值

    批量修改    update 数据库名.表名    set    字段名="值",字段名="值" where 条件表达式

给表赋空值    update 表名 set comment=NULL

条件表达式——数值、字符、范围内、空、非空、模糊、正则表达式、逻辑比较

 

delete删 ——删除的是整条记录

删除表中的所有记录delece from 数据库名.表名;

删除指定的记录delece from 数据库名.表名 where 条件表达式;

 

insert增 ——添加一条新记录(默认:新的记录都追加已有记录的末尾)

添加新记录时,只给记录的某几个字段赋值

    insert into 表名(字段名1,字段名2,字段名..)values(值1,值2,值..)

添加新记录时,给记录的所有字段赋值

    insert into 表名 values(值1,值2,值..)

*值与字段类型要匹配

 

嵌套查询——消耗资源内存较多

里层查询结果做为外层查询条件

select * from 表名 比较( select * from 表名)

posted @ 2016-09-02 22:36  Final233  阅读(148)  评论(0编辑  收藏  举报