MySQL查询语句

一、SQL语言

1.DDL:数据定义语言,用来建立数据库、数据库对象和定义其列,如create、alter、drop
2.DML:数据操纵语言,用来插入、查询、删除和修改数据库中的数据,如select、insert、update、delete
3.DCL:数据控制语言,权限控制,用来控制数据库组件的存取许可、存取权限等,如commit、rollback、grant、remove
4.DQL:数据查询语言,只有select一条(Windows的T-SQL语言)

二、权限控制

1.授予权限
grant 权限 on 数据库名.表名 to 用户名@来源地址 identified by '密码'
例:great select on user.list to 'userl'@localhost identified by '123456';
如果没有该用户会自动创建,当用户存在是,后面设置的新密码可以覆盖旧密码
2.查看权限
show grants for '用户名'@'主机地址';
3.撤销权限
revoke 权限 on '数据库名'.'表名' from '用户' @ '主机地址';
如果要撤销所有权限,将权限项写all
4.权限列表
权限说明
all设置grant option之外的所有权限
alter允许使用alter table
create允许使用create table
delete允许使用delete
index允许使用index
insert允许使用insert
select允许使用select
update允许使用update
drop允许使用drop table
replication slave允许从服务器中读取二进制日志文件
show databases允许显示所有数据库

三、使用SQL查询数据

1.SELECT语法结构
SELECT select_list [INTO new_table_name] FROM table_name [ WHERE search_conditions ] [GROUP BY group_by_expression] [HAVING search_conditions] [ORDER BY order_expression [ASC|DESC] ]

参数解释

SELECT子句:指定查询内容
INTO子句:把查询结果存放到一个新表中(MySQL中不支持,create table A select * from student;)
FROM子句:指定查询源
WHERE子句:查询条件
GROUP BY子句:指定查询结果的分组条件,表示要进行分类聚合的字段。比如要按照部门分类统计员工数量,部门就应该写在group by 后面
HAVING子句:指定分组搜索条件,与GROUP BY子句一起使用
ORDER BY子句:指定查询结果的排序方式
2.查询所有列
select * from tablename;
3.查询特定的列
select 列名 from tablename;
4.查询特定的行
selcet 列明 from 表名 where 表达式
例: select * from tablename where 成绩>90
	select * from tablename  where 姓名 like ‘张%’
	select 姓名,成绩 from student where 性别='男' and 成绩>80;
5.查询多少行
SELECT 列名 FROM 库名.表名 LIMIT 10; #查询前十行
SELECT * FROM student.grades LIMIT 10;
6.改变查询结构集的列名称
select 列名 as newname from 表名 where 表达式
例:select 姓名 as name,成绩 from 表名 where  姓名='zhangsan'
7.排序查询
select 列名 from 表名 order by 列名 ASC|DESC #升序|降序
select * from  student  order by  成绩 ASC|DESC
8.聚合函数
select 函数(列名)  from 表名
select 函数(列名) as 新列名 from 表名 
#将查询的结果定义一个新列名
1)求和查询 SUM
2)平均值 AVG
3)最大值 MAX
4)最小值 MIN
9.分组查询
select 列名 定义一个新列名 from 表名 group by 列名;
例:select 姓名,SUM(成绩)  总成绩 from student group by 姓名;
10.查询结构另存表
select 列名 into 定义一个新表 from 表名;
例:select * into newtalbe from student;
11.多表查询

1)内连接:只返回两个数据集合之间匹配关系的行

select 表.列 as newname,表.列 as newname from 表名,表名 where A表名.列名=B表名.列名;
例:select A.姓名 as A_name, B.学校 as B_school from A,B where A.姓名=B.姓名;

select A表.列 as newname,B表.列 as newname from A表名 inner join B表名 on A表名.列名=B表名.列名
例:select A.姓名 as A_name, B.学校 as B_school from A inner join B on A.姓名=B.姓名;

2)左外连接

select 表.列 as newname,表.列 as newname from A表名 left join B表名 on A表名.列名=B表名.列名
例:select A.姓名 as A_name, B.学校 as B_school from A left join B on A.姓名=B.姓名;

3)右外连接

select A.姓名 as A_name, B.学校 as B_school from A right join B on A.姓名=B.姓名;

4)完整外连接

mysql不支持full join,SQL SERVER可以
12.查询MySQL有多少链接数
show status like 'Threads%'; 
13.查看MySQL由哪些具体IP连接
select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值