快捷搜索:
来自 网络数据库 2019-12-13 17:39 的文章
当前位置: 67677新澳门手机版 > 网络数据库 > 正文

MYSQL数据库安装详解,Mysql学习笔记_1

Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。那多少个软件都以无偿或开源软件软件,因而使用这种办法除开人工成本就能够创造起一个平稳、免费的网址种类,称为“LAMP“或“LNMP”组合。

关系型数据库

少年老成、以cmd命令使用mysql的底工步骤 (DOS系统下清屏的吩咐:cls)

1.数量的安装

底蕴步骤:

1.1、mysql数据库的装置

(1)mysql -u root -p回车    //步向数据库

1、张开下载的mysql安装文件,双击运维mysql-5.5.40-win32.msi。

(2)password ........           //输入密码

2、选拔安装类型,有“typical(默许)”、“complete(完全)”、“custom(客户自定义)”三个采用,选拔“custom”,按“next”键继续。

(3)show databases;       //查看数据库

3、在“developer components(开荒者部分)”上左键单击,选用“this feature,

(4)T   路径........文件名.sql;  //连接文本记录,使用该公文存款和储蓄操作新闻

and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分剧情,全部设置在本地硬盘上”。在上边的“mysql server(mysql服务器)”、“client programs(mysql顾客端程序)”、“documentation(文书档案)”也如此操作,以保险安装具有文件。点选“change...”,手动指定安装目录。

(5)use 库名 ;  //选数据库

4、填上设置目录,小编的是“e:softwareinstallmysql”,也提议并不是放在与操作系统同一分区,那样可以免范系统备份还原的时候,数据被清空。按“ok”继续。

(6)create tables //建表

[if !supportLists]1.[endif]承认一下从前的装置,假若有误,按“back”重临重做。按“install”早先安装。

 

5、正在设置中,请稍候,安装完毕后会现身有功分界面,点击成功“next”之后,现身以下分界面。

二、mysql操作命令

此处询问是还是不是三回九转配备mysql数据的参数,勾选上,然后点击“finish”

1.连接

1.2、mysql的配置

  本地连接: mysql -u root -p

1、安装到位了,现身如下分界面将跻身mysql配置向导。

  明文连接: mysql -u root -p密码

2、接纳安顿情势,“detailed configuration(手动正确配置)”、“standard configuration(规范配置)”,咱们筛选“detailed configuration”,方便熟识配置进程。

  远程连接: mysql -h  ip地址 -u 账号 -p 

3、选择服务器类型,“developer machine(开垦测量试验类,mysql占用少之又少财富)”、“server machine(服务器类型,mysql占用超多财富)”、“dedicated mysql server machine(特意的数据库服务器,mysql占用全数可用财富)”

**2.库的**操作**命令**

4、采纳mysql数据库的差非常少用场,“multifunctional database(通用多成效型,好)”、“transactional database only(服务器类型,专心于事务管理,日常)”、“non-transactional database only(非事务管理型,较轻巧,重要做一些监督检查、记数用,对myisam数据类型的帮助只限于non-transactional),按“next”继续。

**  (1)**查阅全数数据库:                show  databases;**

5、选用网址并发连接数,同不常间连接的数据,“decision support(dss卡塔尔(قطر‎/olap(十多个左右)”、“online transaction processing(oltp卡塔尔国(500个左右)”、“manual setting(手动设置,自身输八个数)”。

**  (2卡塔尔国创造数据库:                   create database 库名;**

6、是不是启用tcp/ip连接,设定端口,假如不启用,就不能不在友好的机械上访谈mysql数据库了,在此个页面上,您还是能够筛选“启用规范情势”(enable strict mode),那样mysql就不会同意微小的语法错误。借使是新手,提出您撤销标准方式以减掉麻烦。但纯熟mysql现在,尽量使用专门的工作格局,因为它能够减低失误伤害数据步入数据库的或许性。按“next”继续

**  (3卡塔尔(قطر‎删除数据库:                     drop database 库名;**

7、正是对mysql暗中认可数据库语言编码实行设置(重要),平日选utf-8,按“next”继续。

**  (4卡塔尔(英语:State of Qatar)查看当前选择的数据库:                select  database();**

8、选取是不是将mysql安装为windows服务,还能够钦点service name(服务标记名称),是或不是将mysql的bin目录参加到windows path(参与后,就能够平素动用bin下的文书,而毫无提出目录名,比方总是,“mysql.exe -uusername -ppassword;”就能够了,不用建议mysql.exe的全部地址,很有益),小编这里全部打上了勾,service name不改变。按“next”继续。

**    (5)查看建库语句          show create database 数据库名;** **

9、询问是或不是要改进暗中认可root客户(一级管理)的密码。“enable root access from remote machines(是还是不是允许root客商在别的的机械上登录,假使要安全,就无须勾上,固然要有益于,就勾上它)”。最终“create an anonymous account(新建三个无名氏客户,无名氏客户能够再而三数据库,不可能操作数据,满含查询)”,平常就不用勾了,设置停止,按“next”继续。

***  (6)*查阅当前数据库存在的数目表        ***show tables; *

客商名和密码统意气风发设置成:

**注意:**MySQL数据库中命令不区分朗朗上口写。在Windows下,数据库名称也是不区分轻重缓急写的,但在Linux下,数据库名称严俊区分抑扬顿挫写。**

用户名:root

 

客户密码:root

3.表的操作命令**  **

10、确认设置精确,按“execute”使设置生效,即完成mysql的设置和布置。

  1.始建数据表
        
      create table [if not exists] 表名(
              字段名1  字段类型,
              字段名2  字段类型,
              字段名3  字段类型
              )engine=innodb default charset=utf8;

留意:设置达成,按“finish”后有叁个相比普及的荒谬,正是无法“start service”,通常出以后早前有安装mysql的服务器上,消除的办法,先保障早前设置的mysql服务器通透到底卸载掉了;不行的话,检查是或不是按上面一步所说,以前的密码是不是有改过,照上面的操作;要是依然十一分,将mysql安装目录下的data文件夹备份,然后删除,在设置到位后,将安装生成的data文件夹删除,备份的data文件夹移回来,再重启mysql服务就能够了,这种情状下,可能供给将数据库检查一下,然后修复一遍,防止数据出错。

  **(1)[if not exists]只要该表一纸空文则开创**

2.数据库的卸载

  (2卡塔尔engine  =  innodb 设置表引擎

2.1停止window的mysql服务。

  (3卡塔尔国default  charset=utf8 设置表的字符集

找到“调控面板”->“管理工科具”->“服务”,截至mysql后台服务。

  **(4卡塔尔(قطر‎各种建表语句的字段必需用逗号分隔,最后一句逗号无法有**

2.2卸载mysql安装程序。找到“调节面板”-> "程序和作用",卸载mysql程序。

 

2.3去除mysql安装目录下的全体文件。

  **2.查看建表语句      show create table '表名';**

2.4删减c盘programdata掩瞒目录中有关mysql的目录。

  **3.**查看表构造     **desc 表名   或   desc 表名/G(竖表);**

2.4.1开垦window系统的“展现隐蔽文件”成效,以便查看见系统的保有隐瞒文件

  4.删除表      drop  table  表名;

2.4.2找到programdata目录

 

2.4.3删除mysql目录

附:常用约束:

3.数据库入门

1卡塔尔主键节制:primary key --非空且唯大器晚成,一张表就定义二个主键

数量是各类企业的最焦点的、最根本的魂魄--------

2卡塔尔国主键自增进:auto_increment

优点:

3卡塔尔非空:not  null --不准插入null值,可定义五个非空节制

>方便查询

4卡塔尔国唯生机勃勃性:unique  --不许再次,但可感觉空,可定义八个唯豆蔻梢头约束(举个例子:账户名)

>可存款和储蓄的数据量大

5卡塔尔(قطر‎私下认可值:default  暗中认可值  --钦定缺省值,在未有增加值得场地下使用default后钦命的默许值

>保险数据的总体、意气风发致

6卡塔尔国零填充:zerofill 并不是限量插入的长度,仅是呈现时的位数使用0

>安全可相信

7)无符号: unsiged

3.1数目足以保存到地点

8卡塔尔(英语:State of Qatar)默许值:default (例:default('2'卡塔尔国卡塔尔若无加塞儿数据,则取私下认可值

1)数据保存在内部存款和储蓄器:

9卡塔尔注释内容: comment 建表语句中的注释

可取:数据的读写速度快

10卡塔尔(英语:State of Qatar)外键:foreign key(列名卡塔尔(英语:State of Qatar)     references 外键表名(外键列名卡塔尔(قطر‎; 

缺欠:断电大概程序关闭的动静下,数据就舍弃

在意:有外键时,创设表,先创制父表,再创设子表;插入数据,先插入父表,再插入子表;删除数据,先删除子表中的数据,再删除父表中的数据。

2)数据保存在文件:

 

可取:数据能够永恒保存

 

缺欠:频仍的读写操作,效用不高

4.增删改查(数据操作)

数码的管制不方便人民群众,查询数据的时候供给查询全体,然后在十三分

(1)增(添扩充少)

3)数据保存在数据库软件

**            ① insert into 表名 (字段1,字段2……卡塔尔(英语:State of Qatar) values (值1,值2……卡塔尔(قطر‎;   //提出接收 

优点:数据永恒保存

            ② insert into 表名 values (值1,值2……),(值1,值2……);      //三遍性插入多条数据

数码的保管十二分有利,当查问的时候速度快、操作也可以有利轻松

            ③ insert into 表名 (字段1,字段2……卡塔尔(英语:State of Qatar) values (值1,值2……卡塔尔,(值1,值2……卡塔尔(قطر‎;      //一回性插入多条数据

3.2数据库软件

            ④ insert into 表名 values (值1,值2...);

第一分开驾驭,数据库是实际上可作为是保留数据的库房,那自然知道数据库软件其实正是指的是治本数据库的软件或然说数据库管理软件。

            ⑤ insert into 表名 set 字段1=值1,字段2=值2...;

3.3科学普及数据库软件

              注意:
                1.值和字段名要生机勃勃意气风发对应,不然会报错
                2.写入的值一定要和数据类型相相配**

oracle,陶文集团的付加物,也是眼下最盛行的关系型数据库,跟java语言包容性相当好,因为今天java语言也是被钟鼓文公司收购了。维护专业自然也是金鼎文公司掩护。

**(2)删 (**删去数据**)**

sql server,微软集团的产物,windows操作系统平台上选拔分布,跟c#,net平台宽容性蛮好,那是必须的,同属微软的制品。

             delete from 表名 where  条件;**

db2,ibm集团的制品(ibm集团洋红受人尊敬的人),ibm的制品涉及软件、硬件。举个例子ibm有温馨的操作系统unix,数据库有db2,还会有web服务器websphere。

             truncate 表名;

上述的数据库都是归于关系型数据库

            
        注意:删除数据的时候,必需求增加where条件,否则会删除全部的数量

非关系型数据库:mongodb(nosql)很好得以达成了面向对象的数据库

 

--------------------------------------课程类别是先学mysql再学oracle

1.剔除表中的某一列。

4.mysql数据库

 

mysql是关系型数据库。什么是关系型数据库:

mysql>alter table 表名 drop <column> 列名; //column可省略

首先知道,数据库是治本数据的仓库,而数据库中的数据是具体世界上的有个别实体,抽象出来有价值要求保留的属性值。数据的集合就在数据库中称为表,表的是由列、和行组成的二维模型。那关系型数据库就是由二维的表和它在那之中的关系结合的一个数据社团。

附:drop、truncate、delete的区别?

student表

  a) drop和truncate是DDL,而delete是DML。

studentidstudentnameteacherid

  b卡塔尔国truncate和delete只删除数据,不会删除表的布局,而drop会把多少和表构造都剔除。

0001张三1000

  c卡塔尔delete可以带where有标准的去除,能够回滚(rollback卡塔尔(قطر‎,但除去速度较truncate相当的慢。而truncate则不得以去除特定的数量,也无法回滚(rollback卡塔尔(قطر‎,但除去速度比delete快。

0002李四1001

 

teacher表

建议:小心使用drop和truncate,尤其在数量还未备份的境况下。

teacheridteachername

 

1000张老师

(3)改(修改数据)

1001黎老师

**             update 表名 set 要修改的字段=新的字段...... where  条件

mysql关系型数据库管理种类(rdbms)是拘留着这么的三个个关系型数据库。当然在rdbms中是先有数据库、然后有表、才有数量的。

        注意:修正数据的时候,一定要加上where条件,不然会改正全数的数码**

c:usersadministrator>net start mysql

 

mysql服务正在启动.

1、纠正表中的某一列。

mysql服务大器晚成度运行成功。

 

c:usersadministrator>net stop mysql

a卡塔尔校订表中某一列的列名(同不寻常候可改进列的数据类型卡塔尔

mysql服务正在结束.

mysql>alter table 表名 change 原列名 新列名 列数据类型;

mysql服务已成功苏息。

 

5.sql语言入门

b卡塔尔修正表中某一列的数据类型

大家是怎么对rdbms进行关联的呢?大家是透过sql语言进行操作的,然后sql语言应该归属第4代语言,它是一门高端的布局化非进度化的查询语言。sql语言是国标化组织(iso)定义的关系型管理数据库系统的正式语言。----------àiso定义了大器晚成套标准。

mysql>alter table 表名 modify 列名 列新的数据类型;

经历了1986年sql86标准、1989年sql89标准、1992年sql92标准、1999年sql99标准、2003年sql03标准。

 

sql方言又是指的每一个rdbms对sql规范提供基本数据操作有部分组别的兑现,不过完全来说都遵照sql典型,已毕的法子只是有多少的界别。

 2.向表中增加新的列

直面sql语言,大家上学内容有:

mysql>alter table 表名 add <column> 列名 列的数据类型 [<列的完整性节制>];//column可省略

[if !supportLists]–[endif]数码定义语言(ddldata definition language卡塔尔:其语句满含动词create和drop。在数据库中创立新表或删除表(creat table或drop table)

 

[if !supportLists]–[endif]数码查询语言(dql data query language卡塔尔国 *****

3、删除表中的某一列。

[if !supportLists]–[endif]数量操作语言(dmldata manipulation language卡塔尔:其语句包罗动词insert,update和delete。它们各自用于增添,修改和删除表中的行。也称得上动作查询语言

mysql>alter table 表名 drop <column> 列名;  //column可省略

[if !supportLists]–[endif]多少调整语言(dcldata control language卡塔尔:它的言辞通过grant或revoke拿到特许,分明单个顾客和顾客组对数据库对象的访问

 

6.mysql登录

4.改正表的编码字符集。  alter table 表名 character set 字符集;

运行的输入cmd步入dos窗口

5.改革表的名称      alter table 原表名 rename to 新表名; 或   rename table 原表名 to 新表名;

1.mysql –uroot –proot;窗口上会显示大家的密码

 

2.mysql –uroot –p回车

             

提醒再输入大家的密码,这样登入密码不会揭露在窗体上。

 

3.设置好的mysql会给咱们设置叁个客商端也能够登陆。

(4)查(查找数据)

4.有第三种的工具来报到我们的mysql。

            **select * from 表名 where 字段名=字段值;* * **

mysql –uroot –proot –hlocalhost

*              ***select 字段1,字段2... from 表名 where 字段名=字段值;*** ***

mysql- uroot –proot  -h127.0.0.1

***            * select *(全数字段卡塔尔(قطر‎ from 表;**

7.数据库的田间管理

**             select 字段1,字段2.. from 表;**

7.1查询数据库

 

mysql>show databases;------查询数据库

1. 过滤表中再度的数额(关键字distinct卡塔尔

--------------------

select distinct 列名 from 表名;   //重返该字段下的有所字段值,若有同样字段值,则只回去四个。    

| database           |

2、排序(关键字order by)

--------------------

mysql>select * from 表名 order by 列名 asc;       //升序(暗中认可卡塔尔(قطر‎,asc可省略不写。
mysql>select * from 表名 order by 列名 desc;     //降序

| information_schema |    --------------mysql元数据

例:根据学子表(student卡塔尔(قطر‎中学子战表(grade卡塔尔的由高到低依次输出学子的学号(sno卡塔尔国、姓名(sname卡塔尔(英语:State of Qatar)和成就(grade卡塔尔(قطر‎.

| mysql              |  ----------- mysql的有的配备参数数据放在那处(客商名,密码)

mysql>select sno,sname,grade from student order by grade desc;

| performance_schema | -------------mysql的后生可畏对运作时的多少(日志消息等。)

3、分页查询(关键字limit卡塔尔。

| test               |  -----------空的数据库,是用来大家测量检验用的。

mysql>select * from 表名 limit (pageNo-1)*pagesize,pagesize; //    pageNo-->要询问的页数,pageSize-->每页呈现的记录数

--------------------

例:查询dept表中率先页(每页2条数据卡塔尔国的笔录。

4 rows in set (0.00 sec)

mysql>select * from 表名 limit 0,2; 

7.2创造数据库

 

开创叁个数据库

4、模糊查询(关键字like卡塔尔(قطر‎。

mysql>create database u29;

mysql>select * from 表名 where 列名 like ' % ';  

query ok, 1 row affected (0.03 sec)

 “%”代表私下字符;

mysql> create database u29 default character set gbk;成立数据库,并带字符编码的

    “_”代表单个字符;

查询数据库的字符编码

例:select * frome t_student where stuName like ‘张三”;

mysql> show create database u29;

       select * frome t_student where stuName like ‘张三%”;

---------- --------------------------------------------------------------

       select * frome t_student where stuName like ‘%张三%”;//含有张三的率性字符

| database | create database                                              |

       select * frome t_student where stuName like ‘张三_”

---------- --------------------------------------------------------------

例:查询学子表(student卡塔尔(英语:State of Qatar)中姓刘的上学的小孩子的信息。

| u29      | create database `u29` /*!40100 default character set utf8 */ |

mysql>select * from student where sname like '刘%';

---------- --------------------------------------------------------------

例:查询学子表中姓名第叁个字为阳的学员消息。

1 row in set (0.00 sec)

mysql>select * from student where sname like '_阳%';  //_代替他二个字符

7.3去除数据库

 

mysql> drop database u29;

5、范围查询(关键字between .. and .. , in(卡塔尔卡塔尔(英语:State of Qatar)。

query ok, 0 rows affected (0.13 sec)

mysql>select * from 表名 where 列名  between 字段值(小卡塔尔国 and 字段值(大卡塔尔(英语:State of Qatar);//包括两端的字段值

7.4改造数据库的字符集编码

mysql>select * from 表名 where 列名 in (字段值1,字段值2,......);

mysql> alter database u29 default character set utf8;

带and的多规格查询:

只顾在调控台上大家选用的utf8编码:大家可以set names gbk;

select 字段1,字段2…frome 表名 where 条件表明式1 and 标准表明式2 [and 条件发挥式n]

show variables  like ‘character%’;

例:select * frome t_student where gradeName=’一年级’ and age=23;

8.表的军事拘留

 

mysql>use u29;接受二个数据库

带or的多规格查询

database changed

select 字段1,字段2…frome 表名 where 条件表明式1 or 标准表明式2 [or 条件发挥式n]

在sql中语,标记符的不区分朗朗上口写。不过大家日常是把某些重中之重字大写。

例:select * frome t_student where gradeName=’一年级’ or age=23;//也许,条件大器晚成旦满足四个

在创制一张表的时候,数据库它会去查询它有同等的表未有,假使有,不授予成立,会报错

 

error 1050 (42s01): table 'student' already exists

distinct去重新查询:select distinct 字段名 from 表名;

8.1翻看当前数据库有哪些表

 

mysql>show tables;  ---查看表

对查询结果排序order by:select 字段1,字段2…from 表名 order by 属性名 [asc|desc]

---------------

例:select * frome t_student order by age desc;//降序,从大到小

| tables_in_u29 |

       select * frome t_student order by age asc;//升序,asc私下认可能够不写

---------------

 

| student       |

 

---------------

 

8.2建表

譬喻:查询学子表(student卡塔尔中语文战表chinese在80~90分之间的具备学子新闻(包含80和90卡塔尔
mysql>select * from student where chinese between 80 and 90;

mysql>create table student

比方:查询学子表(student卡塔尔(قطر‎中数学成绩math为60分,70分,80分和90分的有着学员音信。
mysql>select * from student where math in (60,70,80,90);

-> (sid int,

 

-> name varchar(20),

6、使用小名。

-> age int

mysql>select 字段名 <as> 别名,字段名 别名,... from 表名;    //as可省略

-> );

诸如:查询学生战表表(sc卡塔尔(英语:State of Qatar)中学子姓名(sname卡塔尔(英语:State of Qatar)及总成绩,sname字段用全名表示,全部科目得分总和用总分表示。
mysql>select sname as 姓名,chinese math english 总分 from sc;

query ok, 0 rows affected (0.01 sec)

 

8.3删除表

7、分组查询(关键字group by卡塔尔。

mysql>drop table student;

mysql>select 列名,count(列名) from 表名 group by 列名;

query ok, 0 rows affected (0.00 sec)

分组查询group by

8.1查看表构造

group by 属性名 [having 条件表达式][with rollup]   单身行使(聊无意义,不可能独立行使);

mysql>desc student;

与group_concat(卡塔尔(英语:State of Qatar)函数一同利用;

------- ------------- ------ ----- --------- -------

例:select gradeName,group_concat(stuName) from t_student group by gradeName;

| field | type        | null | key | default | extra |

 

------- ------------- ------ ----- --------- -------

与聚合函数一同使用;

| sid   | int(11)     | yes  |     | null    |       |

例:select gradeName,count(stuName) from t_student group by gradeName;

| name  | varchar(20) | yes  |     | null    |       |

 

| age   | int(11)     | yes  |     | null    |       |

与having一起行使(呈现输出的结果);

------- ------------- ------ ----- --------- -------

例:select gradeName,count(stuName) from t_student group by gradeName having count(stuName)

8.2数据类型

 

[if !supportLists]Ø[endif]整型

与with rollup 一齐使用(最终参加三个总和行);

tinyint1b(-128,127卡塔尔国(0,255卡塔尔(英语:State of Qatar)相当的小整数值

例:select gradeName,group_concat(stuName) from t_student group by gradeName with rollup;

smallint2b(-32 768,32 767卡塔尔(英语:State of Qatar)(0,65 535卡塔尔国小整数值

 

mediumint3b(-8 388 608,

举个例子:查询种种单位的职工人数,依照机构编号(deptno卡塔尔(英语:State of Qatar)对职员和工人开展分组,再次回到各机关职工人数。
mysql>select deptno,count(empno卡塔尔(英语:State of Qatar) from emp group by deptno;  //empno--职员和工人编号,emp--工作者表

8 388 607)

having:对分组后的结果开展标准化节制
譬喻:查询每一个部门职员和工人人数抢先2的享有记录,重回人数超过2人的机构编号及其部门人数。
mysql>select deptno,count(empno) from emp group by deptno having count(empno)>2;

(0,16 777 215卡塔尔小整数值

 

int4b(-2 147 483 648,

8、表连接查询(同期涉嫌四个表的查询称为连接查询,用来一而再三番五次几个表的基准称为连接条件卡塔尔(قطر‎。

2 147 483 647)

A)内连接:join,inner join

(0,4 294 967 295)整数值

B)外连接:left join,left outer join,right join,right outer join,union

bigint8b(-9 233 372 036 854 775 808,

C)交叉连接:cross join

9 223 372 036 854 775 807)

内连接:  表1  join 表2  on  表1.字段名=表2.字段名;              //内连接查询(两张或上述的表连接起来查询需求的数额)

(0,18 446 744 073 709 551 615卡塔尔大整数值

例:查询工作者表(emp卡塔尔国中的职员和工人号(empno卡塔尔(英语:State of Qatar)、工作者姓名(empname卡塔尔、部门号(deptno卡塔尔(英语:State of Qatar)和单位名称(deptname卡塔尔(قطر‎,部门名称字段在部门表(dept卡塔尔(英语:State of Qatar)中.

日常就用int类型。

mysql> select empno,empname,emp.deptno,deptname from emp join dept on emp.deptno=dept.deptno;

[if !supportLists]Ø[endif]浮点型数据类型

外接连查询(两张或上述的表连接起来查询某张表的新闻) 
1.左外接连:  表1  left join  表2    on    表1.列名 = 表2.列名; 
表1看作主表,主表中的全数记录都会输出,和从表相配不上的字段用null举行补齐。

float4b(-3.40e-38,3.40e 38卡塔尔7位小数单精度浮点数

例:以职工表(emp卡塔尔为主表实现上述查询。

double8b(-8 388 608,

mysql> select empno,empname,emp.deptno,deptname from emp left join dept on emp.deptno=dept.deptno;

8 388 607)

2.右外接连:  表1  right join  表2   on   表1.列名=表2.列名;
表2为主表,主表中的全数记录都会输出,和从表相配不上的字段用null进行补齐。

拾多个人小数双精度浮点数

例:以机关表(dept卡塔尔(قطر‎为主表完毕上述查询。

decimal(m,d)17b(-10的38次方-1 ,

mysql> select empno,empname,emp.deptno,deptname from emp right join dept on emp.deptno=dept.deptno;

10的38次方-1)

 3.多规格连接查询

三15人小数大浮点数

select * from t_book,t_bookType where t_book.bookTypeId=t_bookType.id and t_book.price>70;

numeric(m,d)同decimal

子查询

咱俩常常用double来表示浮点型小数

1.带in关键字的子查询(一个查询语句的法规或许落在另四个select语句的询问结果中)

decimal(m,d卡塔尔(قطر‎那个数据类型往往是跟钱打交道的。不会有精度的损失。

select * from t_book where bookType in(select id from t_bookType);

127.9999 m象征7位,d就象征4位,在那间大器晚成要注意m大于d。

select * from t_book where bookType not in(select id from t_bookType);

[if !supportLists]Ø[endif]字符串类型

 

char(m)m0-255字符型

2.带比较运算符的子查询(子查询能够利用相比较运算符)

varchar(m)m 1b0-65535字符型

select * from t_book where price>=(select price from t_priceLevel where priceLevel=1);

binary(m卡塔尔(英语:State of Qatar)m0-m0-m变长字符串

 

varbinary(m卡塔尔m 1b0-m0-m变长字符串

3.带exists入眼字的子查询(参加子查询查询到记录,则开展外围查询,不然,不实行外层查询)

char:固常字符串类型char(255卡塔尔(قطر‎;长度就定下来了

select * from t_book where exists(select * from t_booktype);

笔者们录入的数量无法超越大家钦赐的长度。

select * from t_book where not exists(select * from t_booktype);

若果大家录入的数额的长度未有当先大家钦赐的长度。

 

诸如:录入的字符串为‘张三’,它就能在后头用空格把钦赐的长短

4.带any最首要字的子查询(any关键字表示满意在那之中任一条件)

填满。

select * from t_book where price>= any(select price from t_priceLevel);

varchar:可变长字符串类型

 

它能够钦定长度varchar(20)

5.带all重大字的子查询(all关键字表示满意全数法则)

录入的字符串的尺寸‘张三’,它就不会char来用空格给你补齐。

select * from t_book where price>= all(select price from t_priceLevel);

varchar(m 1b)

 

1b这几个尺寸就是来测算你给的字符串的其实尺寸。

 

财富的据有上,其实它的花销不见得比char类型要节省。

4.集合查询

text(clob卡塔尔类型sql语言的正经八百。归于msyql本人的搞的连串。

 

被视为非二进制字符串(字符字符串卡塔尔国

1.union

方言:数据库厂家本身搞的片段语法

采用union关键字是,数据库系统会将有所的查询结果归拢到一起,然后去掉相似的笔录;

[if !supportLists]Ø[endif]日子类型

select id from t_book union select id from t_bookType;

year1byyyy1901 - 2155

 

date3byyyy-mm-dd1000-01-01  -  9999-12-31

2.union all

timesamp4byyyy-mm-dd hh:mm:ss1970-01-01 00:00:01 - 2038

行使union all,不会去除掉重复的记录;

datatime8byyyy-mm-dd hh:mm:ss1000-01-01 00:00:00 - 9999-12-31 23:59:59

select id from t_book union all select id from t_bookType;

[if !supportLists]Ø[endif]二进制数据类型

 

tinyblob2550-255二进制大对象

9、表的复制。

blob65k0-65kb二进制大对象

mysql>create table 新表表名 select * from 被复制表表名; //新表的表结议和数据与原表相同。

mediumblob16m0-16m二进制大对象

mysql>create table 新表表名 select 列名1,列名2,... from 被复制表表名;  //能够由此在select查询中钦点字段来节制出未来新表中的字段
mysql>create table 新表表名 select * from 被复制表表名 where 0=1; //通过使用select语句创制已存在表的空别本(即创办相通表构造,但不复制原表数据复苏卡塔尔国,何况再次回到八个空结果集。

longblob4g0-4g二进制大对象

10.  空值查询:select 字段1,字段2…frome 表名 where 字段  is[not] null; 

这种数据类型,日常是用来保存一些图片、音频等公事。

11、聚合函数。

8.3增加表的字段

a卡塔尔(英语:State of Qatar)重回钦点列非空值的个数

mysql> alter table student add column sex char(1);

mysql>select count(列名) from 表名;

query ok, 0 rows affected (0.03 sec)

例:查询学子表(student卡塔尔(قطر‎中学子的总人数。

records: 0  duplicates: 0  warnings: 0

mysql>select count(sno卡塔尔国 from student;  //根据学子学号总计学子个数,学号不为空且唯豆蔻梢头

8.4删除表的字段

b卡塔尔(英语:State of Qatar)重返钦命列的最值
mysql>select max(列名卡塔尔(قطر‎ from 表名;  //再次来到钦定列的最大值

mysql> alter table student drop column sex;

例:查询学子表(student卡塔尔(英语:State of Qatar)而立之岁数(sage卡塔尔最大的学习者姓名(sname卡塔尔国和年龄。

query ok, 0 rows affected (0.03 sec)

mysql>select sname,max(sage) from student; 
mysql>select min(列名卡塔尔 from 表名;   //重返钦定列的最小值

records: 0  duplicates: 0  warnings: 0

例:查询学子战表表(sc卡塔尔中语文成绩(chinese卡塔尔(英语:State of Qatar) 最低的学习者的学号(sno卡塔尔(英语:State of Qatar)和语文成绩。

8.5改革表字段名称

mysql>select sno,min(chinese) from sc;

mysql> alter table student change column username name varchar(22);

c卡塔尔国重回钦命列的平均值
mysql>select avg(列名) from 表名;

query ok, 0 rows affected (0.03 sec)

d卡塔尔(قطر‎再次来到钦命列的全部值之和
mysql>select sum(列名) from 表名;

records: 0  duplicates: 0  warnings: 0

5.退出顾客端

8.6修正表的字段类型

  exit;  quit;    q      Ctrl c      (率性多个就能够)

mysql> alter table student modify column name varchar(10);

6.mysql的任何操作

query ok, 0 rows affected (0.03 sec)

1.数据库的导入导出。

records: 0  duplicates: 0  warnings: 0

导出数据库:mysqldump -u 客商名 -p  数据库名>数据库名.sql

8.7改进表的名目

导入数据库:source 数据库名.sql

mysql> alter table student rename to stu;

2、突显扶助命令项目清单。

query ok, 0 rows affected (0.00 sec)

mysql> h; //(加分号和不加分号甘休都不影响命令试行卡塔尔国

是先有表,再有数量的。要先有表的话,大家是要先定表的字段名称和体系。

3、消除当前输入的讲话(命令卡塔尔国。

9.复制一张表

mysql> c

9.1复制表的组织,表的源委也要复制过来。

4、查询当前设置的MySQL服务器的版本号。

mysql>create table tempstu select * from stu;

mysql> select version();

query ok, 3 rows affected (0.00 sec)

5、查看MySQL服务器状态音讯(包含版本号,下边几个指令推行效力相像卡塔尔(قطر‎。

records: 3  duplicates: 0  warnings: 0

mysql> status;  //(加分号和不加分号甘休都不影响命令试行卡塔尔国

mysql> status -------看下当前的情状

mysql> s


 

mysql  ver 14.14 distrib 5.5.40, for win32 (x86)

===========================================================================================================

connection id:          2

MySQL、DB2、Oracle、SQL Server、玛丽亚DB等等,由于MySQL已然是Oracle旗下成品,或许会被闭源,不再无需付费,但MariaDB数据库管理种类是MySQL的一个分支,主要由开源社区在保证,玛丽亚DB是全然宽容MySQL,包涵API和命令行,使之能轻巧产生MySQL的取代品。在累积引擎方面,MariaDB基于事务的Maria存款和储蓄引擎,替换了MySQL的MyISAM;使用XtraDB来替代MySQL的InnoDB。

current database:       u29

current user:           root@localhost

ssl:                    not in use

using delimiter:        ;

server version:         5.5.40 mysql community ser

protocol version:       10

connection:             localhost via tcp/ip

server characterset:    utf8

db     characterset:    utf8

client characterset:    utf8

conn.  characterset:    utf8

tcp port:               3306

uptime:                 4 hours 5 min 50 sec

windows操作系统的暗中同意字符集是gbk;

数据库是uft-8;

二个中文字:假若是gbk编码方式2个字节—1个粤语字

若果是utf-8编码格局3个字节---1个中文字

施工方案:1.修改我们的my.ini那么些文件的默许字符集。

  1. set names gbk;

mysql>show character set;

---------- ----------------------------- --------------------- --------

| charset  | description                 | default collation   | maxlen |

---------- ----------------------------- --------------------- --------

| big5     | big5 traditional chinese    | big5_chinese_ci     |      2 |

| dec8     | dec west european           | dec8_swedish_ci     |      1 |

| cp850    | dos west european           | cp850_general_ci    |      1 |

| hp8      | hp west european            | hp8_english_ci      |      1 |

| koi8r    | koi8-r relcom russian       | koi8r_general_ci    |      1 |

| latin1   | cp1252 west european        | latin1_swedish_ci   |      1 |

| latin2   | iso 8859-2 central european | latin2_general_ci   |      1 |

| swe7     | 7bit swedish                | swe7_swedish_ci     |      1 |

| ascii    | us ascii                    | ascii_general_ci    |      1 |

| ujis     | euc-jp japanese             | ujis_japanese_ci    |      3 |

| sjis     | shift-jis japanese          | sjis_japanese_ci    |      2 |

| hebrew   | iso 8859-8 hebrew           | hebrew_general_ci   |      1 |

| tis620   | tis620 thai                 | tis620_thai_ci      |      1 |

| euckr    | euc-kr korean               | euckr_korean_ci     |      2 |

| koi8u    | koi8-u ukrainian            | koi8u_general_ci    |      1 |

| gb2312   | gb2312 simplified chinese   | gb2312_chinese_ci   |      2 |

| greek    | iso 8859-7 greek            | greek_general_ci    |      1 |

| cp1250   | windows central european    | cp1250_general_ci   |      1 |

| gbk      | gbk simplified chinese      | gbk_chinese_ci      |      2 |

| latin5   | iso 8859-9 turkish          | latin5_turkish_ci   |      1 |

| armscii8 | armscii-8 armenian          | armscii8_general_ci |      1 |

| utf8     | utf-8 unicode               | utf8_general_ci     |      3 |

| ucs2     | ucs-2 unicode               | ucs2_general_ci     |      2 |

| cp866    | dos russian                 | cp866_general_ci    |      1 |

| keybcs2  | dos kamenicky czech-slovak  | keybcs2_general_ci  |      1 |

| macce    | mac central european        | macce_general_ci    |      1 |

| macroman | mac west european           | macroman_general_ci |      1 |

| cp852    | dos central european        | cp852_general_ci    |      1 |

| latin7   | iso 8859-13 baltic          | latin7_general_ci   |      1 |

| utf8mb4  | utf-8 unicode               | utf8mb4_general_ci  |      4 |

| cp1251   | windows cyrillic            | cp1251_general_ci   |      1 |

| utf16    | utf-16 unicode              | utf16_general_ci    |      4 |

| cp1256   | windows arabic              | cp1256_general_ci   |      1 |

| cp1257   | windows baltic              | cp1257_general_ci   |      1 |

| utf32    | utf-32 unicode              | utf32_general_ci    |      4 |

| binary   | binary pseudo charset       | binary              |      1 |

| geostd8  | geostd8 georgian            | geostd8_general_ci  |      1 |

| cp932    | sjis for windows japanese   | cp932_japanese_ci   |      2 |

| eucjpms  | ujis for windows japanese   | eucjpms_japanese_ci |      3 |

---------- ----------------------------- --------------------- --------

9.2复制表,只复制表的布局,不带多少。

mysql> create table tempstu2 select * from stu where 1=0;

query ok, 0 rows affected (0.02 sec)

records: 0  duplicates: 0  warnings: 0

轻松的查询:

mysql> select * from tempstu2;

简易的插入:

mysql> insert into stu values(3,'况佳成',50);

10.索引

目录有利有弊,索引的机能实质就是为了巩固查询的频率,不过反而会下跌insert

update、delete语句的频率,因为大家在做操作数据的时候会变动的目录的再一次地点,

一张表能够创设多少个目录,也不是说索引愈来愈多越好。往往大家来定一个索引字段是唯后生可畏的。

再正是索引字段类型int类型。

定义索引的长短能够钦命。

怎么来一个索引?

mysql> create index s_index2 on stu(name(5));

删除字索引的主意

mysql> alter table stu drop index s_index2;

11.mysql约束

首先大家应该驾驭在应用数据库操作操作数据的时候,我们是先有表才有多少。表创立好了后来,当顾客录入数据的历程中哪些来保障数据的完整性呢?(数据的可信性 数据的准头=数据的完整性),所以我们要对数码加一些规规矩矩、即节制。

比如:数据类型告诉大家须要仓库储存什么体统的数量,而限制告诉大家那一个多少具体须要满意的规行矩步。如:age int,我们能够积攒负整数,price float,大家能够积攒负小数,可是负数是不满意实际法规的(法规大概也是比照大家的急需制订的),由此我们要求限制。

封锁首要形成对数码的调查,保障数据库数据的完整性;假诺有互相信任数据,保险该多少不被去除。

dbms协助大家去爱抚和管制着那个限制。达到操作数据的安全性。

大范围限定重要分为:

11.1检查节制check(可是mysql不援救)

mysql> create table test(sid int ,name varchar(20),age int check(age > 50)  );

11.2非空约束not null

功用:节制字段必需赋值

笔者们也能够赋null值-----错误的

瞩目:加了非空的自律后,大家不可能插入null值。

何况dbms也不可能为大家插入默许值。

表中字段的体系不给值的时候,dbms自动给大家加多默许值为null。

alter table表名modify字段名varchar(16卡塔尔(英语:State of Qatar)  not null;  ----更改表字段不可能为空。

create table证明(sid int not null 卡塔尔 -----临盆表的时候加非空约束。

mysql> alter table stu modify column sid int null; -----改为可感到空。

mysql> insert into stu value(null,null,null);

error 1048 (23000): column 'sid' cannot be null     ----错误,我们在sid上加了not null的约束

mysql> insert into stu value();

error 1364 (hy000): field 'sid' doesn't have a default value ---

mysql> alter table stu modify column sid int not null;

error 1265 (01000卡塔尔(قطر‎: data truncated for column 'sid' at row 1   -----你来改过字段限定,本人这些字段有字段值违反了,你就要改正的字段限定。

11.2.1默认值

mysql> alter table stu modify column sid int not null default 1000; ---改进字段的暗许值

11.3唯少年老成约束unique

效果:字段的值无法重新

注意:如若在有个别字段上丰盛了unique这几个节制后,大家就无法插入重复的字段值。

不过,大家能够插入null;而且那一个字段加上了人工的默许值,我们插入null值,便是null值。假若说是让系统给暗许值,它就能够把感到的暗中同意值给他。

假设说,表中尚无主键,二个字段有非空约束和唯意气风发约束=======》虚构主键,会展现pri,但不是主键,用drop也删除不掉,当设置了八个主键后,虚构主键就不再显得pri。

create table表名(字段名称字段数据类型unique);

create table申明(字段名称1字段类型,字段名称2字段类型,

constraint约束名称(unique,pramry key…..)(字段1,字段2卡塔尔(英语:State of Qatar)

);

alter table表名add constraint节制名称unque(字段卡塔尔(قطر‎;

mysql> create table test1 (sid int,name char(10),age int,  contraint test_unique unique(sid,name卡塔尔 卡塔尔(قطر‎;-------多个字段组成的并世无两节制。

alter table test1 drop index test_unique;------删除唯豆蔻梢头的牢笼

静心:大家创制唯豆蔻梢头限制,会活动给我们生产索引

11.4主键限制

职能:字段无法为空并唯生龙活虎

[if !supportLists][endif]注意:最少性

[if !supportLists][endif]尽或然选择单个键作为主键

[if !supportLists][endif]稳定性

[if !supportLists][endif]尽量采纳数值更新少的列作为主键

mysql> create table test1

-> (

-> sid int primary key,

-> name varchar(20),

-> age int

-> );

mysql> alter table test1 add constraint test_key primary key(sid,name卡塔尔(英语:State of Qatar);---表级约束的语法

mysql> create table test1

-> (

-> sid int,

-> name varchar(20),

-> age int,

-> constraint test_key primary key(    );

-> );

mysql> alter table test1 drop primary key;   ------删除主键,其实not null约束没删掉

query ok, 0 rows affected (0.03 sec)

records: 0  duplicates: 0  warnings: 0

11.4.1主键自增进

效果与利益:自动给字段一个字段值。

注意:

[if !supportLists][endif]auto_increment是自增加首要字

[if !supportLists][endif]暗许自增种子为1,增量为1

[if !supportLists][endif]auto_increment自增只好是数字

[if !supportLists][endif]auto_increment最大值受数据类型影响,大器晚成但当先最大值自增则失效

[if !supportLists][endif]auto_increment在剔除全表时会自动重新编号,而删除当中某一条纪录时则不会另行编号

auto_increment主键自拉长必须加到主键字段上。

mysql> alter table test1 modify sid int auto_increment;  -----sid必需是主键

mysql> alter table test1 modify sid int; ----删主键自拉长。

mysql> create table test1(sid int auto_increment primary key,name varchar(10),age int);

query ok, 0 rows affected (0.01 sec)

11.5外键约束

功用:约束两张表的多寡

create table emp(

sid int,

naem varchar(50),

age int,

detpid int

//detpname varchar(30)

)

create table detp(

detpid int,

deptname varchar(30)

)

自个儿的公司独有八个机关

2000市场部

3000技术部

现身二种表的动静:

[if !supportLists]1.[endif]数量冗余高难点0

消除难题:独立出一张表

例如说:工作者表和机关表

2.满意上边的标准后新主题素材现身:在插入职员和工人表数据的时候,工作者表的机构id字段能够不管插入

使用外键约束:约束插入职员和工人表的机构id字段值

解决办法:在职员和工人表的部门id字段增多八个外键约束

注意:

主表应当要给定三个主键id,从表才干援用外键。

(因为大家的从表要参照主表)

有外键有的情状下:

1当大家插入数据的时候,大家是先插入主表数据,在插入从表数据。

2.当我们删除数据的时候,我们是先删从表,再删主表。

3.当大家校勘数据的时候,我们是先校勘从表,然后改善主表。

mysql> create table employee(

->  id int primary key,

->  empname varchar(20),

->  deptid int,

-> constraint emlyee_dept_fk foreign key(deptid) references dept(id) );

query ok, 0 rows affected (0.01 sec)

12.增加和删除改(数据操作语句---dml(data manage language卡塔尔)

12.1插入数据(增)insert

语法:

insert into <表名>(列名)

select <列名>

from <源表名>   ------注意一下,大家的列名要保持生龙活虎致

insert  into  <表名>   values (表的字段个数给全卡塔尔(قطر‎;

insert  into  <表名>  (列名1,列名2…….) values (列值1,列值2……);

mysql> insert into demo1 values (卡塔尔(英语:State of Qatar);   ----括号里的字段必得参照我们的demo1表里的字段.

一定要给全.

mysql> insert into demo1 values(1000,'甘露2',19卡塔尔(قطر‎,(二〇〇三,'付贵',18卡塔尔国;----插入多行数据

mysql> insert into demo2 select * from demo1   ---复制二个表的数目到另叁个表.

query ok, 5 rows affected (0.00 sec)

records: 5  duplicates: 0  warnings: 0

mysql> insert into demo1 (sid,name卡塔尔values(3000,'王金中'卡塔尔(قطر‎;------钦命插入的字段

注意:每一次插入后生可畏行数据,不可能只插入半行大概几列数据

插入的多寡是还是不是可行将遵从整行的完整性的渴求来验证

比如在设计表的时候就内定了某列差异意为空,则必得插入数据

12.2改造数据(update卡塔尔国

语法:

update <表名> set <列名=更新值>

[ where <更新标准> ]

专心:不带条件的改正语句是不引入。

不带条件的意况,它会影响表里面包车型客车钦定列全部值:mysql> update demo1 set name='甘露';

带条件的事态:它会潜移暗化的是满意条件供给的行数:

mysql> update student set name = '帅哥' where chinese = 59;

留意:大家的带条件的创新语句实际不是说只能影响生机勃勃行.比照你的基准进匹配.

12.3操作符

运算表明式:

12.3.1 =等于

12.3.2 <小于

12.3.3<=小于等于

12.3.4 >大于

12.3.5 >=大于等于

12.3.6 <>不等于

between下限值and上线值

瞩目:下限值和上线值是总结的。

mysql> update student set chinese =10 where english>=85 and english<=98;

等价

mysql> update student set chinese =10 where english between 85 and 98;

逻辑表明式:

接连大家的基准表明式的

and全部的标准都要满足的景色下才会去相配。

or满足当中之大器晚成的尺度都能合作。

12.4刨除数据(delete卡塔尔

语法:

delete  from表名

[ where <更新标准> ]

不带条件的情景:

mysql> select * from demo1;

剔除表中全数的多少------大家是不引进的。

delete的言语只好删除的表中的数量。并不能够删除表的牢笼。

truncate  table表名; --------àtable可以简轻便单,不能够带条件。不能够跟from关键字

本文由67677新澳门手机版发布于网络数据库,转载请注明出处:MYSQL数据库安装详解,Mysql学习笔记_1

关键词: