Products
GG网络技术分享 2025-03-18 16:11 0
首先你需要明白什么是SQL语言:SQL语言是数据库查询以及程序设计的语言,用于存取数据以及查询、更新、删除等操作。 其次,要从这六方面去学习:数据查询、数据操作、事物控制、数据控制、数据定义、指针控制。 一、数据查询语言,是最常用的语言、基本语法为(大写字母为关键字) SELECT 表字段1,表字段2,表字段3 FROM 表名 WHERE (条件) ORDER BY 表字段i GROUP BY 表字段1,表字段2,表字段3; 二、数据操作语言:这里主要是数据的插入、更新、删除动作; 1、插入 INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES(值1,值2,值3) ; 2、更新 UPDATE 表名 SET 表字段=值 WHERE 条件; 3、删除 DELETE FROM 表名 WHERE 条件; 三、数据控制语言:最简单理解为 控制可以访问数据的对象 例如GRANT 关键字,定义某数据库实例可以被某用户控制 GRANT ALL PRIVILEGES ON 实例名 TO 用户名; 四、事物控制语言;它的语句能确保被查询语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令; 五、数据定义 :定义、删除、更改库、表、字段等 例如CREATE 关键字、CREATE DATABASE 数据库名称; 六、指针控制语言:像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作; 先了解这么多,随着学习深入,你自己就知道该去了解哪些知识了
#####首先掌握基本查询,深入点再掌握数据库表结构设计方法。
以下我们以某oracle数据库中的表sys_user、sys_depetment和sys_employee举例
表结构如下:
(1)、sys_user(用户表)
(1)、sys_depetment(部门表)
(2)、sys_employee(雇员表)
ER图到关系模式集的转换
以二元联系类型的转换为例
1. (实体类型的转换):将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。
2. (联系类型的转换):
1. 若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键(作为外键)和联系类型的属性。
2. 若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键(作为外键)和联系类型的属性。
3. 若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键(作为外键)加上联系类型的属性,而键为两端实体键的组合。
实例:教学管理的ER图转换成关系模式集
教学管理的ER图
第一步:把三个实体类型转换成三个模式:
系(系编号,系名,电话)
教师(教工号,姓名,性别,职称)
课程(课程号,课程名,学分)
第二步:
1. 对于1:1联系“主管”,可以再“系”模式中加入教工号(教工号为外键,用波浪线表示);
2. 对于1:N联系“聘用”,可以再“教师”模式中加入系编号和聘期两个属性(系编号为外键);
3. 对于1:N联系“开设”,可以再“课程”模式中加入系编号(系编号为外键)
这样得到的三个模式成如下形式:
第三步:对于M:N联系“任教”,则生成一个新的关系模式:
第四步:整合后关系模式如下:
系统用户(用户编号,用户姓名,用户登录名,用户登录密码,雇员编号)
雇员(雇员编号,雇员姓名,年龄,性别,职务,部门编号)
部门(部门编号,部门名称,部门编号)
1、增
insert into sys_user (USERID, USERCODE, USERPASS, EMPID, USERNAME, VALIDFLAG, LASTCHANGEDATE)
values (\'c9e5d6f90f02428ea8a9cc4410dc5c06\', \'Daibz\', \'c4ca4238a0b923820dcc509a6f75849b\',
\'fd767722ffa741cf89db964873bf4f75\', \'代邦振\', \'1\', to_date(\'07-05-2018 13:54:25\', \'dd-mm-yyyy hh24:mi:ss\'));
2、删
delete from sys_user where usercode=\'Daibz\'
3、改
update sys_user set userpass=\'c4ca4238a0b923820dcc509a6f75849b\' where usercode=\'test\'
update sys_user set userpass=\'1\' where usercode=\'test\'
4、查
select * from sys_user
select * from sys_employee
select * from sys_department
模糊查询:
select * from sys_user where username like \'代__\'
select * from sys_user where username like \'%代%\'
多表查询:
多表连接查询通过表之间的关联字段,一次查询多表数据。
下面将依次介绍 多表连接中的如下方法:
1、from a,b
2、inner join
3、left outer join
4、right outer join
两个表的deptno字段关联。
1、from 表1,表2
语法:select a.x,b.y from a,b where a.id=b.id;
实例:
返回所有满足where条件的行
select a.empid as 员工编号, a.empname as 员工名称, b.depname as 部门
from sys_employee a, sys_department b
where a.depid = b.depid; 扩展:查询用户名,姓名,部门,密码select u.username as 用户名,e.empname as 姓名,d.depname as 部门,u.userpass as 密码 from sys_user u,sys_employee e,sys_department d where u.empid=e.empid and e.depid=d.depid
2、inner join
语法:select a.x from a inner join b on a.id=b.id;
inner 可以省略.
实例:
select a.empid as 员工编号, a.empname as 员工名称, b.depname as 部门
from sys_employee a inner join sys_department b on a.depid = b.depid;
扩展:查询用户名,姓名,部门,密码
select u.username as 用户名,e.empname as 姓名,d.depname as 部门,u.userpass as 密码
from (sys_user u inner join sys_employee e on u.empid=e.empid)
inner join sys_department d on e.depid=d.depid
3、left outer join
查询结果除了返回包含连接条件的行,还包含左表(a)中不满足连接条件的行,
其中不满足连接条件的行中b表的字段值将被置为空。
语法:select a.x from a inner left outer join b on a.id=b.id;
outer 可以省略.
实例:
select a.empid as 员工编号, a.empname as 员工名称, b.depname as 部门
from sys_employee a left outer join sys_department b
on a.depid = b.depid;
当查询中出现过滤条件时:
1)当连接条件后面有where条件时:
select a.empid as 员工编号, a.empname as 员工名称, b.depname as 部门
from sys_employee a left outer join sys_department b on a.depid = b.depid where a.empname like \'%00%\';
解释:先根据连接条件a.depid = b.depid查询,再对查询结果按过滤条件查询。
2)当连接条件后面有and条件时:
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 from scott.emp a left outer join scott.dept b on (a.deptno = b.deptno and b.dname like \'SALES\')
解释:先对b表按过滤条件查询,再对结果执行左连接查询。
select a.empid as 员工编号, a.empname as 员工名称, b.depname as 部门
from sys_employee a left outer join sys_department b on (a.depid = b.depid and a.empname like \'%00%\');
4 、right outer join
查询结果除了返回包含连接条件的行,还包含右表(b)中不满足连接条件的行,
其中不满足连接条件的行中a表的字段值将被置为空。
语法:select a.x from a inner right outer join b on a.id=b.id;
#####先给出我的核心观点:学习,无论你是学什么,也无论你有没有基础。思考永远是第一位的,有些知识你没接触过不要紧,用不着害怕,也没必要害怕。重要的是一秒钟也不要停止思考,问题要想透彻,正所谓磨刀不误砍柴工。尤其是作为工程师,要有打破砂锅问到底的精神,否则你怎么学都没用。
首先概览下mysql的知识体系:
基础:
调优:
核心原理:
架构与运维:
爱好是最好的老师,SQL安装是比较复杂的,如果安装还未成功,就已经磨灭了你学习的爱好,实在得不偿失。
接下来推荐的免装SQL,可以让你领会SQL数据查询语言的精妙,快速入门,感兴趣之后在深入学习或许是不错的选择。
1、https://sqlbolt.com/lesson/select_queries_with_outer_joins
如果英语足够好,推荐这个网站,绝对足够入门。
2、http://xuesql.cn/
这个网站是上面网站的汉化版本,还多了些问题,如果英语不够好,以这个网站入门也不错。
记住,学习,一定要简单!
在你的爱好消磨殆尽之前,领悟到是否对自己有用,
如果没用,放弃!
有用,再深入学习!
千万不要在半途而废的学习上花费太久...
#####mysqI值得你拥有,其实他们都有共通性,等你精通一样的其他的语言你都可以触类旁通!最好C语言,一起教学!这样效果加倍!
#####可以先网上下载一个vmware虚拟机在装一个ubuntu(网上有安装教程)。然后用sudo apt-get install sqlite3安装数据库,然后开始熟悉数据的基本常用操作命令,有了直观操作感受后,后期可以直接在代码里来测试。
手动创建数据库
说明:
1. 在一个语句结束后要以 \\\";\\\"结束当前的输入
2. 在系统命令,以\\\".\\\"开始的命令,不需要加分号
sudo apt-get install sqlite3
1. 创建数据库
sqlite3 my.db
2. 显示帮助信息
.help
3. 退出数据库
.quit
.exit
4.显示当前打开的数据库文件
.database
5. 创建新表
create table student(number int,age int,name string);
6. 查看表的结构
.schema student
7. 删除一个表
drop table teacher;
8. 向表中加入记录(行)
insert into student values(01,23,\'zhang\');
insert into student values(02,24,\\\"li\\\");
9. 查询所有的记录
select * from student ;
10. 根据指定条件搜索
select * from student where age==23;
select * from student where name=\'yang\';
select * from student where number==02;
select * from student where number==2;
select * from student where name ==\\\"yang\\\" and age ==24;
11.删除记录
delete from student where number =1;
12.修改表中的记录
update student set age =20 where number=2 ;
13.在表中添加字段(列)
alter table student add column score float ;
14.不能删除字段(列)
第一步:搜索所有的记录,把记录全部复制
第二步:新建一个表(此表没有你要删除的列)
第三步:把所有记录插入新建的表中,删除原有的表
#####SQL是结构化查询语言,它跟其它开发编程语言有很大的不同。要学好这门编程语言,我觉得首先你应至少大概了解这门语言的用途,以免最后与期望相差太远。
SQL语言是专门针对数据库操作而设计的,它不能直接用来开发我们常见的桌面软件或WEB应用项目前台,但是SQL却在这些软件项目开发中充当重要角色。一般常见的软件及WEB项目都会涉及到数据库,而SQL正是查询及操作数据库的利器,也即是说SQL主要是和数据库打交道的。
SQL是一门语法很简单的语言,学好它并不是很难,我们可以通过很多途径学习,比如:书籍教材,论坛、博客等。
SQL入门,可以先从最基础的语法开始,先学习基本的数据表结构,增、删、 改、查语句,查询语句的结构,函数的使用等;然后再进一步学习索引、视图、存储过程、游标、触发器等内容;等基本内容都熟悉后,我们自然会有更高的目标了,可以去学习优化、数据库管理等内容。
编程是一项实践性很强的技术,真正要学好它,我们应该明确,不能以学代练,所以可以使用当下流行的数据库管理系统软件,如Oracle、MySQL、MSSQL等多练习实践。
#####多做多看多实践!不要懒得动手,编程需要持之以恒的坚持,循序渐进,从结构到框架再到实例,临摹是最好的老师!
#####如果想快速入门,推荐先看这本《MySQL必知必会》,装个软件,边看边动手,两周内即可入门。这本书讲究实战,没有那么多纯理论。
此外MySQL语法与常见的其他近似,比如HIVE SQL,会一个别的数据库也很容易入门。SQL百分之九十以上的都是差不多的,不同数据库会有细微差异。
看了下评论,有人大量复制书本知识,或者是照本宣科的说。其实sql入门是完全可以自学的,当年我老婆在读书时,数据库考试不及格,还是我亲自给补课6个小时,结果考了80多分,一下子变成sql高人,班上不会sql的都来找她问。
1、先要准备sql环境
目前市面上数据库产品非常多,类型也很多,比如关系型数据库、nosql、newsql之类的。初学者只建议学关系型数据库,这也是计算机相关专业大学课程里面要学的,是基础。目前国内主流的关系型数据库主要三种oracle,mysql,sql server,不废话首选mysql,具体的我也不去说了,这里面会讲出一堆事。
用mysql首先去下载一个客户端,可以去官网下载根据你的电脑是32还是64位来选择。
再去下一个mysql的管理工具Navicat ,网上按照配置教程很多,可以去查下。
2、学习基本操作。
这个阶段你可以买一本mysql入门的书,但是看书要讲究技巧的。这是一门实战的技术,讲究实操,就是平时要多练习,多在Navicat 中操作,很多软件工程师平时不写sql都忘记了,让他写很基础的还写不出来。关于怎么看书我有个心得:我觉得书的前面,介绍数据库的基础知识这些章节,先放在后面,等你会了再看,直接上手写sql。重点看怎么创建表,加字段,数据类型,再就是sql的增删改查,常见的函数,索引,主外键就可以了,如果你能熟悉操作就入门了。
另外sql是数据库的标准语音,数据库是一门非常庞大且很复杂的学科,目前国产数据库与国外差距很大,学习的内容非常多,希望你能学习顺利早日成长为高手。
Demand feedback