mysql学习心得

MySQL学习心得

在数字化时代的浪潮中,数据库技术无疑成为了支撑各种应用的核心。而MySQL,作为开源的关系型数据库管理系统,因其高性能、易用性和灵活性而备受青睐。近期,我深入学习了MySQL的相关知识,以下是我的一些学习心得。

一、初识MySQL

刚开始接触MySQL时,我被其丰富的功能和复杂的命令所震撼。我了解到,MySQL不仅支持基本的增删改查操作,还提供了事务处理、存储过程、触发器等高级功能。同时,其SQL语言也是一门强大的查询语言,能够让我灵活地操作数据。

二、学习过程中的挑战与收获

学习过程中,我遇到了不少挑战。首先,MySQL的语法规则繁多,需要花费大量时间进行记忆和练习。其次,数据库设计也是一门学问,需要考虑数据的完整性、安全性和性能等因素。然而,正是这些挑战,让我更加深入地理解了数据库技术的精髓。

在学习过程中,我逐渐掌握了MySQL的基本操作,如建表、插入数据、查询数据等。同时,我也学会了如何设计合理的数据库结构,以及如何使用索引、优化查询等方式提高数据库的性能。这些技能不仅让我能够更好地完成实际工作,也为我未来的职业发展打下了坚实的基础。

三、实践中的体会

为了巩固所学知识,我尝试将MySQL应用到实际项目中。在项目中,我遇到了各种问题和挑战,如数据冗余、查询效率低下等。然而,正是这些问题让我更加深入地理解了数据库技术的实际应用。通过不断地尝试和改进,我逐渐找到了解决问题的方法,并成功地完成了项目。

在实践中,我深刻体会到了数据库技术的重要性。一个优秀的数据库设计能够大大提高系统的性能和稳定性,同时也能够降低维护成本。因此,我意识到自己在未来的工作中需要更加注重数据库的设计和优化。

四、展望未来

虽然我已经掌握了MySQL的基本操作和技能,但我知道自己还有很长的路要走。随着技术的不断发展和应用场景的不断变化,数据库技术也在不断地更新和迭代。因此,我需要不断地学习和探索新的技术和方法,以适应未来的发展需求。

同时,我也希望能够将所学的MySQL知识应用到更多的实际项目中,通过实践不断地提高自己的能力和水平。我相信,在未来的工作中,我会更加深入地理解数据库技术的核心原理和应用场景,为企业的数字化转型贡献自己的力量。

总之,MySQL的学习过程虽然充满了挑战和困难,但也让我收获了很多宝贵的经验和知识。我会继续努力学习和探索新的技术和方法,为自己的职业发展打下坚实的基础。

以下是我总结的知识点

1.数据库的连接

mysql -u -p -h

-u 用户名

-p 密码

-h host主机

2:库级知识

2.1 显示数据库: show databases;

2.2 选择数据库: use dbname;

2.3 创建数据库: create database dbname charset utf8;

2.3 删除数据库: drop database dbname;

3: 表级操作:

3.1 显示库下面的表

show tables;

3.2 查看表的结构:

desc tableName;

3.3 查看表的创建过程:

show create table  tableName;

3.4 创建表:

 create table tbName (

列名称1 列类型 [列参数] [not null default ],

....列2...

....

列名称N 列类型 [列参数] [not null default ]

)engine myisam/innodb charset utf8/gbk

3.4的例子:

create table user (

    id int auto_increment,

    name varchar(20) not null default '',

    age tinyint unsigned not null default 0,

   index id (id)

   )engine=innodb charset=utf8;

注:innodb是表引擎,也可以是myisam或其他,但最常用的是myisam和innodb,

charset 常用的有utf8,gbk;

3.5 修改表

3.5.1   修改表之增加列:

alter table tbName

add 列名称1 列类型 [列参数] [not null default ] #(add之后的旧列名之后的语法和创建表时的列声明一样)

3.5.2   修改表之修改列

alter table tbName

change 旧列名  新列名  列类型 [列参数] [not null default ]

(注:旧列名之后的语法和创建表时的列声明一样)

3.5.3   修改表之减少列:

alter table tbName

drop 列名称;

3.5.4   修改表之增加主键

alter table tbName add primary key(主键所在列名);

例:alter table goods add primary key(id)

该例是把主键建立在id列上

3.5.5   修改表之删除主键

alter table tbName drop primary key;

3.5.6   修改表之增加索引

alter table tbName add [unique|fulltext] index 索引名(列名);

3.5.7   修改表之删除索引

alter table tbName drop index 索引名;

3.5.8   清空表的数据

truncate tableName;

4:列类型讲解

列类型:

        整型:tinyint (0~255/-128~127) smallint (0~65535/-32768~32767) mediumint int bigint (参考手册11.2)

        参数解释:

        unsigned 无符号(不能为负)  zerofill 0填充  M 填充后的宽度

        举例:tinyint unsigned;

             tinyint(6) zerofill;  

数值型

        浮点型:float double

        格式:float(M,D)  unsigned\zerofill;

字符型

        char(m) 定长

        varchar(m)变长

        text

列          实存字符i        实占空间            利用率

char(M)      0<=i<=M            M                i/m<=100%

varchar(M)    0<=i<=M          i+1,2             i/i+1/2<100%

   

               year       YYYY 范围:1901~2155. 可输入值2位和4位(如98,2012)

日期时间类型   date       YYYY-MM-DD 如:2010-03-14

               time       HH:MM:SS    如:19:26:32

               datetime   YYYY-MM-DD  HH:MM:SS 如:2010-03-14 19:26:32

               timestamp  YYYY-MM-DD  HH:MM:SS 特性:不用赋值,该列会为自己赋当前的具体时间

5:增删改查基本操作

5.1 插入数据

        insert into 表名(col1,col2,……) values(val1,val2……); -- 插入指定列

        insert into 表名 values (,,,,); -- 插入所有列

        insert into 表名 values       -- 一次插入多行

        (val1,val2……),

        (val1,val2……),

        (val1,val2……);

5.3修改数据

        update tablename

        set

        col1=newval1, 

        col2=newval2,

        ...

        ...

        colN=newvalN

        where 条件;

5.4,删除数据    delete from tablenaeme where 条件;

5.5,    select     查询

  (1)  条件查询   where  a. 条件表达式的意义,表达式为真,则该行取出

                          b.  比较运算符  = ,!=,< > <=  >=

                           c.  like , not like ('%'匹配任意多个字符,'_'匹配任意单个字符)

                              in , not in , between and

                           d. is null , is not null                 

  (2)  分组       group by

                       一般要配合5个聚合函数使用:max,min,sum,avg,count

  (3)  筛选       having

  (4)  排序       order by

  (5)  限制       limit

6:      连接查询

6.1, 左连接

        .. left join .. on

        table A left join table B on tableA.col1 = tableB.col2 ;

  例句:

  select 列名 from table A left join table B on tableA.col1 = tableB.col2

2.  右链接: right join

3.  内连接:  inner join

左右连接都是以在左边的表的数据为准,沿着左表查右表.

内连接是以两张表都有的共同部分数据为准,也就是左右连接的数据之交集.

7       子查询

  where 型子查询:内层sql的返回值在where后作为条件表达式的一部分

  例句: select * from tableA where colA = (select colB from tableB where ...);

  from 型子查询:内层sql查询结果,作为一张表,供外层的sql语句再次查询

  例句:select * from (select * from ...) as tableName where ....

8: 字符集

  客服端sql编码 character_set_client

  服务器转化后的sql编码 character_set_connection

  服务器返回给客户端的结果集编码     character_set_results

  快速把以上3个变量设为相同值: set names 字符集

   存储引擎 engine=1\2

  1 Myisam  速度快 不支持事务 回滚

  2 Innodb  速度慢 支持事务,回滚

  ①开启事务          start transaction

  ②运行sql;         

  ③提交,同时生效\回滚 commit\rollback

  触发器 trigger

  监视地点:表

  监视行为:增 删 改

  触发时间:after\before

  触发事件:增 删 改

  创建触发器语法

        create trigger tgName

        after/before insert/delete/update

        on tableName

        for each row

        sql; -- 触发语句

       

  删除触发器:drop trigger tgName;

 索引

 提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑.

 索引不是越多越好,一般我们在常出现于条件表达式中的列加索引.

 值越分散的列,索引的效果越好

 索引类型

 primary key主键索引

 index 普通索引

 unique index 唯一性索引

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值