启动mysql
net start mysql
停止mysql
net stop mysql
SQL分类:
数据查询语言 DQL Data Query Language
代表关键字:select
数据操纵语言 DML Data Manipulation Language
代表关键字:insert delete update
数据定义语言 DDL Data Definition Language
代表关键字:create drop alter
事务控制语言 TCL Transactional Control Language
代表关键字:commit rollback
数据控制语言 DCL Data Control Language
代表关键字:grant revoke
连接mysql
mysql -u用户名 -p密码
比如:mysql -uroot -p root
用户名和密码均为root
查看数据库版本
mysql --version
或者
mysql -V
如果已经进入了mysql
也可以用select version();
查看表的结构
desc 表名
创建数据库
create database 数据库名
删除数据库
drop database 数据库名
使用某个数据库
use 数据库名
终止一条语句
\c
退出mysql
exit 或者 \q 或者 quit
查询表的创建语句
show create table 表名
重命名表字段 使用as 也可以空格
条件查询
排序
order by 子句
order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔。
默认是升序
如果存在where子句,那么order by必须放到where语句的后面。
asc 升序
desc 降序
数据处理函数,又被称为单行处理函数,
特点:输入一行输出一行。
分组函数/聚合函数/多行处理函数
count 取得记录数
sum 求和
avg 取平均
max 取最大的数
min 取最小的数
分组查询
group by
having
如果想对分组数据再进行过滤需要使用having子句。
如果使用order by ,order by 必须放到group by 后面。之前的如果存在where子句,order by必须跟在where后面。
分组函数的执行顺序:
根据条件查询数据
分组
采用having过滤,取得正确的数据。
总结一下:
where和having都可以过滤数据,但是有一个原则:能在where中过滤的数据,尽量在where中过滤,效率较高。having的过滤是专门对分组之后的数据进行过滤的。
连接查询:
也叫做跨表查询,需要关联多个表进行查询。
内连接:只查询相等的数据,(连接条件相等的数据)
自连接:只有一张表连接,查询方法:把一张表看作两张表。
外连接:信息显示很全。
sql92和sql99语法的区别:99语法可以做到表的连接和查询条件分析,特别是多个表连接的时候,会比sql2更清晰。
总结:
连接分类:
内连接:
表一 inner join 表2 on 关联条件。
做连接查询的时候一定要写上关联条件
inner可以省略。
外连接:
左外连接:
表1 left outer join 表2 on 关联条件。
做连接查询的时候一定要写上关联条件
outer 可以省略。
右外连接:
表1 right outer join 表2 on 关联条件
做连接查询的时候一定要写上关联条件。
outer可以省略
左连接以左面的表为准和右边的表比较,和左表相等的不相等都会显示出来,右表符合条件的显示,不符合条件的不显示。
右连接反之即可。
distinct 去除重复行。
子查询:
子查询就是嵌套的select语句,可以理解为子查询是一张表。
在where语句中使用子查询,也就是在where语句中加入select语句。
在from语句中使用子查询,可以将该子查询看作一张表
在select语句中使用子查询。
union:可以合并集合(相加)
limit:主要用于提取前几条或者中间某几行数据。
limit在order by 之后执行!
select * from table limit m, n
其中m是指记录开始的index,从0开始,表示第一条记录。
n是指取n条。
整体的意思:从第m+1条开始,取n条。
select * from table name limit 2, 4
即取出第3条至第6条,4条记录。
应用:分页。
每页显示pageSize条记录,第pageNo页。
limit (pageNo - 1) * pageSize, pageSize