发布网友 发布时间:2022-04-23 02:13
共16个回答
懂视网 时间:2022-05-02 09:21
经常使用的表与表之间的关系有一对一,一对多,多对多,现分别作例如以下介绍。
请看例如以下演示样例:
CREATE TABLE person(
personid INT PRIMARY KEY,
personname VARCHAR(50) NOT NULL
);
CREATE TABLE persondetail(
detailid INT PRIMARY KEY,
job VARCHAR(30),
hobby VARCHAR(50),
address VARCHAR(50)
);
ALTER TABLE persondetail ADD CONSTRAINT fk_detailid_personid FOREIGN KEY (detailid) REFERENCES person(personid);
INSERT INTO person(personid,personname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO person(personid,personname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO person(personid,personname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO person(personid,personname) VALUES(4,‘波少野结衣‘);
INSERT INTO persondetail(detailid,job,hobby,address) VALUES(1,‘演员‘,‘看书‘,‘东京‘);
INSERT INTO persondetail(detailid,job,hobby,address) VALUES(2,‘诗人‘,‘弹琴‘,‘大阪‘);
INSERT INTO persondetail(detailid,job,hobby,address) VALUES(3,‘作家‘,‘摄影‘,‘千叶‘);
INSERT INTO persondetail(detailid,job,hobby,address) VALUES(4,‘模特‘,‘练字‘,‘仙台‘);
在该演示样例中存在两张表person和persondetail。
person表中的每一个人、persondetail中的每条具体信息,这两者一一相应。请參见代码第13行
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL
);
CREATE TABLE report(
scoreid INT PRIMARY KEY,
studentid INT,
score INT
);
ALTER TABLE report ADD CONSTRAINT fk_report_student FOREIGN KEY (studentid) REFERENCES student(studentid);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO report(scoreid,studentid,score) VALUES(1,1,87);
INSERT INTO report(scoreid,studentid,score) VALUES(2,1,77);
INSERT INTO report(scoreid,studentid,score) VALUES(3,2,67);
INSERT INTO report(scoreid,studentid,score) VALUES(4,2,77);
INSERT INTO report(scoreid,studentid,score) VALUES(5,3,87);
INSERT INTO report(scoreid,studentid,score) VALUES(6,4,77);
在该演示样例中存在两张表:学生表student和成绩表report。
每一个学生相应多门课程的成绩,这就是一对多的关系;请參见代码第13行
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL
);
CREATE TABLE teacher(
teacherid INT PRIMARY KEY,
teachername VARCHAR(50) NOT NULL
);
CREATE TABLE student_teacher_relation(
sid INT,
tid INT
);
ALTER TABLE student_teacher_relation ADD CONSTRAINT fk_sid FOREIGN KEY (sid) REFERENCES student(studentid);
ALTER TABLE student_teacher_relation ADD CONSTRAINT fk_tid FOREIGN KEY (tid) REFERENCES teacher(teacherid);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO teacher(teacherid,teachername) VALUES(1,‘田中瑞稀‘);
INSERT INTO teacher(teacherid,teachername) VALUES(2,‘奧村麻依‘);
INSERT INTO teacher(teacherid,teachername) VALUES(3,‘大竹里步‘);
INSERT INTO teacher(teacherid,teachername) VALUES(4,‘田中瑞稀‘);
INSERT INTO student_teacher_relation(sid,tid) VALUES(1,1);
INSERT INTO student_teacher_relation(sid,tid) VALUES(1,3);
INSERT INTO student_teacher_relation(sid,tid) VALUES(2,1);
INSERT INTO student_teacher_relation(sid,tid) VALUES(2,2);
INSERT INTO student_teacher_relation(sid,tid) VALUES(2,3);
INSERT INTO student_teacher_relation(sid,tid) VALUES(3,4);
INSERT INTO student_teacher_relation(sid,tid) VALUES(4,1);
在该演示样例中存在三张表:student、teacher、student_teacher_relation。每一个学生可能上几个老师的课。每一个老师可能教多个学生,这就是多对多的关系,故在此创建了student_teacher_relation表;请參见代码第20-21行
关于这三张表的关系请參见下图:
原本student和teacher是多对多的关系,为化解该关系引入了student_teacher_relation表;如今转换成了student与student_teacher_relation的一对多以及teacher与student_teacher_relation的一对多。
如今開始进入有些繁琐,可是又很重要的MySQ多表查询。
合并结果集就是把两个select语句的查询结果合并到一起。即:
SELECT * FROM table1 关键字 SELECT * FROM table2
合并结果集的小结:
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL,
studentaddress VARCHAR(50) DEFAULT ‘东京‘
);
CREATE TABLE person(
personid INT PRIMARY KEY,
personname VARCHAR(50) NOT NULL,
age INT DEFAULT 18,
personaddress VARCHAR(50) DEFAULT ‘大阪‘
);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO person(personid,personname) VALUES(1,‘田中瑞稀‘);
INSERT INTO person(personid,personname) VALUES(2,‘奧村麻依‘);
INSERT INTO person(personid,personname) VALUES(3,‘大竹里步‘);
INSERT INTO person(personid,personname) VALUES(4,‘波少野结衣‘);
SELECT studentid AS id,studentname AS name FROM student UNION ALL SELECT personid,personname FROM person;
连接查询就是求出多个表的乘积。
比方:table1连接table2。那么查询出的结果就是table1*table2。
可是请注意:连接查询会产生笛卡尔积,比方:集合A={a,b},集合B={0,1,2}。则集合A和B的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。这当然不是我们想要的结果。那么怎么去除反复的记录和不须要的记录呢?可通过表之间都存在关联关系(比方外键)去除笛卡尔积。
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL
);
CREATE TABLE report(
scoreid INT PRIMARY KEY,
studentid INT,
score INT
);
ALTER TABLE report ADD CONSTRAINT fk_report_student FOREIGN KEY (studentid) REFERENCES student(studentid);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO report(scoreid,studentid,score) VALUES(1,1,87);
INSERT INTO report(scoreid,studentid,score) VALUES(2,1,77);
INSERT INTO report(scoreid,studentid,score) VALUES(3,2,67);
INSERT INTO report(scoreid,studentid,score) VALUES(4,2,77);
INSERT INTO report(scoreid,studentid,score) VALUES(5,3,87);
INSERT INTO report(scoreid,studentid,score) VALUES(6,4,77);
如今须要查询出每一个学生每门课的成绩,能够这么做:
SELECT * FROM student,report WHERE student.studentid=report.studentid;
这么查询出来发现结果集中有两个studentid,这显然不够直观和美观。所以我们能够在查询时筛选出须要的数据:
SELECT student.studentid,student.studentname,report.scoreid,report.score
FROM student,report
WHERE student.studentid=report.studentid;
在此。筛选出studentid、studentname、scoreid、score就可以。这么做目的是达到了,可是认为SQL语句很长有些臃肿;嗯哼。我们能够给表取列名来解决这个小问题:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM student s,report r
WHERE s.studentid=r.studentid;
在此给student表取别名为s,report表取别名为r,再运行查询就可以。
当然,还能够继续在WHERE中加入查询条件,比方:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM student s,report r
WHERE s.studentid=r.studentid AND r.score>70;
在刚才连接查询的演示样例中使用的SQL语句不是标准的查询方式。
为了规范和标准。在该情况下建议使用:
SELECT…FROM table1 INNER JOIN table2 ON…WHERE…;
这样的查询方式也称为内连接查询
请看例如以下演示样例:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM student s INNER JOIN report r
ON s.studentid=r.studentid WHERE r.score>70;
内连接小结:
外链接查询分为:左外连接查询和右外链接查询
先来看左外连接查询。
左外连接查询经常使用语句例如以下所看到的:
SELECT… FROM table1 LEFT OUTER JOIN table2 ON…;
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL
);
CREATE TABLE report(
scoreid INT PRIMARY KEY,
studentid INT,
score INT
);
ALTER TABLE report ADD CONSTRAINT fk_report_student FOREIGN KEY (studentid) REFERENCES student(studentid);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO report(scoreid,studentid,score) VALUES(1,1,87);
INSERT INTO report(scoreid,studentid,score) VALUES(2,1,77);
INSERT INTO report(scoreid,studentid,score) VALUES(3,2,67);
INSERT INTO report(scoreid,studentid,score) VALUES(4,2,77);
INSERT INTO report(scoreid,studentid,score) VALUES(5,3,87);
在此建立两张表并向表中插入数据。
先来看学生表。一共四个学生,studentid值从1到4。
再来看成绩表
请注意,studentid为4,studentname为波少野结衣的同学并没有參加考试。所以与她相关的信息没有出如今这张表中。
如今我们使用左外连接查询学生成绩:
SELECT *
FROM student s LEFT OUTER JOIN report r
ON s.studentid=r.studentid;
查询结果例如以下所看到的:
呃….这里的数据比較冗余。我们换种方式筛选出最实用的信息:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM student s LEFT OUTER JOIN report r
ON s.studentid=r.studentid;
查询结果例如以下所看到的:
嗯哼,数据清晰多了。
请注意:studentid为4,studentname为波少野结衣的同学并没有參加考试,可是她依旧出如今了该结果集中。
这是为什么呢?
事实上,这正是左外连接查询的特点:
对比刚才的演示样例。可知:先查出了两张表中满足studentid=studentid的数据,然后再加入了student表中不满足studentid=studentid的数据,比方此处波少野结衣,它根本就不在report表中,所以在该结果集中她所相应的scoreid和score的值为NULL。
当然。我们能够继续使用where语句作进一步的筛选。比如:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM student s LEFT OUTER JOIN report r
ON s.studentid=r.studentid WHERE score>80;
查询结果例如以下所看到的:
再来看右外连接查询。
右外连接查询经常使用语句例如以下所看到的:
SELECT… FROM table1 RIGHT OUTER JOIN table2 ON…;
它和左外连接查询很相似。在此,不再赘述。
比方刚才的左外连接查询语句能够换成这样:
SELECT s.studentid,s.studentname,r.scoreid,r.score
FROM report r RIGHT OUTER JOIN student s
ON s.studentid=r.studentid;
查询出来的结果是一样的。
在介绍连接查询时。我们知道使用连接查询会产生笛卡尔积。在该积中存在许多没用的数据;此时,我们通常使用主外键之间的等式来剔除它们。假若使用自然连接,那么程序会自己主动帮我们找到主外键之间的等式。
自然连接查询经常使用语句例如以下所看到的:
SELECT …. FROM table1 NATURAL JOIN table2;
请看例如以下演示样例:
CREATE TABLE student(
studentid INT PRIMARY KEY,
studentname VARCHAR(50) NOT NULL
);
CREATE TABLE report(
scoreid INT PRIMARY KEY,
studentid INT,
score INT
);
ALTER TABLE report ADD CONSTRAINT fk_report_student FOREIGN KEY (studentid) REFERENCES student(studentid);
INSERT INTO student(studentid,studentname) VALUES(1,‘大泽玛利亚‘);
INSERT INTO student(studentid,studentname) VALUES(2,‘武藤兰姐姐‘);
INSERT INTO student(studentid,studentname) VALUES(3,‘苍井空妹妹‘);
INSERT INTO student(studentid,studentname) VALUES(4,‘波少野结衣‘);
INSERT INTO report(scoreid,studentid,score) VALUES(1,1,87);
INSERT INTO report(scoreid,studentid,score) VALUES(2,1,77);
INSERT INTO report(scoreid,studentid,score) VALUES(3,2,67);
INSERT INTO report(scoreid,studentid,score) VALUES(4,2,77);
INSERT INTO report(scoreid,studentid,score) VALUES(5,3,87);
INSERT INTO report(scoreid,studentid,score) VALUES(6,4,99);
在此,准备两张表,再向表中插入数据,如今使用自然连接查询:
SELECT * FROM student NATURAL JOIN report;
结果例如以下图所看到的:
嗯哼,看到吧。它的效果和内连接是一样的。
那么自然连接就能够全然代替内连接么?非也!使用自然连接有一个很重要的前提条件:须要两张表中有一列(一般是主表的主键和子表的外键)的名称和类型全然一致!比方。该演示样例中student表中的studentid和report表中的studentid。
子查询就是嵌套查询。即SELECT中包括了另外一个SELECT。
我们先准备一些数据
CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno INT
) ;
CREATE TABLE dept(
deptno INT,
dname VARCHAR(14),
loc VARCHAR(13)
);
INSERT INTO emp VALUES(7369,‘SMITH‘,‘CLERK‘,7902,‘1980-12-17‘,800,NULL,20);
INSERT INTO emp VALUES(7499,‘ALLEN‘,‘SALESMAN‘,7698,‘1981-02-20‘,1600,300,30);
INSERT INTO emp VALUES(7521,‘WARD‘,‘SALESMAN‘,7698,‘1981-02-22‘,1250,500,30);
INSERT INTO emp VALUES(7566,‘JONES‘,‘MANAGER‘,7839,‘1981-04-02‘,2975,NULL,20);
INSERT INTO emp VALUES(7654,‘MARTIN‘,‘SALESMAN‘,7698,‘1981-09-28‘,1250,1400,30);
INSERT INTO emp VALUES(7698,‘BLAKE‘,‘MANAGER‘,7839,‘1981-05-01‘,2850,NULL,30);
INSERT INTO emp VALUES(7782,‘CLARK‘,‘MANAGER‘,7839,‘1981-06-09‘,2450,NULL,10);
INSERT INTO emp VALUES(7788,‘SCOTT‘,‘ANALYST‘,7566,‘1987-04-19‘,3000,NULL,20);
INSERT INTO emp VALUES(7839,‘KING‘,‘PRESIDENT‘,NULL,‘1981-11-17‘,5000,NULL,10);
INSERT INTO emp VALUES(7844,‘TURNER‘,‘SALESMAN‘,7698,‘1981-09-08‘,1500,0,30);
INSERT INTO emp VALUES(7876,‘ADAMS‘,‘CLERK‘,7788,‘1987-05-23‘,1100,NULL,20);
INSERT INTO emp VALUES(7900,‘JAMES‘,‘CLERK‘,7698,‘1981-12-03‘,950,NULL,30);
INSERT INTO emp VALUES(7902,‘FORD‘,‘ANALYST‘,7566,‘1981-12-03‘,3000,NULL,20);
INSERT INTO emp VALUES(7934,‘MILLER‘,‘CLERK‘,7782,‘1982-01-23‘,1300,NULL,10);
INSERT INTO dept VALUES(10, ‘ACCOUNTING‘, ‘NEW YORK‘);
INSERT INTO dept VALUES(20, ‘RESEARCH‘, ‘DALLAS‘);
INSERT INTO dept VALUES(30, ‘SALES‘, ‘CHICAGO‘);
INSERT INTO dept VALUES(40, ‘OPERATIONS‘, ‘BOSTON‘);
请看例如以下演示样例:
查询与SCOTT同部门的员工
SELECT *
FROM emp
WHERE deptno = (SELECT deptno FROM emp WHERE ename=‘SCOTT‘);
查询工资高于SCOTT的员工
SELECT *
FROM emp
WHERE sal >(SELECT sal FROM emp WHERE ename=‘SCOTT‘);
查询工资高于部门为30的全部人的员工信息
SELECT *
FROM emp
WHERE sal>(SELECT MAX(sal) FROM emp WHERE deptno=30);
查询工作和工资与SCOTT同样的员工信息
SELECT *
FROM emp
WHERE (job,sal) IN (SELECT job,sal FROM emp WHERE ename=‘SCOTT‘);
查询有2个以上直接下属的员工信息
SELECT *
FROM emp
WHERE empno
IN(SELECT mgr FROM emp GROUP BY mgr HAVING COUNT(mgr)>=2);
查询员工编号为7788的员工名称、员工工资、部门名称、部门地址
SELECT e.ename, e.sal, d.dname, d.loc
FROM emp e, (SELECT dname,loc,deptno FROM dept) d
WHERE e.deptno=d.deptno AND e.empno=7788;
热心网友
时间:2022-05-02 06:29
这跟人有关,因人而异。有人自学1年就能入职,有的软件开发专业的大学生,大学里学了4年,来应聘的时候一问三不知。另外,当作兴趣学着玩玩的话,谁都学的会。以职业为目标的话,需要学的东西就比较多。
需要:
基础的数学知识加上关系代数(与数据库有关)和离散数学(与算法有关);基础的英语水平,至少高中以上;掌握至少2门编程语言;掌握数据结构和算法、网络技术、至少一种通用数据交换技术(XML/JSON/YAML等等)、数据库编程等等;根据工作需要还要掌握图形图像知识(游戏开发)、网络接口知识(网站API开发)等。职业程序员都比较苦。
编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程】
例子:①比如编写一段代码程序②编写一个控制设备体系。
热心网友
时间:2022-05-02 07:47
编程难不难?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?
不知道LZ看没看过圣斗士星矢这部动漫,如果你想踏入编程殿堂,就要先想想那个被无数小孩子嘲笑的实力很差劲只会和对手死缠滥打经常被敌人虐得体无完肤遍体鳞伤的主角星矢。学编程写完helloworld之后,你要面临的问题和星矢差不多,你的面前会有无数个难题像难以翻越的大山沟壑在等着你。无数莫名其妙的问题像天书一样困扰着你你又找不到人问只能靠自己(别人凭什么花时间精力无偿去帮你)。所以首先你得问问自己,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质去苦苦探索,没有?你说我开玩笑逗你,那好,下面的不用看了,因为你确实不适合学。
如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP, JSP,ASP.NET | Open-source web framework for .NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。
首先,程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆孩子睡觉了,你还在工作中,是不是很崩溃?每天晚上七点,你吃饭的时候隔着窗户看着别人一家人牵着狗其乐融融的逛着公园,那个时候你就知道酸甜苦辣是什么心情了。常有女孩子说干家务比上班还累,你父母还常常告诫你要早睡早起才身体好,可是你晚上11点才下班赶上最后一班地铁坐一个小时车才到家的时候,那家务什么的还有干的必要吗?早睡早起什么的不是很可笑何不食肉糜吗?
第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要百度,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。
第3. 程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。每种语言和技术都有无数的天坑和问题在等着你去搞明白,可不像某些人说的一样学会了一门语言会了思想其他就一通百通...那样的话你就太天真了,比如人家说Java和C#很像,但你学了Java再学C#,你越深入发现不懂的越多,坑也越来越多越来越深,两种语言根本就不是一回事。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...
综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了
热心网友
时间:2022-05-02 09:22
付费内容限时免费查看回答零经验的人学编程是很难的,因为需要许多的专业知识第一门编程语言C语言,C语言目前是底层应用开发最为广阔的一门编程语言,是物联网必备的开发语言。第二门编程编程java,java目前的优势比较多,在开发安卓方面目前非常成熟,市场上几乎所有安卓APP都是java开发,再者java在网站开发也有自己的优势,大型类网站选择java开发是最好不过了,支持多线程高并发,可以支持上百万人同时在线,或者更多。
第三门编程语言python,未来发展方向必定是物联网人工智能,python不仅在人工智能有优势,其实python可以说是万能编程语言,服务端,Web开发都是是可以开发的。第四门编程语言JavaScript,特别是学习nodejs前端后台框架,如果你熟练nodejs,其实可以不用担心不会其他后台编程语言,毕竟nodejs完全搞定
如果自己学的话,你可以通过网络(网上教程),或者买书(C primer plus),但是别太依赖网上教程,因为不清楚+声音小+错误百出+地方方言你听不懂。
很高兴为您解答,请问还有什么需要可以帮到您吗?如果您觉得对您有帮助的话,请辛苦点一下赞哦!希望可以帮到您,祝您生活愉快!
提问好的,谢谢!
好的,谢谢!
回答不客气
热心网友
时间:2022-05-02 11:13
这需要看你自己了,对于一般的人来说一定不好学,因为这是计算机的语言,所以你需要经常练习和经常的尝试一些东西!
最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。
我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像c语言那么灵活,易于理解和学习。
然后可以继续学习c语言,这个语言比较灵活。有了pascal的基础,在进行c语言编程就不会因为c语言的灵活而有问题
。后面的就可以学习vc什么的了。
c语言的书推荐谭浩强的,比较好。
我当时学习pascal和c语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,c就是很好的选择,如果是windows开发,那么vc就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵
。
还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就ok了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。
在你学习好c语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。
只是一家之言,有不到之处,还望见谅!
热心网友
时间:2022-05-02 13:21
这跟人有关,因人而异。有人自学1年就能入职,有的软件开发专业的大学生,大学里学了4年,来应聘的时候一问三不知。
另外,当作兴趣学着玩玩的话,谁都学的会。
以职业为目标的话,需要学的东西就比较多了,需要:
基础的数学知识加上关系代数(与数据库有关)和离散数学(与算法有关);基础的英语水平,至少高中以上;掌握至少2门编程语言;掌握数据结构和算法、网络技术、至少一种通用数据交换技术(XML/JSON/YAML等等)、数据库编程等等;根据工作需要还要掌握图形图像知识(游戏开发)、网络接口知识(网站API开发)等等等等。职业程序员都比较苦
热心网友
时间:2022-05-02 15:46
很难,尤其是对中国人
精通一门编程语言需要10-20年,而很多的编程语言本身设计的局限性比较大,或者过于复杂,导致学编程的人根本没法完全的掌握。
编程的难点,
1 英文字母,这个很致命,因为我们看中文是从小看,可以做到一目十行,但是看英文,我们的阅读水平明显下降。这样很影响我们对于代码的理解和编程速度。
2 标点符号的过分使用,英语对于标点的热爱远超中文,导致我们在编程中不得不频繁的切换。
3 思维逻辑的西方化,编程语言都是西方人设计的,所以思维逻辑上符合西方人的理解方式
中国人的思维逻辑和他们完全不同
4 编程语言普遍太老,目前的最流行的几十种编程语言的出生时间,最年轻的GO(谷歌的)也有10年了,设计思想,语言习惯等等,都有明显的时代特征,很多的设计理念,思想,语法结构都显得多余。
综上,编程语言本身的问题太多,导致了中国人学习起来困难。
热心网友
时间:2022-05-02 18:27
现在几乎分两个阵营,一个是.NET阵营,一个是JAVA阵营。
其中.NET阵营最主要的编程语言是C#和VB.NET,
JAVA阵营主要的编程语言就是JAVA。当然还需要学习J2EE方面的知识。
现在这两个方面的人社会上都有公司要。像我们公司就是.NET和JAVA都在涉及。
学习编程除了需要掌握编程语言以外还应该会用数据库,像SQL
Server、Oracle、DB2等,最好开源的数据库也学习一下:MySQL等。还有就是可能需要对Linux了解一些。对WebService也要了解。还有网页制作:HTML
XML
CSS
等等。
JAVA和.NET现在几乎就是在做B/S方面的应用。
如果要做C/S应用,需要学习C/C++
VB
DELPHI等等,数据库方面还是要学习的。操作系统底层的一些知识可能需要了解一下。
至于就业,我个人感觉就业还是挺简单的。不像别人说的那样找工作很困难,当然要想找到好工作挺难的。我现在在公司里做软件设计工程师岗,感觉很累。。。
不管学什么,只要学精了就一定很不错,助你成功。~~
热心网友
时间:2022-05-02 21:25
学电脑不如学【视频剪辑】,理由很简单,容易学(不像其它行业学习成本高,难度大),适合短期3-4个月短期学习,而且行业缺口非常大,无论是找工作还是自己在家里接私单,月收入轻松过万,两三万也是稀松平常。【点击进入】免费“短视频剪辑后期”学习网址:
www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=313&zdhhr-11y04r-1429968051501721459
因为现在【短视频】的崛起,任何企业,任何工作室或者个人都需要制作剪辑大量的短视频来包装品牌,发抖音,发朋友圈,发淘宝等自媒体渠道做展示。因为每天都要更新并发布新内容,所以剪辑师根本招不够,,供需失衡就造成了剪辑师高薪水。
而且剪辑这个技术并不需要高超的电脑技术,也不需要美术音乐造诣,基本都是固定套路,要什么风格的片要什么节奏,经过三四个月的培训都可以轻松掌握。但凡有点电脑基础会用鼠标拖拽,会点击图标,会保存除非自己不想学,没有学不会的。但是要学好学精,就一定要找专业负责的培训机构了,推荐这个领域的老大:王氏教育。
在“短视频剪辑/短视频运营/视频特效”处理这块,【王氏教育】是国内的老大,每个城市都是总部直营校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合0基础的学生。王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/yingshi?type=2&zdhhr-11y04r-1429968051501721459
大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
热心网友
时间:2022-05-03 00:40
感觉以前的认识有很大问题,很严重影响到了自己,我是学计算机专业的,我总想找出一个可以长久学习的语言,在学校学过c语言,java之类的,当时php很火,但是毕业之后就不火了,java还是需求很多,所以我就在想java和web前端是否是经久不衰的(一个前端一个后端霸主),但是后来又发现一个问题,这只是代表现在流行,就像以前大学大部分都是学c语言,java都不教的,c#也不教,那以后十几年后的大学是否java也会被淘汰而被其他的高级语言所替代?一百年后呢?我以前喜欢php因为喜欢他的技术体系还有可以做出来的东西(网站之类的),但是后来淘汰了,我学了前端但是我依旧喜欢php导致我很迷茫。所以后来我也安慰自己把范围缩小到只喜欢具体某个语言(比如java,还是js,还是php之类,就不像以前喜欢到技术栈和作品),但最大的问题是还是面临喜欢的问题。假如你喜欢的技术淘汰了怎么办?喜欢的语言淘汰了怎么办?虽然以前也有老师说感兴趣的可能最后学得更好,那是因为当时所有编程语言都流行,所以你感兴趣哪个语言都没问题,但是就像现在有不少编程语言慢慢淘汰了,这时候你的感兴趣就会和市场就业所冲突,这时候你就会矛盾,迷茫。但也有老师说编程语言只是工具,我们要学会编程思想,面向金钱编程(当然这里不是要你从喜欢某个技术转到喜欢金钱,把感情放在钱上,这样相当于从一个坑跳到另一个坑,而是让你对某个语言不要这么执着,陷入太多感情,就怕以后万一淘汰你放不下),不要去执迷于某个语言,语言只是工具,这样就不会造成说你感兴趣的万一淘汰了怎么办,而你这时候心态是变化的,所有技术你都可以学,你是用技术来解决问题的,而不像以前那样只限于某个技术无法自拔。当然这里说的是大部分普通人,有些人特别厉害,小众语言技术都能写得很厉害,也不用担心什么流行还是不流行,那些人就另说了。还有一些人是兴趣爱好也无所谓。但是大部分普通人还是要综合考虑,比如c语言这些比较难的也要考虑是否合适。(可能自己想太多,我再想如果以后孩子也学编程让他学什么语言?我大学的时候学得太散,没有专门主要学一门所以后悔,毕业后培训了web前端,也学了node,当时我在想如果大学也学了node会不会更轻松,对其他后台语言做课程设计也有帮助,但是我又发现大学培训web前端的似乎当时很多都教到jq就能工作了,node根本也没学到,所以不适合大学学直到工作。所以我又再想如果一直学java是不是更合适,但是我又发现也只是现在分析得合适,就像以前大学都没java这门课程,以后就算小孩读大学可能java也淘汰了,所以java也不适合,只是现在看现在很适合而已。所以说不要*自己于某个语言技术,要以解决问题的眼光去学,想想如果当时就算只学一门或许也没什么用,因为感觉自己想太多有强迫症只限于一门语言,而排除其他语言技术这样很*自己,很被动),而技术都在变的,流行的东西也在变,如果你只限于喜欢某个技术这样容错率就会很低,淘汰了怎么办,除非那些非常厉害的,不如大部分普通人还是要跟着公司和技术变化。所以说不要让自己只限于喜欢某个技术,要灵活点,这样最后就算丢弃了也没什么可惜的。你的技术是解决问题的,除非客户有指定什么技术,不然你做出来的东西客户只在乎好不好用,至于你是怎么实现的,用什么技术实现的客户也不在乎,或许也不懂,只要你做出来客户觉得好用适合就行了,所以不要总是纠结于喜欢什么技术,应该用喜欢的技术去解决什么的。当然啦,如果是你太讨厌的技术或者方向也没必要太强迫自己学了,除非公司一定要用那你就自己决定。当然也不是说不能什么都不喜欢,有些东西喜欢并不会影响你(比如以前得玩具,现在的电脑啊,汽车啊,喜欢怀旧,什么手动挡啊,自动挡啊什么的,并不会影响你太多,*你太多),最多后面淘汰丢掉就行(虽然或许不舍)。不像技术,让喜欢*得太死会让你迷茫,矛盾,影响自己。还有这里说的喜欢不是说你不能喜欢,而是说注入太多情感和感情在里面,以后淘汰了你能放得下么?喜欢当然是要喜欢,毕竟喜欢也是动力源泉嘛,但是过于执着,最后放不下怎么办?记得当年刚读大学的时候还很好,什么都喜欢学,但是自从看了培训机构视频(刚开始看觉得培训老师讲得很好,比大学老师讲得通俗易懂多了),就迷信了培训,当然培训有些老师也没说错,要专攻一科,然后再学其他就快了,而我自己就专攻一科,但是很多科又喜欢,学得有点散,再后来觉得还是专攻一科好,然后又排斥其他技术,所以这样也不好,还是大学刚开始的什么都想学那种状态最好,不排斥。
热心网友
时间:2022-05-03 04:11
这个问题我给你回答。 计算机编程分好多,不知道你想了解哪种。 一般来讲,计算机或电脑上使用的所有软件及所具备的功能都是通过编程来实现的。 编程按类别可分为操作系统软件类和应用软件类。 操作系统类:你比如家喻户晓妇孺皆知几乎每个人都在用的美国微软的操作系统,从早期的DOS到现在的窗口系统包括win31、win95、win98、winme、winxp等等,他也属于编程,他是系统软件编程,显然这不是一般人能做的。 应用软件编程: 相对比较深奥的比如:basic、c、c++、vb、vc到目前比较流行java等。 应用非常广泛的:你比如机械方面的CAD、中望。 动画、照片、渲染类的比如:flash、3Dmax、photoshop。 单片机类的有keil。工控类的有组态软件、三菱以及其他很多种PLC编程软件等。 流程图制作软件EDGE Diagrammer。 由于计算机硬件以及操作系统软件的不断升级,软件编程的面向对象,所见即所得的概念的实施得到明显的改善,用属性、方法、行为可以描述我能能见到的几乎所有对象,上述几个概念是现在软件编程的重要概念,更好的理解他们,对编程会有很大帮助的。 不难看出,任何一个编程都需要有一定的基础,很多应用软件入门很容易,可是要编写出有一定的层次的产品那就需要一定的功夫,这里包括相应的学历、经验,并且很多有力度的编程都是需要一个团队来完成。 我的回答希望你能满意。
热心网友
时间:2022-05-03 07:59
看个人吧,有些人自学都可以学会,有些人就报班培训学习比较快学会好就业,所以学计算机,还是要好好学习,坚持去学习。编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。学习编程,据说PHP是世界上最好听的语言。
热心网友
时间:2022-05-03 12:04
这个当然要看自身是否适合学习,这个专业需要较强的逻辑思维能力,当然也需要自己感兴趣,可以去专业地方咨询测试一下,看能不能学会学通!
热心网友
时间:2022-05-03 16:25
只要努力就不难,一步一步的来嘛,循序渐进,由简单到复杂,很快就可以学好,学精的。
热心网友
时间:2022-05-03 21:03
1、 全新的思维方式
学编程不仅能够培养孩子对数学的兴趣,更是培养孩子对世界的好奇心。
让孩子早日接触编程,有利于启迪孩子的创新精神,从而建立一种全新的思维方式。
2、独立解决问题的能力
自小受过良好编程训练的学生,独立分解、解决具体问题的能力更强,逻辑计算思维也远超同龄人。
很多家长都认为走进了少儿编程的认识误区:认为学编程就是写代码,长大当码农,其实并不是这样,编程并不仅仅是写代码,学习编程也并不意味着要成为程序猿。
学习编程能让孩子将解决问题的思路、方法和手段转化为计算机理解的形式,并通过设置合理顺序的指令让计算机根据指令一步步工作,从而完成某项特定的任务。
3、拓宽学习的边界
编程是一门实用学科,编程与多门学科紧密结合,对于面临考试和升学压力的孩子来说,能够把编程的思维方式运用到其他学科的学习中去。
热心网友
时间:2022-05-04 01:58
不难,开发主要是要掌握一门计算机编程语言,其次就是算法的学习,算法就要求你有一定的逻辑思维能力,总的来说也不是很难。