2018-4-25mysql数据库基础

新建 模板 小书匠 

1. 数据库分类

RDBMS:关系数据库管理系统
非结构化和半结构化的数据:NoSQL(Not only SQL)

2. mysql简介

1.MYSQL数据库由服务器端和客户端(C/S)组成。服务器中主要存储数据文件和服务程序。

2.要访问数据库服务器,必须通过客户端。
SQL:结构化的查询语言,以mysql数据库作为载体。

3.客户端可以分为两大类:命令行(自带),可视化工具。
Mysql的核心是存储引擎,常用的有InnoDB(事务性数据库的首选引擎,支持事务安全表(ACID)),MyISAM(数据仓库,检索速度快)

4.通过命令行客户端访问数据库服务器:
1) 配置环境变量path
path = %path%;+路径
2) 打开命令行窗口
开始—输入”cmd”—回车
3) 启动mysql客户端程序(mysql.exe),指定帐号和密码,连接服务器
mysql -u root –p —回车—输入密码1234—回车
mysql -h +服务器地址— -u root –p
4) 查看当前有哪些数据库:
mysql> show databases;
5) 使用某个数据库之前,要先选择它:
mysql> use world;
6) 看看当前这个数据库中,有哪些数据表:
mysql> show tables;
7) 退出服务器:mysql>exit

3.常用命令

创建数据库:mysql>create database+数据库名;
删除指定的数据库:mysql>drop database+数据库名;
打开要操作的数据库:mysql>use+数据库名;
查看有哪些数据表:mysql>show tables;
创建数据表(部门表:depid,depname): mysql>creat table department(depid int,depname varchar(100));
查看数据表的结构:mysql>desc department;
主键约束:行完整性—要求每行记录不能重复,
主键能够唯一的标识表中的一条记录。
创建数据表,首先设计表的结构(有哪些字段/列):
员工信息表

create table employee(
empid int primary key auto_increment,#auto_increment只有在MYSQL中有,其他数据库中是没有的
empname varchar(50) not null,#空间长度可变,你需要多少就给你多少
gender char(1) default ‘m’,
salary float(9,2),
dept varchar(20),
depid int,
constraint fk_depid foreign key(depid) references department(depid)
);

部门信息表

create table department(
depid int primary key,
depname varchar(50) not null,
location varchar(100)
);

一次性导入多条记录,只需要在values后面跟多个括号,括号之间用逗号连接,最后一个跟分号。括号内依次输入字段对应的值。

修改表结构:

alter table

将数据表的名称department改为depart:

alter table department rename depart;

为department增加一个新的字段location varchar(200):

alter table department add location varchar(200);

修改已有字段的数据类型:

alter table department modify location varchar(100);

修改已有字段的名称和数据类型:

alter table department change location address varchar(100);

在数据库中已经存在的数据表的结构上增加表字段:

alter table +表名 add +字段及字段的各种属性

在数据库中已经存在的数据表的结构上删除表字段:

alter table +表名 drop +字段

删除表的外键约束:

alter table+表名 drop foreign key +外键字段

删除/添加表的主键约束:

alter table+表名 drop(add) primary key(字段名)

删除数据表

就是将数据库中已经存在的表从数据中删除,在删除表的同时,表的定义和表中所有的数据均会被删除,删除被其他表关联的主表,分几种情况:

先删除与它关联的子表,再删除父表

如果要保留子表, 则只需将关联的表的外键约束条件取消,然后就可以删除父表

为id=2002的员工分配部门:

update employee set deptid=103 where empid=2002;

将员工2006调动到市场营销部,并且月薪上涨10%:

update employee set deptid=103 ,salary=salary*1.1 where empid=2006;

将所有月薪低于10000的员工薪资上涨10%:

update employee set salary=salary*1.1 where salary<10000;

删除记录:

delete from department where deptid=101;

查看数据表中已有的数据:

select * from+表的名称;

查看基本表结构:

desc+表名

删除表内的所有的数据:

delete/truncate table +表名;

delete与truncate删除数据的区别:

delete进行删除时是逐列进行检查,具有约束的列不能被直接删除,具有数据的安全性及引用的完整性;

truncate是直接删除整张表然后再进行表的重建;

单表查询

查看表内满足条件的信息:select * from+表名 where+条件(*表示所有的字段),若只查询某些字段的满足条件的信息,则用:select +字段名 from + 表名 where +条件(字段名之间用逗号连接)

带in关键字的查询:select * from +表名 where + 字段名 in ( , );(括号内为范围,若要查询不再范围内的信息,则用not in,用于离散型数据或者字段)

带between 关键字的查询:select * from +表名 where + 字段名 between+最小值 and +最大值;(用于连续型数据,不包含范围的边界值)

带like的字符匹配查询(模糊查询)(%匹配任意长度的字符,_表示精确的单个字符):select * from +表名 where + 字段名like+’%条件%’;(%标识有字段)
select * from +表名 where + 字段名like+’_条件’;(一个_标识一个字符)

在排查过程中,任何值与null进行运算,运算结果都是null.要对其进行比较时,要用is null或者is not null.

多条件查询and: select * from +表名 where +条件 and 条件(!=表示不等于,and表示和,必须满足所有条件);and的优先级要高于or.

or(表示或者,只要满足一个条件即可):select * from +表名 where +条件 or 条件

distinct 去重:select distinct+字段名 from + 表名 where +条件(挑出满足条件的值,无重复)

order by排序:select * from +表名 where +表名 order by+条件(默认是升序,要降序的话则在最后加上desc)
分组查询
分组统计(group by对数据进行分组,通常和集合函数一起使用)
select count(*) from +表名 group by +字段名(count(*)是对整行进行统计总数)
select+字段名,count(*) from +表名 group by +字段名(分组统计,前后两个字段名相同)

分组查询

(group_countat()函数将每个分组中各个字段的值显示出来)
select+字段名,count(*) as +种类 group_countat(字段名) as+名称from +表名 group by +字段名
分组查询、排序
select+字段名,count(*) as +种类 group_countat(字段名) as+名称from +表名 group by +字段名+order by numbers.
筛选having与group by一起使用,分组查询以后对数据进行筛选,having后加条件。
在查询最后添加一个统计栏:with rollup

限制查询:limit(只有MYSQL数据库支持limit关键字),显示前几条记录:limit+数字;
从第m条记录开始,显示n条记录:limit (m-1),n;

case when语句:用于计算条件列表并返回多个可能结果的表达式之一。
聚合函数
avg()求平均,max()最大值,min()最小值,sum()求和count()计数
sum()在计算时遇到null会自动忽略。
加快查询速度
使用索引,索引是加快查询的重要工具
创建索引的方法:create index 索引名 on 表名(列名)
删除指定索引的命令:drop index 索引名 on 表名(列名)

不适合使用索引的场合:
--索引是加快查询的最重要的工具
--模糊查询要求后方一致或者部分一致的场合
--对方使用了运算/函数的场合
--复合索引的第一列没被包含在where条件语句中的场合。

多表连接查询
内链接查询(inner join):进行表间某些列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的纪录。(select 字段名 from 表一,表二 where 条件——将表一和表二满足条件的列连接起来,并显示某些字段)

内链接查询-自连接:如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询,自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表

外连接查询:有时需要包含没有关联到的行数据,即返回的查询结果集合中不仅包含符合连接条件的行,而且还包括左表、右表、或两个连接表中的所有数据行。left join:左连接返回包括左表中的所有记录和右表中连接字段相等的记录。right join:右连接,返回包括左表中的所有记录和右表中连接字段相等的记录
注:使用左外连接:左侧的连接表中所有的记录都会显示
也可使用右外连接:右侧的连接表中所有的记录都会显示
复合条件连接查询:复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限
制查询的结果,使查询的结果更加准确

子查询:子查询指一个查询语句嵌套在另一个查询语句内部的查询

带any/some关键字的子查询,这两个关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。any关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE。

带all关键字的子查询:带all关键字与any和some不同,使用all时需要同时满足所有的内层查询的条件。all关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE。

带exists关键字的子查询:exists关键字后面的参数是任意的子查询,系统对子查询进行运算以判断他是否返回行,如果至少返回一行,那么exists返回的结果是false,此时外层语句将不进行查询。

带in关键字的子查询:in关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。Select语句中可以使用not in关键字,其作用与in正好相反。

带比较运算符的子查询:子查询时可以使用其他的比较运算符,如“<”、“<=”、“=”、“>=”、“!=”等。

合并查询结果:利用union关键字,可以给出多条select语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同,各个select语句之间使用union或union all关键字分隔。Union不使用关键字all,执行的时候删除重复记录,所有返回的行都是唯一的;使用关键字all的作用是不删除重复行也不对结果进行自动排序。基本语法格式如下:select column… from table1 union[all] select column…from table2

使用union all包含重复的行,在前面的例子中,分开查询时,两个返回结果中有相同的记录,union从查询结果集中自动去除了重复的行,如果要返回所有匹配的行,而不进行删除,可以使用union all。

为表/字段取别名:当表/字段的名字很长或执行一些特殊查询是,为了方便操作或者多次使用相同的表/字段时,可以为表/字段指定别名,用这个别名替代原来的表/字段名称,为表/字段取别名的语法格式为:表名/字段名 【as】 表/字段别名。

转载于:https://www.cnblogs.com/shgwater/p/8953519.html

2018-4-25mysql数据库基础相关推荐

  1. python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍

    Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏.Python编程语言的流行直线上升,如何学习好Py ...

  2. 2018阿里云云数据库RDS核心能力演进

    云计算已经进入普及期,不少企业开始从自建数据中心转向云计算.在云计算资源的使用上,从最开始只是使用IaaS层基础资源,转向使用包括云数据库在内的各类PaaS资源.数据库是企业IT架构的核心部分,RDS ...

  3. 2018计算机应用基础考试6,2018结构工程师《计算机应用基础》试题(6)

    大家做好准备迎接2018考试了吗?出国留学网为您整理了"2018结构工程师<计算机应用基础>试题(6)",跟着出国留学网来了解一下吧.要相信只要自己有足够的实力,无论考 ...

  4. python epoll 写数据到数据库_Python--day40(EPOLL的使用、数据库基础)

    1. EPOLL的使用 1.1 select存在的问题 1.select,需要遍历socket列表,频繁的对等待队列进行添加移除操作, 2.数据到达后还需要给遍历所有socket才能获知哪些socke ...

  5. DTCC 2018:见证数据库技术发展青春与您同行

    点击蓝色字关注 "ITPUB" 一起玩耍哦~ 作者 | 唐川 编辑 | 闫志坤 文章导读: 九年间,见证数据库技术的发展青春 历史回顾:闭源巨头称霸江湖 开源分布式技术:新型数据库 ...

  6. Oracle 11g 数据库基础教程

    Oracle 11g 数据库基础教程 课堂笔记 系统服务 操作系统通过服务来管理安装好的Oracle 11g数据库产品的运行 在运行Oracle数据库前,要检查数据库服务有没有启动好 开始»控制面板» ...

  7. 数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复“数据库2018”下载典藏版PDF报告)

    数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复"数据库2018"下载典藏版PDF报告) 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读: ...

  8. python零基础自学书籍-2018完整Python零基础到项目精通的学习书籍

    Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏.Python编程语言的流行直线上升,如何学习好Py ...

  9. mysql tdb数据库_MYSQL数据库基础

    数据库基础 DBMS(数据库管理系统) DBMS 是"数据库管理系统"的简称(全称 DataBase Management System).实际上它可以对多个数据库进行管理,所以你 ...

  10. 2018年计算机零基础生物工程专业跨考重庆大学计算机考研经验贴

    2018年计算机零基础生物工程专业跨考重庆大学计算机考研经验贴 **在2018年3月底考研复试完之后,我写了一篇重大计算机考研的初试复试经验贴,为了方便学弟学妹们能够搜索到考研的相关信息,为了方便同学 ...

最新文章

  1. python pip配置镜像源:douban不能下载aliyun可以下载
  2. 【git】强制覆盖本地代码(与git远程仓库保持一致)
  3. Kali环境下安装python3
  4. 现代软件工程 第六章 【敏捷流程】练习与讨论
  5. 【Unity Shader】(六) ------ 复杂的光照(上)
  6. 网络管理员&MCSE2003之2:使用虚拟机Vmware建立多电脑网络环境
  7. 再次提升“华容道自动求解”程序效率
  8. EJB+JSF开发示例(附源码)
  9. c语言因子优化算法,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  10. [转][整理]Linux下找不到共享库(shared object)
  11. 【BZOJ1057】[ZJOI2007] 棋盘制作(单调栈的运用)
  12. 《斯坦福算法博弈论二十讲》学习笔记(持续更新)
  13. 通俗易懂的LDA模型
  14. 百度翻译vs谷歌翻译
  15. JavaScript九九乘法口诀表
  16. Locality Sensitive Hashing ( LSH,局部敏感哈希 ) 详解
  17. AT4896 [ABC161C] Replacing Integer
  18. 2010.12.29(2)——— android GridView
  19. 第三方账号登录功能接入完全流程
  20. 最新版养猫小程序前端+后端搭建详细教程

热门文章

  1. c# 开发ActiveX控件
  2. 超小股票行情查看软件
  3. android手机通讯录格式转换,手机通讯录csv格式转vcf格式工具 安卓电话本数据格式转换程序...
  4. 分享Monaco.ttf字体(Mac样式)
  5. vcredist_x86.exe 静默安装方法
  6. cityengine修改规则贴图
  7. Python 输出到文件两种方式
  8. 从零开始之驱动发开、linux驱动(二十六、三星平台framebuffer)
  9. 你安全吗网剧技术探讨-个人向
  10. 北京市常用电话号码表