应该说任何编程语言自学都难

首先,自学属于粗放式学习

你没有目标性,对于所学的知识仅限于记住了,不知道未来这个知识点有什么用途。就像我最近在学Python ,一些比较基的知识点学了忘忘了继续学,连续几遍还是容易忘。因为我没有去实战训练。

其次,自学很难系统性的面面俱到

我们学习老师总是给我们讲解各类知识点的作用,而能够系统性梳理这些知识点很难,你得完全理解各个知识点之间的内在联系。就比如SQL ,分为基础语法部分的增删改查,进阶部分涉及到复杂点的逻辑功能实现,再高级点对语句的性能优化。而这些只是针对SQL 开发而言,还有与之对应的数据库管理那就又是一个体系了。

而想将这些知识全部梳理清楚,没有一个时间的沉淀是做不到的。

最后,学习一门语言还是要多动手

好些自学的都只是跟着别人敲一遍代码就以为是动手了,殊不知真正的动手是离开了教程自己去找训练习题,自己查找解决办法。不仅仅要解决问题,还要解决为什么要这么解。

以上不只针对SQL ,任何自学编程我觉得均是如此。

如何学习SQL语言?

一、数据库连接1、通过命令行连接数据库

[root@localhost ~]# mysql -u root -p

Enter password:

输入以上命令,回车后输入密码,回车,出现 mysql> 命令提示窗口则表示登录成功,可以在mysql>下输入任何sql语句。

2、退出mysql

mysql> exit

Bye

二、创建数据库语法:CREATE DATABASE ;

先连接mysql服务后,再使用sql语句。可以通过命令连接也可以通过客户端工具例如navicat连接,以下创建一个库名为lemon的数据库

mysql> create DATABASE lemon;

三、显示数据库语法:show databases;

示例:查看mysql服务所有数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| future|

| lemon|

| mysql

| test|

| test_mysql|

+--------------------+

四、删除数据库语法:drop database ;

drop删除数据库命令谨慎使用,一旦删除,所有数据都没有了。以下示例:删除一个库名为test的数据库。

mysql> drop DATABASE test;

五、选择数据库语法:use ;

示例:选取数据库lemon进行操作。

mysql> use lemon;

Database changed

六、创建表语法:create table ( , , ..., );

示例:需要创建一个学员信息表,用于存储学号、姓名、性别、班级、年龄。

create table student(

sno int(8) not null primary key auto_increment comment '学号',

sname varchar(20) NOT NULL comment '姓名',

ssex varchar(4) NOT NULL comment '性别',

sclass int(8) NOT NULL comment '班级',

sage int(4) NOT NULL comment '年龄'

)DEFAULT CHARSET=utf8;

解析:

int为整型,这里学号sno、班级编号sclass设定为整型;

varchar字符型,这里姓名sname、性别ssex、年龄sage设定为字符型;

字段属性设定为not null,表示字段值不允许空;

primary key关键字用于定义列为主键。主键唯一、不重复,一般以编号为主键;

auto_increment定义列属性为自增,一般用于主键,插入数据时数值会自动加1;

comment相当于给列添加备注;

DEFAULT CHARSET 设置编码,utf8对传值中文防止乱码。

七、显示数据表mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| student |

| student1 |

+----------------+

八、查看表结构

九、删除表语法:drop table ;

drop删除表请谨慎操作,因为执行删除命令后该表及包含的数据都会消失。以下示例:删除一个表名为student的数据表。

mysql> drop table student;

十、插入表数据语法:insert into ( 字段名1,字段名2,...字段名N)

values

( 值1, 值2,...值N );

示例:

1、往学员信息表中插入一条学员信息

insert into student (sno,sname,ssex,sclass,sage) values (6301,'柠檬','女',20190163,18);

注意:如果数据值为字符型必须用单引号或者双引号括起来。

2、批量插入,插入多条学员信息

insert into student (sname,ssex,sclass,sage)

values

('毛毛','女',20190163,20),('大大','女',20190163,22);

十一、修改表数据语法:update 表名 set 字段名1= 新值1,字段名2=新值2, … where 条件表达式1 and(or) 条件表达式2 …;

示例:修改学员姓名为毛毛的性别为男

update student set ssex = '男' where sname = '毛毛';

十二、查询单表数据语法:select 字段名1,字段名2,… from where 条件表达式1 and(or) 条件表达式2 … ;

1、查询所有字段列信息

示例:查询student表中,性别女且年龄在20岁以上的学员信息

select * from student where ssex = '女' and sage > 20;

2、查询指定字段列信息

示例:查询student表中,性别女或者年龄在20岁以上的学员姓名

select sname from student where ssex = '女' or sage > 20;

3、查询前几行信息

示例:查询student表中,性别女且年龄在20岁以上的前2行学员信息

select sname from student where ssex = '女' or sage > 20 limit 0,2;

十三、查询多表关联数据语法:

1、关联查询:select 字段名1,… from 表名1,表名2,…where 关联条件表达式 and 过滤条件表达式 …;

2、等值连接:select 字段名1,… from 表名1 inner join 表名2 on 关联条件表达式 and 过滤条件表达式… ;

3、左连接:select 字段名1,… from 表名1 left join 表名2 on 关联条件表达式 and 过滤条件表达式… ;

4、右连接:select 字段名1,… from 表名1 right join 表名2 on 关联条件表达式 and 过滤条件表达式… ;

示例:

1、以上左表user表,右表为左表的对象信息user_lover表,查询两表中存在对象关系的信息

SELECT * FROM `user`, user_lover WHERE `user`.id = user_lover.u_id;

SELECT * FROM `user`INNER JOIN user_lover on `user`.id = user_lover.u_id;

运行结果:

2、读取左表全部数据,即使右表没有关联数据

SELECT * FROM `user`LEFT JOIN user_lover on `user`.id = user_lover.u_id;

运行结果:

3、以右表为基础,与LEFT JOIN相反

SELECT * FROM `user` RIGHT JOIN user_lover on `user`.id = user_lover.u_id;

运行结果:

十四、删除表数据语法:delete from 表名 where 条件1 and(or) 条件2……;

示例:删除student表中年龄小于18岁的用户信息

delete from student where sage < 18;

十五、mysql学习教程mysql官网:https://dev.mysql.com/doc/

http://runoob.com:https://www.runoob.com/mysql/

w3cschool:https://www.w3cschool.cn/mysql/

希望本文对你有用

看完文章的朋友不要走,有问题可以给我留言,或者需要相关学习视频也可以留言哦~

自学mysql还是sql好_都说自学SQL数据库难,是真的吗?相关推荐

  1. 可视化mysql怎么导入sql文件_使用navicat导入sql文件的方法步骤

    一.打开navicat,打开连接,右击连接名(如果新建连接,需要使用对应数据库的ip地址和密码,本机的是地址localhost,密码是自己mysql数据库的密码),选择新建数据库,数据库名要和想要导入 ...

  2. java中sql语句怎么把开始和结束时间作为参数写sql查询_聊一聊MyBatis 和 SQL 注入间的恩恩怨怨

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 引言 MyBatis 是一种持久层框架,介于 JDBC 和 Hi ...

  3. 为什么preparedstatement能防止sql注入_使用Python防止SQL注入攻击的实现示例

    文章背景 每隔几年,开放式Web应用程序安全项目就会对最关键的Web应用程序安全风险进行排名.自第一次报告以来,注入风险高居其位!在所有注入类型中,SQL注入是最常见的攻击手段之一,而且是最危险的.由 ...

  4. rpm安装的mysql如何数据迁移_【鲲鹏翱翔】数据库04-MySQL5.7.28移植安装指南-RPM包方式...

    1.   简介 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),它通过插件形式提供了多种存储引擎,目前最通用的是InnoDB.作为一款开放源码的数据库软件,MySQL社区及用户活跃度很高 ...

  5. java 日志打印sql语句_利用log4j打印sql的log日志

    默认情况下,使用ibatis是不打印ibatis相关的log的,因为内部的sql执行都是内部调用,在server的控制台是不 会 打印log的. 在log4j的配置文件log4j.properties ...

  6. python实现sql数据处理_再见Python, 你好SQL

    原标题:再见Python, 你好SQL 雄凌求职:专注求职内推.金融名企实习内推的教育平台.可内推投行部.研究部门.互联网.私募.基金.四大.咨询等实习和工作岗位.专注大学生背景提升.工作求职.留学申 ...

  7. 转储sql文件_在Linux上SQL Server中更改SQL转储文件位置

    转储sql文件 In this article, we will talk about SQL Dump files and the process to change the dump direct ...

  8. pg数据库执行sql文件_在linux中Postgresql数据库如何执行脚本文件

    在linux中Postgresql数据库如何恢复数据库?执行sql脚本文件呢?具体步骤如下: 一.恢复数据库备份文件 1.将数据库备份文件xxx.backup用连接工具拷贝到/opt下,这个不固定,位 ...

  9. mysql注入漏洞检查_漏洞检测:SQL注入漏洞 WASC Threat Classification

    1.      过滤用户输入的内容,检查用户输入的内容中是否有非法内容.如,|(竖线符号). & (& 符号).;(分号).$(美元符号).%(百分比符号).@(at 符号).'(单引 ...

最新文章

  1. 中点和中值滤波的区别_滤波器基础知识简介
  2. 分布式唯一id:snowflake算法思考
  3. java kafka分布式_Kafka分布式消息系统
  4. 【数据挖掘知识点七】相关与回归分析
  5. 【手写系列】透彻理解MyBatis设计思想之手写实现
  6. 数据结构——Java Stack 类
  7. Android应用安全开发之浅谈网页打开APP
  8. php 获取上个月、下个月、本月的日期 当前月份的前后一个月
  9. Windows Phone 地图定位 及导出GPX文件
  10. Java 数字转汉字工具类
  11. 2022年终总结-两年Androider的成长之路
  12. postgresql 服务器日志
  13. python中break语句的用法_Python break语句用法示例
  14. BZOJ 3698: XWW的难题(有源汇上下界最大流)
  15. 算法设计与分析第一章递推算法
  16. 基于OHCI的USB主机 —— UFI写扇区代码
  17. Flutter 功能最全的JsonToDart工具(桌面Web海陆空支持)
  18. 树莓派魔镜——树莓派无显示器安装系统并连接vnc
  19. 日文系统常用词汇[日语]
  20. linux objdump 函数,objdump命令

热门文章

  1. SL651协议报文解析(一)
  2. 小程序使用场景展示-小程序开发
  3. java.io.IOException: Resetting to invalid mark
  4. 删除指定位置的元素(数组)
  5. 如何在 Illustrator 中应用任意形状渐变?
  6. python-random模块
  7. Ghostscript已有字体报错can‘t find font file问题的原因
  8. VMD确定分解个数K(matlab)
  9. [POJ3384]Feng Shui(半平面交+凸包)
  10. mybatis在实际项目中常见的排坑配置