mysql指令按顺序排列_《深入浅出MySQL》读书笔记(一)sql基础,常用的操作语句。...
之前对于数据库一直都是用过的程序,没有系统学过,在面试时吃过不少亏,说不出个所以然,我还是好好康康比较靠谱,秋招都快过了,我好慌啊淦。
第一章.MySQL的安装与配置。
启动服务:打开到mysql对应目录下的bin文件夹,执行命令mysqld --console
关闭服务:mysqladmin --uroot shutdown
第二章.SQL基础
2.1.SQL简介
SQL(Structure Query Language(结构化查询语言)),它是使用关系模型的数据库应用语言。
关系型数据库:关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
2.2.SQL使用入门
2.2.1 SQL分类
启动服务后,连接服务器命令:mysql -u用户名 -p然后输入密码,进入到如下界面:
(退出是exit)
DDL:数据定义语言,定义了不同的字段、数据库、表、列、索引等数据库对象。创建、删除、修改等操作的语言,且对象为表的定义和结构等,DLL语句更多由数据库管理员使用。
1.新建一个数据库:create database DBname。
注意:1.每一句后面需要跟一个; 2.重名数据库无法创建
2.显示所有的数据库:show database
既然无法重名嘛,那就先看看有哪些数据库咯
test_1数据库以上的都是MySQL默认的数据库。
·information——schema:mysql自带的一个信息数据库,其保存着关于mysql服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等
也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中。
·mysql:存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
·performance_schema:主要用于收集数据库服务器性能参数。
·sys:sys库是一个简单版的performance_schema,mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息,这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助。
·test:空的数据库,用于测试用。
3.使用数据库 use DBname
4.删除数据库 drop DBname(注意:别把默认的数据库删了(test除外)...)
注:若库中含有表单,则会将其一并删除。若有重要数据记得备份。
下面是对表的操作。
4.创建表 Create table tablename(
column_name_1 column_type_1 constraints,
...
column_name_n column_type_2 constraints)
由于MySQL的表名是以目录的形式存在于磁盘,固命名可以用任何目录允许的名字。
column_name 列名,column_type列的数据类型,constraints约束。
这样一个学生表就创建好了,我们来查看一下(DESC TABLEname)。
但是这样输出的信息不够全面,若想得到更全面的信息还可以用show create table tablename \G
报后面那个error是因为\G后面不需要;
这样就还能看到存储引擎(engine)和字符集(charset)等信息。
\G的作用是使得记录能够竖向排列。
4.删除表 DROP Table tablename
5.修改表
(1)修改表类型 alter table tablename modify [column] column_definition [first|after col_name]
例如:原表
修改后
(2)增加表字段 alter table tablename ADD [COLUMN] column_definition [First|after col_name]
(3)删除表字段:alter table tablename drop [column] col_name
(4).字段改名:alter table tablename change [column] old_clo_name column_definition [Frist|After col_name]
change与moditfy一样可以修改类型,不过多一个修改列名的功能。
(5)修改顺序
用可选项[first|after_column_name]即可(add/change/modify)。
注:change/frist|after column这些关键字属于MySQL在标准SQL上的扩展,在其他数据库不一定适用。
(6)更改表名 alter table tablename rename [to] new_tablename
DML语句:数据操纵语句,用于添加(insert)、删除(delete)、更新(update)和查询(select)数据库表记录,并检查数据完整性。
1.插入记录 insert into tablename (field1,field2,field3...fieldn) values(value1,...,valuen);
能看出这些错在哪嘛???emmm第一个括号写成全角的了....淦
这种形式必须顺序与字段顺序一致
对于可空字段、非空但含有默认值、自增字段可以不用在insert里后面出现。
2.更新数据 UPDATE tablename set field1=value1,field2=value2...fieldn=valuen[where condition]
不加where语句限定就全改了
此外update命令还可以同时更新多个表中的数据
update t1,t2...tn set t1.filed1=expr1...tn.fieldn=exprn [where condition]原表
更新后,由此可见,mysql对数据的修改都是基于原数据进行的(火锅的价格)。
3.删除记录delete from tablename [where contition]
如果不使用where关键字便会将整个表中的数据清空。
如果需要删除多个表的数据,语法如下:
DELETE t1,t2,t3... from t1,t2,...tn [where contition];
(如果from后面的表名用别名,则delete后面也要用相应的别名。)
原表
删除后
删除操作一定要小心!!!删库跑路!
4.查询记录
(1)select * from tablename [where condition]查询全表记录。
这个语句在之前显示数据时已经出现过
*通配符的作用是选定所有记录,也可用逗号分隔的所有字段代替。显示顺序与输入的字段顺序一致
如果想显示不重复的记录可以使用distinct关键字。
(2)条件查询 where
除了=还有、>=、<=、!=等比较运算符,多个条件之间可以使用or、and等逻辑运算符进行链接。
(3)排序和限制。select * from tablename [where condition][order by field1[desc|asc],field2[desc|asc],...,feildn [desc|asc]];
order by关键字用途是实现排序,desc是进行降序排列,asc则为升序。默认升序排列
如果排序的属性里有重复的怎么排呢?可以按照另外的顺序排列
这里就先按id降序排列,再按name升序排列。
如果对于排序后的记录只想显示一部分。则可以使用limit关键字:
select...[limit offset_start,row_count];
offset_start:起始偏移量,row_count:显示行数。1.显示三条记录 2.显示起始位置偏移到1位后的三条记录 3.如果要求显示的记录数大于总记录行数,则显示偏移后的所有记录。
limit和order to经常配合着使用来进行分页显示。
注意:limit是mysql拓展sql92后的语法,其他数据库并不能通用。
(4).聚合:汇总操作,select [field1,field2,...,fieldn]fun_name from tablename [where where_contition][group by filed1,filed2,...,fieldn[with rollup]][having where_contition];
fun_name:聚合函数,表示要进行的聚合操作,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。
group by:表示要进行分类聚合的字段。
with rollup:是可选语法,表示是否对分类聚合后的结果进行再汇总。
having:对分类后的结果进行条件的过滤。与where的区别是,where是聚合前就对记录进行过滤。统计学生的人数
统计各id数的数量
分别统计各id的数量后再汇总
统计id人数大于的学号以及总人数
统计出id和、最大id、最小id、id中位数
(5)表连接
当需要同时显示多个表中的字段时,可以用表连接来实现这样的功能。分为内连接和外连接。
内连接:仅选出两张表中相互匹配的记录。
外连接:选出其他不匹配的记录。(内连接)第一个错误:无法定位同名的字段的所属表,解决方法在前面显式的写出表名。第二个错误:表写了别名,后面的都需要用别名替代。
外连接非为:
左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。左连接
(6)子查询 关键字:in 、not in、=、!=、exists、not exists
子查询。在这种情况下也可使用表连接。
如果子查询记录唯一也可以使用=
有时表连接也可代替子查询
子查询与表连接的转换主要应用于两方面:MySQL4.1以前版本不支持子查询。
表连接在很多情况下用于优化子查询。
(7)记录查询 union和union all
union all:将两个结果集合并在一起;union all
union:将union all结果进行一次distinct(去重),去除重复记录后的结果。
DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。用于控制不同数据段直接的许可和访问级别的语句。
不晓得为啥我这边运行不了这些语句...
mysql指令按顺序排列_《深入浅出MySQL》读书笔记(一)sql基础,常用的操作语句。...相关推荐
- [读书笔记]《SQL基础教程》
<sql基础教程>这本书里面讲的内容大部分都是几个主流数据库(mysql.sql server.oracle)之间的共同点,知识点比较基础,适合sql入门学习.但对于已经系统学过数据的人来 ...
- 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...
create schema deepInMySql; use deepInMySql; -- 查看当前默认存储引擎 show variables like '%table_type%'; -- 查看当 ...
- mysql 查询执行过程_深入浅出Mysql(一)——sql查询执行过程
一.sql查询执行过程概括 下面给出的mysql基本架构示意图,从中你可以清楚的mysql的各个模块和执行过程. 大体来说可以分为两部分Server层和储存引擎层.Server层包括连接器.查询缓存. ...
- 有关mysql的开发介绍_深入浅出MySQL之开发篇(二)
继续深入了解MySQL的高级特性. 1.存储过程和函数 什么是存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少 ...
- 深入浅出数据分析读书笔记
深入浅出数据分析读书笔记 一.数据分析引言 1.数据分析的基本流程:确定--分解--评估--决策.一个完整的分析项目可能经过多轮流程 确定:客户的论点和数据 分解:将手头的资料汇总为有用的格式 评估: ...
- Node.js: 深入浅出Nodejs读书笔记
今天终于把朴灵老师写的<深入浅出Node.js>给学习 完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内 ...
- 【《Redis深度历险》读书笔记(1)】基础:万丈高楼平地起 ——Redis 5种基础数据结构
[时间]2021.11.16 [题目][<Redis深度历险>读书笔记(1)]基础:万丈高楼平地起 --Redis 基础数据结构 本栏目是<Redis深度历险:核心原理和应用实践&g ...
- mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...
@(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...
- mysql指令按顺序排列_mysql基本语法大全
1.备份数据库: 1.1备份数据库中的表: mysqldump -u root -p test a b >d:\bank_a.sql //分别备份数据库test下a和b表 1.2备份一个数据库 ...
最新文章
- eosjs-ecc中文文档
- 基于Atmega8单片机的串口收发程序
- Open-E DSS V7 应用系列之六 构建软件iSCSI
- linux查找技巧: find grep xargs amp;amp; linux系统信息查看大全
- Vs 2015 调试ASP.NET Core修改监听端口
- go to ifm as frequently as possible
- viewpager默认界面_使用默认方法的界面演变–第一部分:方法
- Flash Builder 创建CSS
- iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...
- java enumset_Java EnumSet工作原理初窥
- 排序算法java快速排序_快速排序算法--Java实现
- 精品 德国 软件推荐 著名的光盘烧录软件 Nero
- 程序执行系统VC++程序出现“试图执行系统不支持的操作”
- java培训韩顺平_java韩顺平视频教程
- 库仑计DS2781通信失败
- php 表格自动适应页面,h5纯css实现表格的自适应布局
- 盘点:12个超炫数据可视化工具
- PR:设置关键帧、调出效果搜索栏找到裁剪效果
- 进程间通信的方式有哪些?
- 史话上:量子物理学的前世今生