一 SQL分类
SQL是结构化查询语言,专门用来和关系型数据库进行通信的语言
DML Data Manipulation Language 数据库操纵语言,对数据的写操作
INSERT 插入数据
DELETE 删除数据
UPDATE 更新数据
DDL Data Definition Language 数据库定义语言 对非数据以外的写操作(数据库、表、索引、存储过程、函数)
CREATE 创建
DROP 删除
ALTER 修改
DCL Data Control Language 数据库控制语言(例:控制用户的访问权限)
GRANT 授权
REVOKE 撤销
DQL Data Query Language 数据库查询语言
SELECT 查询
大小写
关键字、函数名、列名和索引名不区分大小写
数据库的名字、表名、别名区分大小写的(因为linux是区分大小写的)
二 执行SQL语句
命令行执行 mysql -u用户 -p密码 -e "sql语句"
SQL文件 mysql -uroot -p < stu.sql
mysql -uroot -p -D db1 < stu.sql -D 指定库
三 函数
database() select database(); #查看当前所在的库
user() select user(); #查看当前登陆的用户
password() #给字符串加密,一般用于修改密码
聚合函数
sum() select sum(age) from t1; #显示age字段的和
avg() select avg(age) from t1; #求age字段的平均值
max() select max(age) from t1; #最大值
min() select min(age) from t1; #最小值
count() select sex,count(sex) from t1 group by sex; #统计sex字段每种有多少条记录
select count(*) from pass; # 统计表中有多少条非空的记录
时间函数
curtime() select curtime(); 查看当前时间
curdate() select curdate(); 查看当前日期
now() sysdate() 查看系统时间
连接函数
concat() select concat(username,uid) from pass;
转换成小写 lower()
update pass set username='ROOT' where username='root';
select lower(username) from pass;
转换成大写 upper()
select upper(username) from pass;
求长度
select username,length(username) from pass;
四 其他命令
status; 查看服务器状态
show processlist; 查看连接数
show variables; 查看服务器设置
五 基本SQL语句
分类 | 命令 | 描述 |
创建 | create database db; | 创建库 |
create table stu_info(id int(11),name char(50)); | 创建表(一定要有一个字段,类型,宽度) | |
删除 | drop database db; | 删除库 |
drop table stu_info; | 删除表 | |
truncate stu_info; | 清空表/初始化 | |
alter table stu_info drop phone; | 删除字段 | |
delete from stu_info where id=2 && name='lucy'; | 删除记录 | |
delete from mysql.user where user=' '; | 删除匿名用户 | |
delete from score where id is null; | 删除没有值 | |
切换 | use wff; | 进入wff库(相当于cd) |
查看 | show databases; | 查看所有库 |
show create database wff; | 查看库的创建属性 | |
show tables; | 查看所有表 | |
show create table stu_infoG | 查看表的创建属性 | |
show warnings; | 查看警告信息 | |
desc stu_info; | 查看表结构 | |
select * from stu_info; | 查看表的所有字段的所有记录 | |
select id,math form score; | 查看具体字段的记录 | |
select * from mysql.user; | 查看另一个表的内容 | |
select host,user,password from mysql.user; | 查看另一个表的user host | |
select database(); | 查看当前所在的库 | |
show variables like '%port%'; | 查看端口 | |
show processlist; | 查看进程 | |
status;/show status; | 状态 | |
select user(); | 查看当前登录的用户 | |
插入 | alter table stu_info add sex char(6); | 添加字段(默认末行) |
alter table stu_info add age int first; | 添加字段在首行 | |
alter table stu_info add age int after name; | 添加字段在某字段后面 | |
insert into stu_info set id=2,name='tom'; | 添加记录(字符串需加'') | |
insert into stu_info values(3,'jin'),(4,'sfe'); | 添加记录(数值一一对应) | |
insert into stu_info (name) values ('guer'); | 添加记录到具体字段 | |
修改 | update stu_info set age=18 where id=2; | 修改age定位id=2 |
update stu_info set age=18 where id=2 and name='lucy'; | ||
算术运算 | select 3+4; | 直接进行算术运算 |
select id,a+b+c from score order by a+b+c desc; |
计算总值(a+b+c) |
|
select id,a+b+c as total from score order by total desc; | 设置别名用于简写 | |
select id,chinese form score where chinese=(select max(chinese) from score); | 显示最大值 | |
统计 | select count(id) from score; | 统计id个数 |
select sex,count(sex) from stu_info group by sex; | 分类统计sex | |
select sum(english) from score; | 统计数值 | |
select id,chinese from score where chinese >= 90; | 统计90以上的id | |
排序 | select id,math form score order by math; | 从小到大排序 |
select id,math form score order by math desc; | 从大到小排序 | |
select id,math form score order by math desc limit 3; | 前三名 | |
平均值 | select sum(english)/4 from score; | 求平均数 |
select avg(english) from score; | avg平均函数 | |
匹配 | select * from stu_info where name like '%m%'; | 包含有m的字段 %--所有 |
select * from stu_info where name like 't_m'; | _单个字符 | |
select * from stu_info where name regexp 'm$'; | 使用正则 | |
多表查询 | select t1.name,t1.sex,t2.math from t1 join t2 on t1.name=t2.name; | |
select a.name,b.sex,t2.math from t1 a join t2 b on a.name=b.name; | 设置别名 | |
select t2.name,t1.sex,t2.math from t1 right join t2 on t1.name=t2.name; | 右表显示所有 | |
select t1.name,t1.sex,t2.math from t1 left join t2 on t1.name=t2.name; | 左表显示所有 | |
select stu.name,score.shell+linux+mysql total from stu join score on stu.id=score.stu_id order by total desc limit 3; |