
MySQL入门
文章平均质量分 50
ruo-lin
这个作者很懒,什么都没留下…
展开
-
1 了解数据库
数据库基本概念:数据库:保存有组织的数据的容器。DBMS:数据库管理系统数据库和DBMS:使用DBMS来创建和操作数据库。表:结构化的文件表由列组成列:表中一个字段。行:表中一个记录。主键:唯一标识表的每行的列应该保证:每个表都具有一个主键表中任意一列都可以作为主键,只要具备:任意两行都不具有相同的主键值;每个行都具有一个主键原创 2017-08-18 16:43:02 · 218 阅读 · 0 评论 -
范式的理解
3NF是对字段冗余性的约束,即任何字段不能由其他字段派生,它要求字段没有冗余。例:假设表中有单价、数量、金额,那么金额是冗余字段,因为它能由(单价*数量)得到。但是,增加金额字段,可以提高查询速度。原创 2017-08-28 19:34:11 · 492 阅读 · 0 评论 -
22 视图
视图小结视图是虚拟的表,它不包含数据,它包含的是一个SQL查询。为什么使用视图重用SQL语句; 简化复杂的SQL操作; 使用表的一部分而不是整个表; 保护数据; 更改数据格式。性能问题:视图不包含数据,每次使用视图,都要处理执行查询时所需的任一个检索。所以当联结较多或视图嵌套时,可能性能下降厉害。视图使用限制唯一命名; 创建视图,必须有足够的访问权限; 视图可以嵌套; order by原创 2017-08-29 14:49:43 · 263 阅读 · 0 评论 -
16 高级联结
使用表别名:缩短SQL语句(例1);在单条selete语句中多次使用相同的表--自然联结;例1:selete cust_name.cust_contactfrom customers as c,orders as o,ordertimes as oiwherec.cust_id=o.cust_idandoi.order_num=o.order_n原创 2017-08-23 10:24:14 · 185 阅读 · 0 评论 -
牛客网数据库选择题笔记—1
SQL 语言具有两种使用方式:交互式 SQL ,独立使用,自含语言;嵌入式 SQL。交互式 SQL,嵌入式 SQL,嵌入到某种高级语言中,程序员可以使用数据库语言以及常规的程序设计语言(宿主语言)。原创 2017-08-29 15:43:55 · 402 阅读 · 0 评论 -
26 管理事务处理
事务处理:维护数据库的完整性,保证成批的MySQL操作,要么完全执行,要么完全不执行。具体操作:如果没有发生错误,则整组语句提交给数据库表;如果发生错误,则进行回退,以恢复数据到某个已知且安全的状态。相关术语:事务(transaction),指一组SQL语句;回退(rollback),指撤销指定SQL语句的过程;提交(commit),指未存储的SQL语句结果写入数据库表原创 2017-08-29 16:04:48 · 246 阅读 · 0 评论 -
24 游标
为什么使用游标有时需要在检索出来的行中前进或后移。 MySQL游标只能用于存储过程(存储过程完成后,游标就会消失)。游标主要应用于交互式应用,用户需要滚动屏幕上的数据,并对数据进行浏览或做出修改。使用游标步骤:1、使用前必须声明(declare),这个过程并没有检索数据,只是定义要使用的selete语句; 2、一旦声明,必须打开(open)以供使用。这个过程用selete把原创 2017-08-29 14:41:41 · 277 阅读 · 0 评论 -
事务的隔离级别
由低到高:read uncommitted(读未提交)read committed(读已提交):可避免脏读;repeatable read(可重复读):可避免脏读、不可重复读;serializable(串行化):可避免脏读、不可重复读以及幻读;如果不考虑隔离性,可能会引起如下问题:1、脏读:指一个事务读取了另外一个事务未提交的数据。2、不可重复读:在一个事务内,多次读取原创 2017-08-29 21:56:36 · 191 阅读 · 0 评论 -
关系型数据库的理解
关系型数据库:是指采用了关系模型来组织数据的数据库。注:关系模型:二维表模型最大特点事务的一致性注:数据库事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。概念:属性,列,字段;元组,行,记录;关键字,主键;优点:容易理解,二维表结构,贴近逻辑;使用方便,通转载 2017-08-29 14:39:02 · 805 阅读 · 0 评论 -
数据控制、定义、操作
DML: 操作SELECT、UPDATE、INSERT、DELETEDDL: 定义,主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 CREATE、ALTER、DROP等,DCL: 控制,是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadm原创 2017-08-29 23:13:53 · 5262 阅读 · 1 评论 -
12 聚集函数:avg() count() max() min() sum()
单个聚集函数avg():行数计数,计算特定列值之和,求得该列的平均值必须给出列名作为函数的参数忽略列值为null的行例:该selete语句返回值avg_price,计算所有产品的平均价格selete avg(p_price) as avg_pricefrom products;进一步:1003供应商的产品的平均价格selete avg(p_price)原创 2017-08-18 16:16:15 · 508 阅读 · 0 评论 -
21 创建和操纵表
创建新表:creat table更改表列:alter table完整地删除:drop table最后备份,小心使用。引擎原创 2017-08-27 22:56:02 · 299 阅读 · 0 评论 -
20 更新和删除数据
更新-update例:客户10005有了emailupdate customersset cust_email='elemer@fudd.com'where cust_id=10005;以要更新的表的名字开始;以where子句结束。更新多个列值update customersset cust_name='fudd',//逗号分隔set cust_email='elemer@fudd.com原创 2017-08-28 11:13:37 · 272 阅读 · 0 评论 -
5 排序检索:order by
排序检索:order by例:对p_name列以字母顺序排序selete p_name from productorder by p_name;按多个列排序:先按价格排序,如果多个行具有相同的价格时才对其按名称排序;selete p_id,p_price,p_namefrom productorder by p_price,p_name;指定排序方向:D原创 2017-08-17 17:48:32 · 276 阅读 · 0 评论 -
6 过滤数据:where
过滤数据:whereselete p_price,p_namefrom productwhere p_price=2.50;注意:同时使用order by和where时,order by 位于where之后where的操作符:=,!=,=.,between范围检查:包括边界值between 5 and 10;空值检查:selete p_namefro原创 2017-08-17 21:49:59 · 280 阅读 · 0 评论 -
8 通配符
通配符%通配符:表示任何字符(除null)出现任意次数(包括0)。例:检索任意以jet 开头的词selete p_namefrom productwhere p_name like 'jet %'; 也可以使用多个通配符:匹配任意位置包含anv的值selete p_namefrom productwhere p_name like '%anv%'原创 2017-08-17 21:50:26 · 290 阅读 · 0 评论 -
9 正则表达式
作用:匹配文本中特殊的串,在where子句中使用正则表达式来更好地过滤数据 like和regexp的区别:like匹配整个列; regexp在列值中匹配(它也可以使用^和$来匹配整个列值)。 MySQL正则表达式匹配不区分大小写: 为了区分,使用binary .:表示匹配任意一个字符。使用|进行or匹配:例: selete p_name from product where p_na原创 2017-08-17 22:48:49 · 322 阅读 · 1 评论 -
10 计算字段
拼接:多数DBMS使用+或|来实现拼接,MySQL使用concat()函数。例:selete concat(v_name,' (',c_country,')')from vendorsorder by v_name;以上selete连接4个部分:v_name列中的名字、空格和左圆括号、c_country列中的国家、右圆括号。改善:selete conca原创 2017-08-18 11:52:38 · 164 阅读 · 0 评论 -
11 数据处理函数的使用
函数:多数SQL语句可移植;但函数的可移植性确不强。使用函数时:保证做好代码的注释。大多数SQL支持:文本函数、日期函数、数值函数、系统函数文本处理函数:例:selete v_name,upper(v_name)as v_name_upupper(v_name):将文本转换成大写日期函数:日期格式:yyyy-mm-dd(最好使用完原创 2017-08-18 12:15:12 · 183 阅读 · 0 评论 -
13 分组数据:group by和having子句
分组:group by把数据分为多个逻辑组,以便对每个组进行聚集运算。例:先按v_id排序并分组,然后计算每个供应商的产品数目selete v_id,count(*) as numfrom productsgroup by v_id;group by使用规定:group by子句可以包含任意数目的列——分组可以嵌套;group by子句给出的列都必须是检索列或有原创 2017-08-18 15:51:13 · 299 阅读 · 0 评论 -
15 联结表
等值联结(内部联结):基于两个表之间的相等测试。外键:某个表中的一列,它也是另一个表的主键值,定义两个表之间的关系。如:venders表的主键vend_id也是products的外键,将两个表关联,利用供应商ID(vend_id)可以了解供应商的详细信息。联结:不是物理实体,存在于查询的执行当中。用selete语句来实现关联例:搜索每个供应商订的产品selete vend_name,prod_nam原创 2017-08-21 11:45:45 · 186 阅读 · 0 评论 -
17 组合查询-union
关键字:union适用于:单个查询中,从不同的表返回类似结构的数据;对单个表执行多个查询,但是按单个查询返回结果。例:selete vend_id,prod_id,prod_pricefrom productswhere prod_priceunionselete vend_id,prod_id,prod_pricef原创 2017-08-23 12:18:59 · 302 阅读 · 0 评论 -
18 使用全文本搜索
通配符和正则表达式的限制: 性能:通常要求匹配所有行,比较耗时; 明确控制很难; 无法智能化地选择结果。全文本搜索: 必须索引被搜索的列,而且要随着数据的改变,自动维护该索引(在增加、更新或删除时,索引随之自动更新)。一般在创建表时启用全文本搜索: 例:create table productnotes( note_id int not null auto_incre原创 2017-08-24 11:17:35 · 290 阅读 · 0 评论 -
19 插入数据
插入完整的行插入多行插入检索出的数据把selete语句的结果插入表中,即insert selete 例:从新表中把数据导入insert into customers( cust_id, cust_name, cust_city)selete cust_id, cust_name, cust_cityfrom custne原创 2017-08-28 11:07:43 · 215 阅读 · 0 评论 -
0 学习说明
参考书:《MySQL》必知必会样例表如下 (没有输入具体的数据)venders表:供应商 列 vend_id (主键) vend_name vend_address vend_city vend_state vend_zip vend_countryProducts表:产品的信息 列 prod_id(主键) vend_id(外键) prod_name原创 2017-08-21 12:05:15 · 263 阅读 · 0 评论