来自《Mysql必知必会》总结与“Mysql官网”总结

Mysql使用:
图形界面
C/S模式使用Mysql:连接Mysql服务器:mysql -h hostname/host_IP   -p port             -u username -p 指定主机             指定端口,默认3306    登录的用户   输入密码退出:exit
————————————————————————————————————————————————————————————————————————————————————数据库
show databases;
show table status from db_name \G
create database test;
use test;
drop database test;
-- create schema education authorization John;
-- drop schema education cascade/restrict;show engines;
show variables like 'have_%';————————————————————————————————————————————————————————————————————————————————————表
show tables;
create table students;
create table students(id not null auto_increment,class_id int,average double not null,primary key(id),check (id between 10 and 20)
);
create table students select * from classes where id =1; 嵌套,复制表
alter table s add address carchar(30);  增加列
alter table s add primaty key(SC);      增加主键
alter table students change column origin_name new_name;
alter table s drop primaty key(SC);
alter table students drop column_name;
drop table students;
exit;————————————————————————————————————————————————————————————————————————————————————索引     非显示类型,查询时自动发挥作用
create unique/clustered index  s on studnets(id);
drop index s;————————————————————————————————————————————————————————————————————————————————————触发器
创建触发器:
create trigger trigger_namebefore/after insert/delete/updateon table_name for each rowinsert into table_t2 values(1,"123");例子:多操作触发器create trigger tri_dafter inserton t_dept for each rowbegininsert into t_diary2 values(NULL,"123");insert into t_diary3 values(NULL,"123");end查看触发器:show triggers;或者查看系统表:use information_schema;select * from triggers;删除触发器:drop trigger trigger_name;注:对一张表操作后,触发器只能对本表update.insert\delete\create只能对其他表,否则会造成循环触发。————————————————————————————————————————————————————————————————————————————————————视图(虚表)
create view s(sn,sd,sa,g)
as select * from students where sd='cs'  创建全计算机系学生视图
with check option;
drop view s;
show tables;
alter view s as select name from students;
select * from s; 视图查询,最终仍转化为对基本表的查询
//来源于多个基本表,不可添加删除数据。
//来源于单个表,添加删除直接影响基本表
insert into s values(...);
delete fron s where name="asd";
update s set price=3.5 where name="asd";————————————————————————————————————————————————————————————————————————————————————查询:1)单表查询:select id,name from student;select * from student where score>=60;//条件语句:四则运算,比较运算>/</=/!=,逻辑运算 and/or/xor/not/betweenselect * from student where id in(1,3,5,7,9);//条件语句:is null , is not null , in , not inselect name from student where name like'_a%';//like模糊查询,'_'表示一个字符,'%'表示任意个字符 , like 和 not likeselect * from students order by id asc/desc;select * from students order by id asc,age desc;//排序,多排序(按照先后顺序,前者排完后者排)select distinct name from student; //筛选出无重复的select * from student limit 5; //选择数量为5select * from student limit 0,5;//从第一条开始选择,选5条,第一个参数从0开始表示第一条统计函数:count() avg() sum() max() min()select max(age) from students;select salary*2 from employee;   //加减乘除四则运算select concat(name,'的年薪为:',salary*12) year_salary from employee;select * from students group by class_id;//按照id分类,每个分组随机选出一条显示,意义不大select group_concat(name) from student group by class;//按分组,把同组名字一块显示select name from student group by class,age;//按照班级分组,同班按照年龄分组select depno,avg(sal) average from employee group by depno having avg(sal)>2000;//group by 配合having条件
2)多表查询union:并,两个字段相同的表合并,再去重select * from t1unionselect * from t2;笛卡尔积:m*n连接:自然连接:筛选出两表间某字段名相同&&字段值相等select * from t1 natural join t2;内连接:内连接基本与自然连接相同,不同之处在于自然连接的是同名属性列的连接,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。select f1,f2,f3 from t1 inner join t2 on t1.id=t1.id;select f1,f2 from test t1 inner join test t2 on t1.id=t2.id2;//自连接不等连接:筛选出笛卡尔积中某两字段值不相等select f1,f2,f3 from t1 inner join t2 on t1.age>=t2.age;外连接:必须要用using或者on左外连接:相同属性名字段值右表等于左表或者右表中为nullt1 left join t2 on...右外连接:相同属性名字段值左表等于右表或者左表中为nullt1 right join t2 on...全外连接:相同属性名字段值两表相等或者左表/右表为nullfull outer join交叉连接:嵌套查询(子查询):any / all / exists / not existsselect * from any (select * from t);————————————————————————————————————————————————————————————————————————————————————运算符:+ - * / %
> >= = != < <=
between .. and ..
is null
in where id in (1,2,3);
likewhere name like "xiao%" ;
regexp正则表达式
and or not xor
& | ~ ^ << >> 位运算————————————————————————————————————————————————————————————————————————————————————常用函数:字符串函数:concat(s1,s2,s3,..,sn) //连接字符串concat_ws('-',s1,s2,...,sn)    //用'-'连接字符串insert(str,x,y,str2)   //str第x位置长为y的子串替换为str2,字符串从1开始lower(str)             //str全变为小写upper(str)             //str全变为大写left(str,x)            //str最左边x个字符right(str,x)           //str最右边x个字符lpad(str,n,str2)       //用str2在str左边扩充,直到长度为nrpad(str,n,str2)       //用str2在str右边扩充,直到长度为nltrim(str)             //去掉左边空格rtrim(str)             //去掉右边空格trim(str)              //去掉首尾空格repeat(str,x)          //str重复x次replace(str,a,b)       //str中字符串a全部替换为字符串bstrcmp(str1,str2)      //比较str1 str2,s1>s2返回1,s1=s2返回0,s1<s2返回-1substring(str,x,y)     //返回str从x开始长度为y的字符串,字符串从1开始length(str)            //返回str长度char_length(str)       //返回str所占字节数,中文一个字占两个字节locate(str1,str)       //返回str1在str中的开始位置数值函数:abs(x)ceil(x)         //向上取整floor(x)        //向下取整mod(x,y)        //返回x%yrand()          //返回0~1内的随机数round(x,y)      //返回x四舍五入后有y个小数truncate(x,y)   //返回x截断为y位小数truncate(903.53567,2)  ---> 903.53truncate(903.53567,-1) ---> 900时间/日期函数curdate()        //返回年月日curtime()        //返回小时分钟秒now()            //返回年月日时分秒week(now())      //返回第几周year(now()) hour(now()) minute(now()) monthname(now()) weekday(now())   //返回0~6 周一到周日adddate(now(),interval 3 year) //3年后的日期year , month , day , hour , minute , secondsubdate(now(),interval '1,2' day_hour) //1天2小时前的日期datediff(now(),'2012-12-01') //相隔天数系统类函数:version()database()user()last_insert_id()————————————————————————————————————————————————————————————————————————————————————数据更新:插入:insert into students (class_id,name) values(2,'mike'),(3,'jack'); //可以指定字段插入插入查询结果:insert 和 select 嵌套
更新:update students set name='mike',score=66 where id=1;update students set score=score+10 where score<60;
删除:delete from students where id=1 or score<60;truncate table; //删除表所有行,成为空表————————————————————————————————————————————————————————————————————————————————————数据控制
grant select/insert/update/delete/alter/create index/create table/all privileges on table s to user;
grant all privileges on s,sc to user2;revoke all privileges/select/... on tale s from user/public;————————————————————————————————————————————————————————————————————————————————————事务数据库:innoDB引擎支持begin;//开始update test set name="a" where id=1;rollback;//回滚,撤销上一条更新commit;//结束隔离级别:set transaction isolation level read uncommitted; //未提交可读,事务A更新还未提交时,事务B即可读set transaction isolation level read committed;//提交读,事务A更新并提交后,事务B可读,但同一事务B中读的前后不一样,即不可重复读。set transaction isolation level repeatable read;//可重复读,默认事务隔离级别//InnoDB含有隐藏值,每行的创建/过期时间、存储时的版本号//每有新事务版本号+1,每个查询根据版本号查询set transaction isolation level serializable;//可串行化,不推荐begin;update students set name='bob' where id=1;rollback;     脏读:其他mysql服务器易产生脏数据set transaction isolation level read committed;begin;update students set name='bob' where id=1;commit;            不可重复读:同一事务中读的两次不同set transaction isolation level repeatable read;幻读:原本为空一个服务器插入了一条,而另一服务器查询不到(状态等同初始时),但可以更新此条。alter table, truncate table, drop table等部分DDL语言会隐式提交事务InnoDB锁机制:共享锁(对行/元组加锁):多个事务可获得排他锁(对行/元组枷锁):仅一个事务可获得,对数据进行操作意向锁(对表):分为意向共享锁、意向排他锁InnoDB锁为间隙锁————————————————————————————————————————————————————————————————————————————————————用户操作mysql -u root -ppassword  //登录root用户create user 'wesley'@'localhost' identified by '123'  //创建名字为welsey,密码为123的用户grant select,insert,delete on database.tablename to 'wesley'@'localhost' identified by '123';grant create,drop on *.* to 'test'@'localhost' identified by '12345';mysqladmin -u root -p old_password "new_password"//修改root密码set password for 'wesley'@'localhost'=password("123456";//root下修改普通用户密码drop user 'wesley'@'localhost';————————————————————————————————————————————————————————————————————————————————————日志文件:二进制日志:二进制形式记录数据库各种操作,不记录查询语句启动设置配置文件mysql.ini,默认每次启动服务器产生一个filename.number日志文件,每次启动number自动增加,产生新日志文件[mysqld]log-binmysqlbinlog filename.number //查看二进制日志文件set sql_log_bin=0    //暂停日志功能set sql_log_bin=1    //重启日志功能reset master;    //删除所有日志文件purge master logs to filename.number;    //删除编号小于number的日志文件purge master logs before 'yyyy-mm-dd hh:MM:ss'    //删除指定时间之前的日志文件错误日志:记录错误my.ini配置文件,默认保存到数据文件中,localhost.error文件[musqld]error-bin删除日志mysqladmin -u root -p flush-logs通用查询日志:记录mysql服务器启动关闭、客户端连接、更新、查询记录慢查询日志:记录执行时间超过指定时间的操作启动:自动生成filename-slow.log[mysqld]log-slow-querieslong_query_time=n分析:mysqldumpslow.pl -s at -t 5//mysqldumpslow.pl分析慢查询日志,-s排序参数,at平均查询时间,-t 符合条件的行数删除日志mysqladmin -u root -p flush-logs————————————————————————————————————————————————————————————————————————————————————数据备份:mysqldump -u username -p dbname table1 table2 > D:/backup.sql//把username用户的dbname数据库的表1表2备份到backup.sql ,无表参数就备份整个数据库mysqldump -u username -p --databases db1 db2 >backup.sql//备份多个数据库数据还原:mysqldump -u username -p dbname < backup.sql//还原指定数据库,若不指定dbname则还原所有数据库导出到文本文件:select * from table into outfile 'D:/file_name.txt'; //不指定格式select * from table into outfile 'D:/file_name.txt'    fields terminated by '\、'optionally enclosed by '\"';lines starting by '\>'terminated by '\n';//指定格式导出到文本,字段用、分开,每行用\n分开,每行开头> , 每个值用""括起来文本导入:load data infile 'D:/file_name.txt'fields terminated by '\、'optionally enclosed by '\"';lines starting by '\>'terminated by '\n';————————————————————————————————————————————————————————————————————————————————————同其他语言结合
JDBC

MySQL必知必会——语句总结相关推荐

  1. 《MySQL必知必会》所有SQL语句图表集合(可作为查询表使用)---已完结

    本篇文章是对<MySQL必知必会>所有语句知识点的图表集合,适合快速查询遗忘的SQL语句. 本文的脉络结构,首先先给出<MySQL必知必会>的目录和本书中用到的数据表的UML图 ...

  2. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)

    站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...

  3. 《MySQL必知必会》学习笔记十(增删改语句使用)------掌握部分

    MySQL必知必会知识预览 第一章--了解SQL 第二章--MySQL简介 第三章--使用MySQL 第四章--检索数据 第五章--排序检索数据 第六章--过滤数据 第七章--数据过滤 第八章--用通 ...

  4. mysql必知必会学习笔记(一)

    MYSQL必知必会第三章--了解数据库和表 书中部分代码展示: CREATE DATABASE crashcourse; /*创建名为 crashcourse 的新数据库*/SHOW DATABASE ...

  5. mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 使用Select语句返回的数据,可能会发现显 ...

  6. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  7. mysql必_MySQL必知必会(一)

    摘自<MySQL必知必会> 1.1.1 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 人们通常用数据库这个术语来代表他们使用的数据库软件.这是不正确的,它是引起 ...

  8. mysql中用完即删用什么_MySQL使用和操作总结(《MySQL必知必会》读书笔记)

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机--服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

  9. 【总结记录】《MySQL必知必会》读后笔记,结合 leetcode 例题理解

    文章目录 一. <MySQL知会>读后笔记 1. 零散的前文知识 2. 连接数据库 3. 检索数据(重点开始了) 4. 排序.过滤数据 5. 通配符.正则表达式 6. 汇总数据 7. 分组 ...

  10. mysql必知必会_MySQL必知必会

    MySQL必知必会 联结的使用, 子查询, 正则表达式和基于全文本的搜索, 存储过程, 游标, 触发器, 表约束. 了解SQL 数据库基础 电子邮件地址薄里查找名字时, 因特网搜索站点上进行搜索, 验 ...

最新文章

  1. 熬了一个通宵,终于把7千万个Key删完了
  2. 设置/修改centos上的swap交换分区的方法
  3. JavaScript--关于实例对象带不带参数和构造函数带不带参数的关系
  4. 5.1 Tensorflow:图与模型的加载与存储
  5. cad2016中选择全图字体怎么操作_LOL无限火力凯隐全图W技能BUG怎么卡 无限火力凯隐全图W技能BUG卡法介绍...
  6. redis 2m数据读取_Flink读写Redis(二)读取redis数据
  7. python的tkinter编写计算器_tkinter写的计算器
  8. angular做语言切换_angular多语言配置详解
  9. C#使用oracle数据库的function与procedure
  10. Spark 部署及示例代码讲解
  11. #python练习实例0:制作1-100随机抽取3个数字排队列
  12. 小程序点击获取循环列表中的内容
  13. 1600802047 android 第三次作业(音乐播放器)
  14. POJ1201 Intervals 【差分约束】
  15. 蜗牛—Android基础之button监听器
  16. 《智能家居产品 从设计到运营》——2.2 智能设备的触角:传感器
  17. 流程图介绍 以及工具推荐
  18. 性能优化-图片压缩格式的选择(ETC和ASTC)
  19. dub选项中文帮助.
  20. MBT测试实例:做个“机器人”,使其随机、持续的对“web页面”做交互性测试(前奏)MBT整体思考

热门文章

  1. oracle按序号排序,Oracle排序以及序号的显示
  2. 常用设计模式 - 建造者模式
  3. 最新触摸精灵开发教程(价值300
  4. ROS实践1:publisher详解
  5. Paper reading (三十一):Personalized Nutrition by Prediction of Glycemic Responses(overview)
  6. 过年回家,还怕抢不到票?程序员教你如何抢票
  7. 《男孩别哭》海龟先生
  8. Windows XP控制台图解
  9. 【星门跳跃】解题报告
  10. 职高的计算机平面设计一般学什么,职高形象设计学什么