深入解析MySQL的学习过程见解

    作者:课课家教育更新于: 2019-04-04 20:16:45

      我们学习数据库是,总会遇到一些问题,然后问题慢慢解开,最后会深入解析,MySQL的学习过程却是最重要的。

      数据库对于每一个开发人员都是必须学习和深入掌握的一门技术,下面是在上课的过程中留下的MySQL笔记,提供学员参考学习。该笔记深度解析了MySQL的学习语法,愿学员能有所收获

      1、MySQL安装成功后的进入方式

      /第一种方式进入:

      点击开始--->所有程序--->Mysql-->MysqlServer5.0--->MysqlCommandLineClient点击

      提示Enterpassword:root回车

      即可进入Mysql操作界面:

      showdatabases;//显示所有的数据库

      usetest;//选择并使用test数据库

      showtables;//显示test库中所有表

      exit退出

      第二种进入方式:

      开始--运行输入cmd回车

      cd/进入c盘根目录

      cd切换到:

      C:/ProgramFiles/MySQL/MySQLServer5.0/bin>

      在此目录中采用

      mysql-uroot-p

      mysql-h127.0.0.1-uroot-proot

      回车

      提示Enterpassword:root回车

      即可进入Mysql操作界面:

      showdatabases;//显示所有的数据库

      usetest;//选择并使用test数据库

      showtables;//显示test库中所有表

      exit退出

      第三种方式进入:

      开始--运行输入cmd回车

      cd/进入c盘根目录

      cd切换到:

      C:/ProgramFiles/MySQL/MySQLServer5.0/bin>

      在此目录中采用

      mysql-uroot-p数据库名称

      mysql-h127.0.0.1-uroot-proot数据库名称

      回车

      即可进入Mysql操作界面:在此种直接可以使用book数据库

      showtables;//显示test库中所有表

      exit退出

      2、密码设置:

      当用户没有设置密码时:

      添加密码:

      mysqladmin-uroot-passwordab12

      注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

      当用户存在密码时:

      修改密码:

      cd/进入c盘根目录

      cd切换到:

      C:/ProgramFiles/MySQL/MySQLServer5.0/bin>

      采用命令:

      mysqladmin-uroot-prootpassword123

      回车后密码及更新为123;

      3、增加用户:

      (注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

      格式:grantselecton数据库.*to用户名@登录主机identifiedby“密码”

      第一种:

      增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:

      grantselect,insert,update,deleteon*.*totest1@“%”Identifiedby“abc”;

      但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例第二种:

      第一种:增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数

      mysql>grantselect,insert,update,deleteonbook.*totest2@localhostIdentifiedby"abc";

      如果你不想test2有密码,可以再打一个命令将密码消掉。

      mysql>grantselect,insert,update,deleteonbook.*totest2@localhostIdentifiedby"";

      下面来看看MYSQL中有关数据库方面的操作。注意:必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

      descadmin;//显示表的结构字段字段类型字段是否为null是否是主键额外信息等

      createdatabase数据库名称;//创建数据库

      showdatabases;//查看创建数据库是否成功显示所有数据库的名称

      use数据库名称;//使用此数据库

      showtables;//查看此数据库中的所有表的名称

      4、表的概念:

      数据库中包含一个或多个表;

      表:是行和列组成的。行称为记录,是组织数据的单位;

      列被称为字段,每一个列表示记录的一个属性。

      注意事项:

      在特定的表中,列的名称必须是唯一的,但相同列名可以在数据库中不同的表中存在|使用。

      在表中的行与列的次序是任意的。

      表:是数据的集合,是用来存储数据和操作数据的逻辑结构。

      案例:

      学生信息表=====>类

      学号姓名性别班级编号籍贯年龄====>学号姓名性别班级编号籍贯年龄

      0x01mmm09beijing20=====>类的一个实例|对象都对应数据库中一条记录

      5、数据类型

      字段的数据类型:

      MySQL中提供了三种数据类型:

      1、数值

      2、字符串

      3、日期

      数值:

      tinyint非常小的整数-128-1271个字节

      smallint较小的整数-2的15次方--2的15次方减去12个字节

      mediumint中等大小的整数-2的23次方--2的23次方减去13个字节

      int标准的整数-2的31次方--2的31次方减去14个字节

      bigint大整数-2的63次方--2的63次方减去18个字节

      float单精度浮点型4个字节

      double双精度浮点型8个字节

      字符型:

      charCHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值

      varcharVARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值

      binary

      varbinary

      BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:它们只是可容纳值的最大长度不同。

      ·tinyblob:仅255个字符

      ·blob:最大限制到65K字节

      ·mediumblob:限制到16M字节

      ·longblob:可达4GB

      在每个MySQL的文档(从MySQL4.0开始)的介绍中,一个longblob列的最大允许长度依赖于在客户/服务器协议中可配置的最大包的大小和可用内存数。

      你可能对在BLOB中存储大型文件非常谨慎,但是请放心使用,MYSQL提供了这样的灵活性!最大包的大小可容易地中的在配置文件中设置。例如:

      一,Windows通过文件my.ini(在系统盘)

      [mysqld]

      set-variable=max_allowed_packet=10M

      二,Linux通过etc/my.cnf

      [mysqld]

      max_allowed_packet=16M

      你能指定几乎任何你需要的大小。默认是1M。

      TEXT:

      有4种TEXT类型:

      TINYTEXT、

      TEXT、

      MEDIUMTEXT、

      LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

      SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。

      例如,指定为SET('one','two')NOTNULL的列可以有下面的任何值:

      ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。

      在某些情况下,ENUM值也可以为空字符串('')或NULL:

      ·如果你将一个非法值插入ENUM(也就是说,允许的值列之外的字符串),将插入空字符串以作为特殊错误值。该字符串与“普通”空字符串不同,该字符串有数值值0。后面有详细讨论。

      ·如果将ENUM列声明为允许NULL,NULL值则为该列的一个有效值,并且默认值为NULL。如果ENUM列被声明为NOTNULL,其默认值为允许的值列的第1个元素。

      每个枚举值有一个索引:

      ·来自列规定的允许的值列中的值从1开始编号。

      ·空字符串错误值的索引值是0。这说明你可以使用下面的SELECT语句来找出分配了非法ENUM值的行:

      日期类型:

      DateTimeYYYY-MM-DDHH:MM:SS从1000-01-0100:00:00到9999-12-3123:59:49

      dateYYYY-MM-DD从1000-12-31至9999-12-31

      timestampYYYYMMDDHHMMSS

      timeHH:MM:SS

      yearYYYY

      //通过mysql.chm3教程中的3.3.2创建表pet

      7、创建表:

      需要考虑:表包含哪些内容。列===>行记录

      宠物表pet包含字段列-->列的名称列的数据类型列的长度列是否为空列是否为主键是否使用约束

      宠物的名称:namevarchar20null

      宠物的主人:ownervarchar20null

      宠物的性别:sexchar1

      宠物的种类:speciesvarchar20

      宠物的出生日期:birthdate

      宠物的死亡日期:deathdate

      创建数据库

      createdatabaseeducsdn;//创建数据库

      showdatabases;//查看是否创建成功

      useeducsdn;//使用数据库

      然后执行创建的命令

      使用Transact-SQL语言创建表

      creattable表名(

      字段名称数据类型约束条件,

      字段名称数据类型约束条件,

      字段名称数据类型约束条件

      );

      创建pet表命令如下

      mysql>createtablepet

      ->(

      ->namevarchar(20),

      ->ownervarchar(20),

      ->speciesvarchar(20),

      ->sexchar(1),

      ->birthdate,

      ->deathdate

      ->);

      QueryOK,0rowsaffected(0.08sec)

      showtables;//查看表是否创建成功

      descpet;//查看表的结构

      select*frompet;//查看表中的所有数据

      DML语句insert

      语法形式:insertintotable_name(column_name[,....n])values(val1,val2,....n);

      字符串类型''引起来date''

      //插入数据到宠物表

      //插入一条完整记录

      mysql>insertintopet(name,owner,species,sex,birth,death)

      ->values('Claws','Gwen','cat','m','1994-03-17',null);

      //插入一条完整记录

      mysql>insertintopetvalues('Buffy','Harold','dog','f','1989-05-13',null);

      //插入一条记录中部分字段数据

      mysql>insertintopet(name,owner,species,sex,birth)

      ->values('Fluffy','Harold','cat','f','1993-02-04');

      mysql>insertintopet(name,owner)values('benben','redarmy');

      //插入记录时观察日期的格式类型

      mysql>insertintopetvalues('fang','benny','dog','m','19900827',null);

      mysql>insertintopetvalues('Bowser','Diane','dog','m','1979.08.31','1995/07/29');

      Date日期类型插入可以按照'YYYY-MM-DD'或'YY-MM-DD'格式的字符串。这里也允许使用“不严格的”语法。例如,'98-12-31'、'98.12.31'、'98/12/31'和'98@12@31'是等价的。

      DateTime日期类型插入可以按照:'YYYY-MM-DDHH:MM:SS'或'YY-MM-DDHH:MM:SS'格式的字符串。允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-3111:30:45'、'98.12.3111+30+45'、'98/12/3111*30*45'和'98@12@3111^30^45'是等价的

      批量插入:

      mysql>insertintopet

      ->values('Chirpy','Gwen','bird','f','1998-09-11',null),

      ->('Whistler','Gwen','bird','','1997-12-09',null);

      SQL:

      SQL被称为结构化查询语言(StructuredQueryLanguage)是操作和检索关系型数据库的标准语言

      SQL的分类:

      ※数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。DataDefinitionLanguage

      它最基础的SQL它用来创建数据库修改或者删除数据库中的各种对象。

      ※数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。DataManipulationlanguage它是操纵表、视图中的数据

      ※数据查询语言(DQL),例如:SELECT语句。DataQuerylanguage

      ※数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。DataControlLanguage

      主要用来执行有关安全管理的操作

      SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。

      SQL功能介绍:

      SQL面向数据库执行查询;SQL可从数据库取回数据;SQL可在数据库中插入新的记录;SQL可更新数据库中的数据;SQL可从数据库删除记录;SQL可创建新数据库;SQL可在数据库中创建新表;SQL可在数据库中创建存储过程;SQL可在数据库中创建视图;SQL可以设置表、存储过程和视图的权限。

      RDBMS指的是关系型数据库管理系统。

      DQL查询语言

      :select:最简单的select的是:selectcolumn_name[,....n]from表名

      //查询表全部记录每条记录应该包含全部字段信息//*代表的是所有的列

      select*frompet;-->等价于:mysql>selectname,owner,species,sex,birth,deathfrompet;

      //指定列的查询

      mysql>selectnamefrompet;

      //为列指定别名查询

      mysql>selectnameas'姓名'frompet;

      //为表指定别名查询

      mysql>selectp.name,p.sex'姓别'frompetasp;

      //增加说明列:

      mysql>selectname,'Thisisbithday:',birthfrompet;

      //使用DISTINCT关键字

      mysql>selectdistinct(owner)frompet;

      mysql>selectdistinctownerfrompet;

      //查询所有的数据owner不重复的(也就说只出现一次)怎么办?在后面讲解后可以解答?

      //函数:

      count

      mysql>selectcount(*)frompet;

      mysql>selectcount(*)'总记录数是:'frompet;

      //怎么实现计算

      where子句的查询

      语法是:selectconditonfromtable_namewheresearchcondition;

      where子句通过条件表达式描述关系中元组的选择条件

      where子句使用的条件有:

      比较运算符:><>=<=<>=

      逻辑运算符:andornot

      范围运算符:betweenand

      列表运算符:innotin

      字符匹配:likenotlike

      未知值:isnullisnotnull

      //比较运算符查询

      //查询宠物的种类为cat的所欲宠物

      mysql>select*frompetwherespecies='cat';

      //查询宠物的出生日期大于1998-01-01

      mysql>select*frompetwherebirth>'1998-01-01';

      //逻辑运算查询

      //查询宠物的种类是dog并且性别为f的所有宠物

      mysql>select*frompetwherespecies='dog'andsex='f';

      //查询宠物的种类是dog或者性别为f的所有宠物

      mysql>select*frompetwherespecies='dog'orsex='f';

      //范围查询

      //查询宠物的出生日期在1993-01-01与1998-01-01之间的所有宠物

      mysql>select*frompetwherebirthbetween'1993-01-01'and'1998-01-01';

      mysql>select*frompetwherebirth>'1993-01-01'andbirth<'1998-01-01';

      //列表运算符

      //查询宠物的种类是cat或者是bird

      mysql>select*frompetwherespeciesin('cat','bird');

      //查询宠物的种类不是cat并且也不是bird

      mysql>select*frompetwherespeciesnotin('cat','bird');

      //字符匹配查询

      %通配符代表任意多个字符

      _单个字符

      //H%表示查询以H开头的任意字符也可以使用^

      mysql>select*frompetwhereownerlike'h%';

      //%y表示查询以y结尾任意字符串也可以使用$

      mysql>select*frompetwhereownerlike'%y';

      //%e%表示查询在任意位置包含字母e的所有字符串

      mysql>select*frompetwhereownerlike'%e%';

      //_e%表示第二个字符为e的所有字符串

      mysql>select*frompetwhereownerlike'_e%';

      //未知值:

      //查询宠物的死亡日期为空的所有宠物

      mysql>select*frompetwheredeathisnull;

      //查询已经死亡的所有宠物

      mysql>select*frompetwheredeathisnotnull;

      //作业:

      1.查询出生日期在1990--1998之间宠物并且性别为f。

      mysql>select*frompetwherebirthbetween'1990'and'1998'andsex='f';

      2.查询宠物的种类是snake或者是dog所有宠物

      mysql>select*frompetwherespecies='dog'orspecies='snake';

      3.查询种类是cat并且sex=f或种类dog并且出生日期大于1990;

      mysql>select*frompetwhere(species='cat'andsex='f')or(species='dog'andbirth>'1990');

      4.查询宠物的主人是:Gwen的所有宠物

      mysql>select*frompetwhereowner='gwen';

      5.查询宠物的主人是:Gwen并且种类是cat的所有宠物的记录

      mysql>select*frompetwhereowner='gwen'andspecies='cat';

      6.查询宠物的主人是:Gwen的或者种类是cat的所有宠物

      mysql>select*frompetwhereowner='gwen'orspecies='cat';

      7.查询宠物的出生日期大于1990并且宠物的种类是dog或者是cat的所有宠物的记录

      mysql>select*frompetwherebirth>'1990'and(species='dog'orspecies='cat');

      8.查询宠物的注入式Gwen或者是Harlod并且宠物的种类是dog并且性别是m的所有宠物的记录

      mysql>select*frompetwhere(owner='gwen'orowner='harlod')andspecies='dog'andsex='m';

      找Oracle视频教程学oracle上课课家教育,IT培训专家

课课家教育

未登录