Mysql--SQL语句

一 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'; 精确定位(and && ||or)
     
算术运算 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;  
原文地址:https://www.cnblogs.com/Xinenhui/p/14123556.html