数据库0起步
数据库的基础知识到增删改查;包含MySQL,Oracle;
遅咲きの向日葵
一个想在日本IT行业打出一片天地,
完全0基础,日语也很水的萌新;
展开
-
MySQL与Oracle的区别
MySQL与Oracle的区别1.收费区别MySQL是轻量型数据库,开源免费。Oracle是收费的而且价格非常高;2.实例区别MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一个库;3.软件大小区别MySQL安装完后300M而Oracle有3G;4.主键管理区别mysql一般使用自动增长类型,而Oracle则需要使用序列对象;5.字符串处理区别mysql里可以用单引号或双引号包起字符串,Oracle只可以用单引号包起字符 串;6.分页查询区别分原创 2020-11-18 20:19:30 · 222 阅读 · 0 评论 -
Mysql特点
Mysql特点1.MySQL是开源的,不需要支付额外的费用;2.支持大型系统的数据库。可以处理拥有上千万条记录的大型数据库;3.支持多线程,充分利用CPU资源;4.使用标准的SQL数据语言形式;5.跨平台,支持多个操作系统;例如:windows、Mac OS、Linux等;6.支持多种语言,常见的编码如中文的GB 2312、BIG5,日文的shift_JIS等都可以用作数据表名和数据列名;7.为多种编程语言提供了API。这些编程语言包括C、C++、Python、java、Perl、PH..原创 2020-11-18 20:17:37 · 5449 阅读 · 0 评论 -
MySQL中的存储引擎
MySQL中的存储引擎一、查看数据库引擎show engines二、数据库引擎常见类型ISAM(Indexed Sequential Access Method)MyISAMInnoDB三、ISAM(Indexed Sequential Access Method)ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM 执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM原创 2020-11-18 17:32:23 · 78 阅读 · 0 评论 -
MySQL中的执行计划
MySQL中的执行计划在MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的;一、Mysql整个查询执行过程客户端向MySQL服务器发送一条查询条件;服务器首先检查查询缓冲,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段;服务器进行SQL解析、预处理、再由优化器生成对应的执行计划;MySQL根据执行计划,调用存储引擎的API来执行查询;讲结果返回给客户端,同时缓存查询结果;二、如何启动执行计划Ex原创 2020-11-18 14:23:33 · 2213 阅读 · 0 评论 -
MySQL中的分页查询
MySQL中的分页查询一、MySQL分页查询原则在MySQL数据库中使用limit子句进行分页查询;MySQL分页中开始位置为0;分页子句在查询语句的最后侧;二、Limit子句(较为常用)select 投影列 from 表名 where 条件 order by 列名等 limit 开始位置 , 查询 数 量;例查询雇员表中所有数据按 id 排序,实现分页查询,每次返回两条结果。Select * from employees e order by e.employe原创 2020-11-18 11:24:28 · 2062 阅读 · 0 评论 -
MySQL中的用户管理
MySQL中的用户管理MySQL是一个多用户的数据库系统,按权限,用户可以分为两种:root用户,超级管理员、有root用户创建的普通用户;一、MySQL创建用户Create user 用户名 identified by “密码”二、如何查看用户Select user , host from mysql.user例创建一个 u_sxt 的用户,并查看创建是否成功。Create user u_sxt identified by “mysql”;验证:查询用户;Sele原创 2020-11-17 22:53:16 · 326 阅读 · 1 评论 -
全文索引的使用(MySQL)
全文索引的使用(MySQL)全文索引的使用与其他索引不同,在查询语句中需要使用match(列名) against(要搜索的词)来检索数据;一、全文解析器全文索引中基本单位是“词”。分词,全文索引是以词为基础的,MySQL默认的分词是所有非字母和数字的特殊符号都是分词符。在检索数据时给定的检索条件也是词;MySQL中默认的全文解析器不支持中文分词。如果数据含有中文需要更换全文解析器ngram;二、使用全文索引Select 投影列 from 表名 where match(全文索引原创 2020-11-17 21:03:03 · 403 阅读 · 0 评论 -
MySQL中的全文索引
MySQL中的全文索引(上)全文索引(Fulltext index)主要用来查找文本中的关键字,而不是直接与索引中的值相比较。Fulltext索引跟其他索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。Fulltext索引配合match against操作使用,而不是一般的where语句加like;全文索引可以从char、varchar或text列中作为create table语句的一部分被创建,或是随后使用alter table添加。不过切记对于大容量的数据表,生成全文索引原创 2020-11-17 20:03:00 · 340 阅读 · 0 评论 -
MySQL中的组合索引
MySQL中的组合索引(复合索引)使用多个字段创建索引,只用在查询条件中使用了创建索引时的第一个字段,索引才会被使用(最左前缀原则);一、最左前缀原则最左优先;例使用表中的name,address,salary创建组合索引,那么想要组合索引生效, 我们只能使用如下组合;Name/address/salaryName/addressName如果使用address/salary或者是salary则索引不会生效;二、如果添加组合索引修改表添加最后索引Alter t原创 2020-11-17 19:06:22 · 1165 阅读 · 0 评论 -
MySQL中的索引(主键索引)
MySQL中的索引(主键索引篇)主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时添加主键索引;一、如何添加主键索引修改表添加主键索引Alter table 表名 add primary key(列名)例修改 emp 表为 employee_id 添加主键索引Alter table emp add primary key(employee_id)创建表时指定主键索引Create table 表名(列名 类型 primary k原创 2020-11-17 18:34:51 · 607 阅读 · 0 评论 -
MySQL中的索引(唯一索引篇)
MySQL中的索引(唯一索引篇)唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。一、如何添加唯一索引直接创建唯一索引Create unique index 索引名 on 表名(列名(长度))例为 emp 表中的 name 创建一个唯一索引,索引名为 emp_name_index;Create unique index emp_name_index on emp(name)验证:查看索引Show index from emp修改表添加唯一索引原创 2020-11-17 18:02:35 · 766 阅读 · 0 评论 -
MySQL中的索引(普通索引篇)
MySQL中的索引一、索引在关系型数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供对表中行的直接和快速访问,它的目的是用已索引的路径快速定位数据以减少磁盘 I/O。索引逻辑地和物理地独立于他们索引的表,这意味者索引可以在任何时候被创建或删除,并且不影响基表或其它的索引。当删除表时,相应的索引也被原创 2020-11-17 14:54:59 · 3001 阅读 · 0 评论 -
MySQL中的子查询
MySQL中的子查询子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句。用组合两个查询的方法解决问题,放置一个查询到另一个查询中。内查询或子查询返回一个值给外查询或主查询。使用一个子查询相当于执行两个连续查询并且用第一个查询的结果作为第二个查询的搜索值。一、子查询语法子查询 (内查询) 在主查询之前执行一次子查询的结果被用于主查询 (外查询)可以将子查询放在许多的 SQL 子句中,包括:WHERE子句,HAVING 子句,FROM 子句;二、使用子原创 2020-11-17 01:33:10 · 531 阅读 · 0 评论 -
MySQL中的数据分组
数据组(group by)可以根据需要将查询到的结果集信息划分为较小的组,用 GROUP BY 子句实现。一、Group by语法GROUP BY 子句:GROUP BY 子句可以把表中的行划分为组。然后可以用组函数返 回每一组的摘要信息。二、 使用分组原则如果在 SELECT 子句中包含了组函数,就不能选择单独的结果,除非单独的列出现在 GROUP BY 子句中。如果未能在 GROUP BY 子句中包含一个字段列表,会收到一个错误信息。使用 WHERE 子句,可以在划分行原创 2020-11-16 23:52:28 · 4545 阅读 · 0 评论 -
MySQL中的组函数(聚合函数)
MySQL中的组函数(聚合函数)组函数操作行集,给出每组的结果。组函数不象单行函数,组函数对行的集合进行操作,对每组给出一个结果。这些集合可能是整个表或者是表分成的组。一、组函数与单行函数的区别单行函数对查询到每个结果集做处理,而组函数只对分组数据做处理。单行函数对每个结果集返回一个结果,而组函数对每个分组返回一个结果。二、组函数的类型AVG 平均值COUNT 计数MAX 最大值MIN 最小值SUM 合计三、使用组函数的原则用于函数的参数的数原创 2020-11-16 23:17:51 · 777 阅读 · 0 评论 -
SQL99标准中的查询(MySQL)
SQL99标准中的查询MySQL5.7支持SQL99标准;一、笛卡尔乘积笛卡尔乘积是指在数学中,两个集合 X 和 Y 的笛卡尓积(Cartesian product),又 称直积,表示为 X * Y,第一个对象是 X 的成员而第二个对象是 Y 的所有可能有 序对的其中一个成员。二、SQL99中的交叉连接CROSS JOIN 子句导致两个表的交叉乘积该连接和两个表之间的笛卡尔乘积是一样的例使用交叉连接查询 employees 表与 departments 表;Sel原创 2020-11-16 22:26:16 · 295 阅读 · 0 评论 -
MySQL中的外连接
MySQL中的外连接外连接是指查询出符合连接条件的数据同时还包含孤儿数据。一、孤儿数据孤儿数据是指被连接的列的值为空的数据。二、左外连接(left outer join)左外连接包含左表的孤儿数据;例一、向 employees 表中添加一条数据,名字:Lee,email :lee@sxt.cn入职时间为今天。他没有薪 水,没有经理,没有佣金。Insert into employees(last_name , email , hire_date ) values(“le原创 2020-11-16 21:21:26 · 305 阅读 · 0 评论 -
MySQL中的多表连接
MySQL中的多表连接当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询。根据不同表中的数据之间的关系查询相关联的数据。一、语法结构使用一个表在多个表中查询数据;Where子句中写连接条件;二、等值连接等值连接也被称为简单连接 (simple joins) 或内连接 (inner joins)。是通过等号来判 断连接条件中的数据值是否相匹配。例查询雇员 King 所在的部门名称;Select d.department_name from employees原创 2020-11-16 19:59:32 · 449 阅读 · 0 评论 -
MySQL中常见的单行函数(下)
MySQL中常见的单行函数(下)一、转换函数Date_format(date,format)将日期转换成字符串(类似Oracle中的to_char())Str_to_date(str,format)将字符串转换为日期(类似Oracle中的to_date())例一、向 employees 表中添加 hire_date 列 类型为 date 类型;Alter table employees add column hire_date date;二、向 employees原创 2020-11-16 18:46:17 · 136 阅读 · 0 评论 -
MySQL中常见的单行函数(上)
MySQL中常见的函数一、大小写控制函数(与Oracle相同)lower(str)转换大小写混合的字符串为小写字符串;例查询employees表,显示员工姓名为大写格式;Select lower(last_name) from employees;Upper(str)转换大小写混合的字符串为大写字符串;例查询employees表,显示员工姓名为小写格式;Select upper(last_name) from employees;二、字符处理原创 2020-11-16 14:25:09 · 159 阅读 · 0 评论 -
MySQL中如何约束和排序数据
约束和排序数据一、比较运算符例1.查询 employees 表,员工薪水大于等于 15000 的员工的姓名与薪水。Select * from employees where salary >=15000;2.查询 employees 表,员工薪水不等于 15000 的员工的姓名与薪水。Select * from employees where salary <> 15000;Select * from employees where salary != 1原创 2020-11-16 01:25:57 · 237 阅读 · 0 评论 -
MySQL中如何查询数据(下)
MySQL查询数据一、MySQL中定义空值包含空值的算术表达式计算结果为空;例在 employees 中添加 commission_pct,计算年薪包含佣金。Alter table employees add column commission_pct float(3,2);二、MySQL中的列别名select 列名 [as] 列别名 from 表名 where 条件;例查询 employees 表将雇员 laser_name 列名改为 name。Select原创 2020-11-15 23:56:10 · 210 阅读 · 0 评论 -
MySQL中如何查询数据(上)
MySQL查询数据一、MySQL的列选择select * | 投影列 from 表名;例查询 departments 表中的所有数据;Select * from departments;二、MySQL的行选择*Select |投影列 from 表名 where 选择条件;例查询 departments 表中部门 ID 为 4 的部门名称与工作地点 ID。Select department_name,location_id from departments whe原创 2020-11-15 22:21:26 · 182 阅读 · 0 评论 -
MySQL中如何关闭事务的自动提交
关闭MySQL的事务自动提交在mysql中,默认情况下,事务是自动提交的,也就是说只要执行一条DML语句就开启了事务,并且提交了事务;(也称之为“一行一提交”);Start transactionDML…Commit(执行)|rollback(撤销/回滚)例向 emp3 表中添加一条数据,要求手动提交事务。1.关闭自动提交;Start transaction;2.添加数据;Insert into emp3 values(0,”hi”,default,default);3.执行;原创 2020-11-15 17:06:33 · 2251 阅读 · 0 评论 -
MySQL中如何删除数据
删除数据(delete)使用delete子句;Delete from 表名 where 条件;例删除 emp3 表中 emp_id 为 1 的雇员信息。Delete from emp3 where emp_id = 1;使用truncate清空表;Truncate table 表名;例删除 emp3 表中的所有数据Truncate table emp3;Delete与truncate的区别;1.Truncate是整体删除(速度较快),delete是逐条删原创 2020-11-15 14:38:43 · 567 阅读 · 0 评论 -
MySQL中如何更新数据
更新数据(update)语法格式Update 表名 set 列名=值,列名=值 where 条件;MySQL的update的特点1.更新的表不能在set和where中用于子查询;否则会报错 You can’t specify target table ‘emp3’ for update in FROM clause2.Update后面可以做任意的查询;例一、更新 emp3 表中的 id 为 1 的数据,添加 address 为 BeiJing。Update emp3 e原创 2020-11-15 14:12:43 · 3802 阅读 · 0 评论 -
MySQL中的默认值处理
默认值处理在MySQL中可以使用default为字段设定一个默认值,如果在插入数据是并未指定该列的值,那么MySQL会将默认值添加到该列中。创建表时指定列的默认值;例创建 emp3 表,该表包含 emp_id 主键且自动增长,包含 name,包含 address该列默认值为”unknown”,包含job_id该列默认值为”0”。Create table emp3(emp_id int primary key auto_increment , name varchar(30) , a原创 2020-11-15 13:07:29 · 828 阅读 · 0 评论 -
MySQL中自动增长类型要求
自动增长(auto_increment)1.一个表中只能有一个列为自动增长;否则会报错Incorrect table definition; there can be only one auto column and it must be defined as a key2.自动增长列的类型必须是整数类型;否则会报错Incorrect column specifier for column ‘name’3.自动增长只能添加到具备主键约束与唯一约束的列上;否则会报错Incorrect原创 2020-11-15 12:18:02 · 1364 阅读 · 0 评论 -
MySQL中如何插入数据(DML)
添加数据(insert)选择插入Insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…)例向 departments 表中添加一条数据,部门名称为 market,工作地点 ID 为 1。Insert into departments(department_name,location_id) values(“market”,1);完全插入Insert into 表名 values(值1,值2,值3…)如果主键是自动增长,需要使用de原创 2020-11-14 23:36:38 · 597 阅读 · 0 评论 -
MySQL中如何通过修改表实现约束的添加与删除
修改表实现约束的添加与删除一、主键约束添加主键约束Alter table 表名 add primary key(列名)例将 emp 表中的 employee_id 修改为主键且自动增长;1.添加主键约束;alter table emp add primary key(employee_id);2.添加自增长;alter table emp modify employee_id int auto_increment;删除主键约束Alter table 表名 d原创 2020-11-14 23:03:14 · 830 阅读 · 0 评论 -
MySQL如何创建表时指定约束
一、MySQL中的约束类型非空约束(not null);唯一性约束(unique);主键约束(primary key)PK;外键约束(foreign key)FK;(检查约束(目前mysql不支持、Oracle支持));二、创建表时添加约束查询表中的约束信息1.在Navicat工具中在表所在的库下,点击查询按钮并新建查询;2.在其中输入 show keys from 表名;例1.创建 departments 表包含 department_id 该列..原创 2020-11-14 21:17:12 · 875 阅读 · 0 评论 -
MySQL中如何修改表
修改表一、使用DDL语句修改表名;Alter table 旧表名 rename 新表名;例1.创建一个 employees 表包含雇员 ID,雇员名字,雇员薪水;Create table employees(employee_id int , last_name varchar(30) , salary float(8,2));验证:查询已创建的表;Show tables;2.将 employees 表名修改为 emp;Alter table employees r原创 2020-11-14 19:49:41 · 1683 阅读 · 0 评论 -
MySQL中如何创建表与删除表
创建表与删除表一、创建表通过DDL语句创建表例创建一个employees表包括雇员ID,雇员名字,雇员薪水;Create table employees(employee_id int , last_name varchar(30) , salary float(8,2));验证:查看表Show tables;通过Navicat工具创建表例创建一个employees2表包含雇员ID,雇员名字,雇员薪水;1.双击要建表的库,单机表,选择新建表;2.输入表中包原创 2020-11-14 18:52:56 · 1412 阅读 · 0 评论 -
MySQL中的数据类型
MySQL中的数据类型一、数值类型MySQL支持所有标准SQL数值数据类型;作为SQL标准的扩展,MySQL也支持整形类型Tinyint、Mediumint和Bigint;数值类型中的长度m是指显示长度,并不表示存储长度,只有字段指定zerofill时有用;例:int(3),如果实际值是2,列指定了zerofill,查询结果就是002,左边用0来填充;二、浮点型三、字符串型Char和varchar1.Char(n)若存入字符数小于n,则以空格补于器后,查原创 2020-11-14 18:05:19 · 79 阅读 · 0 评论 -
什么是MySQL,以及它的特性
MySQL一个关系型数据库管理系统,有瑞典MySQL AB公司开发,目前属于Oracle公司。关系型数据库保存在不同的表中,而不是将所有的数据放在大仓库中,这样就增加了速度并提高了灵活性;MySQL特点MySQL是开源的,所以不需要支付额外的费用;MySQL支持大型系统的数据库。可以处理拥有上千万条记录的大型数据库;MySQL使用标准的SQL数据语言形式;MySQL可以运行多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、java、Perl、PHP、eiff原创 2020-11-14 13:08:48 · 266 阅读 · 0 评论 -
什么是事务?为什么需要事务?
事务要做或者所做的事;访问并可能更新数据库中各种数据项的一个程序执行单元;作为单个逻辑工作单元所执行的一系列操作;这些操作会作为一个整体向系统提交,要么全部执行,要么全不执行一、四个特性原子性(Atomicity)事务中的操作要么都做,要么都不做;例:A向B转账,转账的中途突然发生状况,没有原子性就会出现A已转账, 但是B却没有收到;一致性(Consistency)使数据库从一个一致性状态到另一个一致性状态;一个事务成功完成时保证数 据库中的数据一致;例A向原创 2020-11-14 12:06:49 · 937 阅读 · 0 评论 -
SQL语言之数据导入导出(Oracle)
数据的导入导出(Oracle)一、数据库导入导出需要注意目标数据库要与资源数据库有着名称相同的表空间;目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同);目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失;弄清是导入导出到相同版本还是不同版本(Oracle10g版本与Oracle11g版本);目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表;确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间;导入导出时注意字原创 2020-11-12 22:11:19 · 650 阅读 · 0 评论 -
SQL语言之执行计划(Oracle)
执行计划一条查询语句在Oracle中的执行过程或访问路径的描述;一、配置执行计划需要显示的项(pl/sql developer)二、执行计划的常用列字段解释基数(Cardinality):Oracle估计的当前操作的返回结果集;数字节(Bytes):执行该步骤后返回的字节数;耗费/代价值(cost)、CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代 价,理论上越小越好(该值可能与实际有出入);时间(time):Oracle估计的原创 2020-11-12 13:58:07 · 522 阅读 · 0 评论 -
SQL语言之数据控制语言(Oracle)
数据控制语言(DCL)Grant…授予用户权限Revoke…撤销用户权限一、授权系统权限授予创建其他对象权限1.Create session 登录权限2.Create table 制表权限3.Create sequence 创建序列权限4.Create view 创建视图权限5.Create procedure 创建存储过程权限6.Unlimited tablespace 使用永久表空间权限例为 u_bjsxt 用户分配创建表、创建视图、创建序列权限以及使用永久表原创 2020-11-11 21:48:20 · 291 阅读 · 0 评论 -
SQL语言之用户(Oracle)
用户(user)Oracle用户是用来连接数据库和访问数据库对象的;创建用户需要具备创建用户的权限可以使用sys或者system用户来创建用户1.使用默认表空间例创建一个用户名称为 u_test,永久表空间使用 Oracle 默认的永久表空间。 Create user u_test identified by oracle;2.使用指定表空间例创建一个用户名为 u_bjsxt,使用 bjsxt 表空间为他的表空间。Create user u_bjsxt ident原创 2020-11-11 20:17:47 · 140 阅读 · 0 评论