数据库学习笔记_第1页
数据库学习笔记_第2页
数据库学习笔记_第3页
数据库学习笔记_第4页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、_数据库学习笔记Sql 基本操作1、基本操作CRUD (增删改查)2、将 sql 基本操作根据操作对象分类:库操作,表操作(字段),数据操作。2.1 库操作:对数据库的增删改查;新增数据库:基本语法:Createdatebase数据库名字库选项 库选项:用来约束数据库,分为两个选项字符集设定:charset (数据存储的编码格式):常用的有GBK 与 UTF8校对集设定:collate (数据比较的规则)当创建数据库的sql 语句执行之后,发生了什么?1、 在数据库系统中增加了对应的数据库信息;精品资料_2、 会在保存数据的文件夹下:Date 目录,创建一个对应数据库名字的文件夹;3、 每个数

2、据库下都有一个opt 文件,保存了库选项。:查看数据库:1、查看所有数据库Show databases;2、查看指定部分的数据库:模糊查询Show databases likepattern ;-pattern是匹配模式%: 表示匹配多个字符;_:表示匹配单个字符;3、查看数据库创建语句:Showcreatedatabase数据库名字;eg: SHOW CREATE DATABASE imooc;数据库在执行sql 语句之前会优化sql ,系统保存的结果是优化后的结果。更新数据库:精品资料_数据库名字不可修改;数据库的修改仅限库选项:字符集和校对集(校对集依赖字符集)。Alter databa

3、se数据库名字库选项 ;Charset/character set字符集;Collate校对集;删除数据库:Drop database数据库名字;当删除数据库语句执行之后发生了什么?1、 在数据库内部看不到对应的数据库;2、 在对应的数据库存储的文件夹内,数据库名字对应的文件夹也被删除(级联删除:里面的数据表全部删除) ,数据库删除不可逆。2.2 表操作表与字段密不可分新增数据表语法:Createtableif not exists表名(字段名字数据类型( x),(如果数据类型是字符型,需要将字符长度加上)字段名字数据类型,·- 最后一行不需要逗号精品资料_)表选项 ;If not

4、exists:如果表名不存在则创建,如果存在则不执行创建代码:检查功能;表选项:控制表的表现,字符集: charset/character set具体字符集;-保证表中数据存储的字符集;校对集: collate具体校对集;存储引擎: engine具体存储引擎(innodb 和 myisam );任何一个表的设计都必须指定数据库方案 1 :显示的指定表所属的数据库Createtableif not exists数据库名 .表名(); - 将当前数据表创建到指定的数据库下。方案 2 :隐式的指定数据表所属数据库:先进入到某个数据库环境,然后这样创建的数据表自动归属到该数据库。进入数据库环境:use

5、 数据库名字;查看数据表1、查看所有表show tables ;2、查看部分表:模糊匹配:Show tables likepattern ;%: 表示匹配多个字符;_:表示匹配单个字符;3、 查看表的创建语句;精品资料_Show create table表名;4.查看表结构:查看表中的字段信息Desc/describe/show columns(列) from 表名;修改数据表修改表本身表本身可以修改:表名和表选项;1、修改表名:Rename table老表名to 新表名;2、修改表选项:精品资料_A修改字段(增、删、改、查)1、新增字段:Alter table表名addcolumn字段名数据

6、类型列属性 位置 ;位置:字段名可以存放表中任意位置First :第一个位置;After :在哪个字段之后:after字段名;默认的是在最后一个字段之后。2、修改字段:Alter table表名modify字段名数据类型【属性】 【位置】;3、重命名字段Alter table表名change旧字段新字段名数据类型【属性】 【位置】;4、 删除字段:Alter table表名drop 字段名;精品资料_注意:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)。删除数据表Drop table表名 1,表名 2 ,表名 3·;可以一簇删除多张表。2.3 数据操作:新增数据:

7、两种方案:方案 1 、给全表字段插入数据,不需要指定字段列表;要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据都需要使用引号(建议使用单引号)包裹。Insert into表名values (值列表)【,(值列表)】; -可以一次插入多条数据。方案 2 、给部分字段插入数据,需要选定字段列表, 字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定的字段的顺序一致精品资料_Insert into表名(字段列表)values(值列表)【,(值列表)】;查看数据:1、查看所有数据Select*from表名;2、查看指定字段,指定条件的数据Select字段列表from表

8、名【 where 条件】;更新数据:Update表名set 字段= 值【 where 条件】; -建议都有where :要不是更新全部删除数据:Delete from表名【 where 条件】;精品资料_3、中文数据问题中文数据问题本质是字符集问题。4、数据类型(列类型)Sql 中将数据类型分为三大类:数值类型,字符串类型和时间类型4.1 、整数型( tinyint , int )精品资料_常用 Tinyint 和 Int 。SQL 中的数据类型全部都是默认有符号,分正负;有的时候需要使用无符号的数据,需要给数据类型限定:int unsigned , - 无符号从0开始。精品资料_显示宽度没有

9、特别的含义,只是默认告诉用户可以显示的形式而已,实际上用户可以控制的,这种控制不会改变数据本身的大小。显示宽度的意义:5、列属性列属性:真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。列属性有很多: NULL/NOTNULL,default ,Primary key ,unique key ,auto_increment,comment5.1 、空属性两个值: NULL (默认的)和NOT NULL虽然默认为空,但实际开发中,尽可能保证所有数据都不为空,因为空数据没有意义,也无法参加运算。精品资料_5.2 、列描述列描述: comment ,描

10、述,没有实际含义:是专门用来描述字段的,会根据表创建语句保存,用来给程序员(数据库管理员)来进行了解的。5.3 、默认值默认值:某一种数据会经常性的出现某一个具体的值,可以在一开始便指定好,在需要真实数据的时候,用户可以选择性的使用默认值。6、 字段属性6.1 、主键:主键: primary key ,主要的键,一张表只能有一个主键,用来唯一的约束该字段里的数精品资料_据,不能重复。增加主键增加主键的三种方式:1、 创建表时直接在字段之后跟primary key关键字(主键本身不允许为空)优点:直接;缺点:只能使用一个字段作为主键。2、 创建表的时候,在所有字段之后使用primary key

11、(主键字段列表)来创建主键(如果有多个字段为主键,可以是复合主键)3、 当表已经创建好之后,再次额外追加主键,可以通过修改表字段属性,也可以直接追加。Alter table表名add primarykey (字段列表)精品资料_前提:表中字段对应的数据本身是独立的(不重复)。主键约束主键对应的字段中数据不允许重复,一旦重复,数据操作失败。更新主键 &删除主键没有办法更新主键,主键必须先删除,才能增加。Alter table表名drop primary key;、主键分类精品资料_6.2 、自动增长自增长:当对应字段不给值或者给默认值或者给NULL时,自增长被系统触发,系统会从当前字段中

12、已有的最大值进行+1 操作,得到一个新的不同字段。自增长通常与主键配合使用;自增长的特点:auto_increment新增自增长1、 任何一个字段做自增长,前提本身必须是一个索引(key 一栏有值);2、 字段必须是数字,而且是整型;3、 一张表最多只能有一个自增长。精品资料_自增长使用当对应字段不给值或者给默认值或者给NULL 时,自增长被系统触发,系统会从当前字段中已有的最大值进行+1 操作,得到一个新的不同字段。如果自增长对应字段输入了值,那么自增长将失效, 但是下一次还是能自动的自增长(从最大值 +1 )精品资料_如何确定下一次自增长是什么?可以通过查看创建表语句修改自增长自增长如果涉

13、及到字段改变,必须先删除自增长后增加(因为一张表只能有一个自增长)。修改当前自增长已经存在的值,修改只能比当前已有的自增长的最大值大,不能小,(小不生效)。Alter table表名auto_increment =?;精品资料_删除字增长自增长是一个属性,可以通过modify 来进行修改(保证字段里没有auto_increment即可)Alter table表名modify字段类型。6.3 、唯一键一张表往往有许多字段需要具有唯一性,数据不能重复, 但是一张表中只能有一个主键,唯一键( unique key )就可以解决多个字段需要唯一性约束的问题。唯一键本质与主键差不多,唯一键默认的允许自动

14、为空,而且可以对个为空(空字段不参与唯一性比较)。增加唯一键基本与主键差不多1、在创建表时,字段之后直接跟unique/unique key2、在所有字段之后增加unique key(字段列表);- 复合唯一。4、 在创建表之后增加唯一键;精品资料_唯一键约束唯一键与主键本质相同,唯一的区别就是唯一键默认允许为空,而且是多空;如果唯一键也不允许为空,与主键的约束作用是一致的。更新唯一键 &删除唯一键更新唯一键:先删除后新增(唯一键可以有多个,可以不删除)1、删除唯一键Alter table表名drop index索引名字;唯一键默认使用字段名作为索引名字。6.4 、索引几乎所有的索引都

15、建立在字段之上索引:系统根据某种算法,将已有的数据(未来可能新增的数据)单独建立一个文件,文件能够实现快速的匹配数据,并且能快速的找到对应表中的记录。索引的意义:精品资料_1、 提升查询数据的效率;2、 约束数据的有效性(唯一性等);增加索引的前提条件:索引本身会产生索引文件(有时候可能比数据文件还大),会非常耗费磁盘空间,Mysql 中提供多种索引:1、 主键索引: primary key ;2、 唯一索引: unique key ;3、 全文索引: fulltext index ;4、 普通索引: index全文索引:针对文章内部的关键字进行索引,全文索引最大的一个问题在于如何确定关键字。

16、英文很容易:英文单词与单词之间有空格;中文很难:没有空格,而且中文可以各种随意组合(分词:sphinx )。精品资料_7、数据的高级操作数据操作:增删改查7.1 新增数据基本语法:Insert into表名【(字段列表)values(值列表)】;7.2 查询数据基本语法:Select字段列表 /* from表名【 where条件】完整语法:Select 【 select选项】字段列表 【字段别名】 /* from数据源【 where条件子句】【 group by子句】【 having子句】【 order by子句】【 limit子句】;1、select 选项:select 对查出来的结果的处理

17、方式。All :默认的,保留所有结果;Discinct :去重,查出来的结果,将重复的给去除(所有字段都相同)。精品资料_2、字段别名:字段别名:当数据进行查询出来的时候,有时候名字并不一定就满足需求(多表查询的时候,会有同名字段)需要对字段名进行重命名:别名。语法:字段名【 as 】 别名;精品资料_3、数据源数据源:数据的来源,关系型数据库的来源都是数据表,本质上只要保证数据表类似二维表,最终都可以作为数据源。数据源分为多种:单表数据源,多表数据源,查询语句;1、 单表数据源:select * from表名;2、 多表数据名:select * from表名 1,表名 2 ,;·(

18、笛卡尔积没什么卵用)精品资料_3、 子查询:数据来源是一条查询语句(查询语句的结果是二维表)Select * from( select语句)as 表名;4、where 子句where 子句:用来判断数据,筛选数据。Where 子句返回结果,0 或者 1,0 代表 false ,1 代表 true 。判断条件:条件查询1:要求找出学生id 为 1 或者 3 或者 5 的学生;条件查询2: 查询区间落在180,190身高之间的学生;精品资料_Between 本身是闭区间,between 左边的值必须小于或者等于右边的值。4、group by 子句group by:分组的意思,根据某个字段进行分组(

19、相同一组,不同的分到不同组)基本语法:Group by字段名;分组的意义在于统计数据(按组统计,按分组字段进行数据统计)SQL 提供一系列统计函数:Count ();统计分组后的记录数,每一组有多少记录;Max ();统计每组中最大值;Min ();统计每组中最小值;Avg ();统计平均值;Sum ();统计和;精品资料_Count ()函数,里面可以使用两种参数,*代表统计记录,字段名代表统计对应的字段( NULL不统计);分组会自动排序,根据分组字段自动排序,默认升序。Group by字段【 asc|desc (降序)】; -对分组结果合并之后的整个结果进行排序。多字段分组:先根据一个字

20、段进行分组,然后对分组后的结果再次按照其他字段进行分组。精品资料_精品资料_5、having 子句having 子句:与where 子句一样,进行条件判断的。Where是对磁盘数据进行判断的,进入内存之后,会进行分组操作,分组结果就需要having 来处理。Having 能做 where 能做的几乎所有事情, 但 where 却不能做 having 能做的很多事情。5.1 、分组统计的结果或者说统计函数都只有having 能够使用。5.2 、having 能够使用字段别名但where 不能, where 是从磁盘取数据,所以名字只可能是字段名,别名是在字段进入到内存后才产生的。6、Order

21、by 子句:精品资料_Order by :排序,根据某个字段进行升序后者降序排序,依赖校对集。基本语法:Order by字段名【asc|desc 】; -asc 是升序(默认的) , desc 是降序。排序可以进行多字段排序,先根据某个字段进行排序,然后排序好的内部再按照某个数据进行再次排序。7、limit 子句limit 子句是一种限制结果的语句:限制数量。Limit 有两种使用方式:7.1 、只用来限制长度(数据量), limit 数据量;7.2 、限制起始位置,限制数量;limit 起始位置,长度;8、数据库事务的基本特性精品资料_数据库事务概念什么是数据库事务?事务( transaction )是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。数据库事务的四个基本性质(ACID )1. 原子性( Atomicity )事务的原子性是指事务中包含的所有操作要么全做,要么全不做(all or none )。2. 一致性( Consistency )在事务开始以前,数据库处于一致性的状态,事务结束后,数据库也必须处于一致性状态。拿银行转账来说,一致性要求事务的执行不应改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论