常用sql语句,最简洁没有之一

一、操作数据库

1.1 创建数据库
create database 数据库库名;
1.2 创建数据库判断是否存在
create database if not exists  数据库的库名;
1.3 创建数据设置编码格式
create  database 数据库的名称  character set  编码格式;
1.4 查看数据库创建的格式
show create  database  数据库库名;
1.5 查看所有的数据库
show databases;
1.6 修改数据库的编码格式
alter  database 数据库库名 character set 编码格式;
1.7 删除数据库
drop database 数据库库名;

二、操作数据库表

2.1 创建表
  • 创建表的时候 括号后需要加上英文分号 字段都是使用逗号进行分割 最后字段名不需要编写逗号

  • 字段的数据类型的长度 可以不指定 但是一般建议指定其长度
    1.语法:

   create  table  表名(
        字段名 数据类型(长度),
        字段名 数据类型(长度),
        .........
    );

2.例子:创建一张表学生表(主键自增id,姓名,性别,年龄,生日)

  create  table  student(
   	id  int(11) primary key auto_increment,
   	name varchar(20),
   	sex  char(2),
   	age  int(4),
   	birthday date
);
2.2 修改表名
alter table 原表名 rename to 新表名
2.3 查看数据库中所有的表
show tables;
2.4 删除表
drop table 表名;
2.5 查看表结构
desc 表名;

三、操作字段

3.1 在末尾增加字段
alter table 表名 add 字段名 数据类型(长度);
3.2 在指定的字段后增加
alter  table  表名 add 字段名 数据类型(长度)  after 已经存在字段名;
3.3 修改字段的数据类型
alter table  表名  modify 字段名 数据类型(长度);
3.4 修改字段名
alter  table  表名  change  原字段名  新字段名  数据类型(长度);
3.5 删除字段
alter table 表名 drop 字段名;

四、操作表数据

4.1 插入数据

注意点:

  • 插入的数据的值必须与数据库列表中的数据类型一致
  • 插入数据值的长度要少于列表定义的长度
  • 字符串可以使用单引号以及双引号修饰 时间类型只能使用单引号进行修饰
4.1.1 方式一
insert  into 表名 values(数据1,数据2,数据3,...);
4.1.2 方式二(指定字段)
insert into 表名(字段名1,字段名2,字段名3)values(数据1,数据2,数据3);
4.1.3 插入多条数据
insert  into 表名 values(数据1,数据2,数据3),(数据1,数据2,数据3);
insert  into 表名(列名,列名,列名)values(数据,数据,数据),(数据,数据,数据);
4.2 更新数据(修改)
update 表名 set 字段名=,字段名=where 条件;
4.2 删除数据
4.2.1 delete-不会减少表或索引所占用的空间
 delete from 表名 where 条件;
4.2.2 truncate-表和索引所占用的空间会恢复到初始大小
1.语法: 
	truncate table 表名
2.例子:
	TRUNCATE TABLE student
4.3 查询
4.3.1 查询表中所有数据
select *  from  表名;
4.3.2 查询指定字段的数据
select  字段名... from  表名
4.3.3 简单运算查询
1.语法: 
	select  运算 from  表名;
2.运算: +  -  *  / 
3.例子:
    #查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
    SELECT price+10 FROM  表名;
4.3.4 根据条件进行查询
符号说明
not
between and并且
or或者

素材:

#创建商品表:
CREATE TABLE product(
	pid INT PRIMARY KEY,#主键ID
	pname VARCHAR(20),#商品名称
	price DOUBLE,#商品价格
	category_name VARCHAR(32)#商品分类名称
);

INSERT INTO product(pid,pname,price,category_name) VALUES(1,'联想电脑',5000,'电脑办公');
INSERT INTO product(pid,pname,price,category_name) VALUES(2,'海尔电脑',3000,'电脑办公');
INSERT INTO product(pid,pname,price,category_name) VALUES(3,'雷神电脑',5000,'电脑办公');
INSERT INTO product(pid,pname,price,category_name) VALUES(4,'JACK JONES',800,'服装');
INSERT INTO product(pid,pname,price,category_name) VALUES(5,'真维斯',200,'服装');
INSERT INTO product(pid,pname,price,category_name) VALUES(6,'花花公子',440,'服装');
INSERT INTO product(pid,pname,price,category_name) VALUES(7,'劲霸',2000,'服装');
INSERT INTO product(pid,pname,price,category_name) VALUES(8,'香奈儿',800,'女士用品');
INSERT INTO product(pid,pname,price,category_name) VALUES(9,'相宜本草',200,'女士用品');
INSERT INTO product(pid,pname,price,category_name) VALUES(10,'面霸',5,'女士用品');
INSERT INTO product(pid,pname,price,category_name) VALUES(11,'雪碧',56,'饮料饮品');
INSERT INTO product(pid,pname,price,category_name) VALUES(12,'香飘飘奶茶',1,'饮料饮品');
INSERT INTO product(pid,pname,price,category_name) VALUES(13,'iPhone9',8000,NULL);

语法:

select *  from  表名  where  条件;

例子:

#查询product表中所有的电脑办公记录
SELECT  * FROM  product  WHERE category_name ="电脑办公"
#查询商品名称为“花花公子”的商品所有信息:
SELECT  * FROM  product  WHERE  pname ="花花公子"
#查询价格为800商品
SELECT  * FROM  product WHERE  price  =800;
#查询价格不是800的所有商品
SELECT  * FROM  product WHERE  price  !=800;
#查询商品价格大于60元的所有商品信息
SELECT  * FROM  product  WHERE  price  >60
#查询商品价格在200到1000之间所有商品
SELECT  * FROM   product  WHERE price  >= 200 AND  price <=1000;
SELECT  * FROM   product  WHERE price  >= 200 &&  price <=1000;
SELECT  * FROM   product  WHERE price  BETWEEN  200 AND  1000;
#查询商品价格是200或800或者2000的所有商品
SELECT * FROM    product WHERE price =200 || price =800 || price =2000
SELECT * FROM    product WHERE price =200 OR price =800 OR price =2000
SELECT  * FROM  product  WHERE price  IN(200,800,2000);
4.3.5 模糊查询
  • 模糊查询的关键字 like
  • 匹配的符号 %匹配多个 _ 匹配一个
  #查询含有'霸'字的所有商品
  SELECT  * FROM   product  WHERE  pname LIKE '%霸%'
  #查询以'香'开头的所有商品
  SELECT  * FROM  product  WHERE  pname  LIKE  '香%'
  #查询第二个字为'想'的所有商品
  SELECT  * FROM   product   WHERE  pname LIKE '_想%'
4.3.6 非空查询
  • null 不等于 “” null 表示是未插入数据的状态
    #商品没有分类的商品
    SELECT * FROM product WHERE category_name IS NULL
    #查询有分类的商品
    SELECT  * FROM  product WHERE category_name IS  NOT NULL
4.3.7 排序
  • 关键字: order by
  • 升序:asc
  • 降序:desc

语法:

select  * from  表名 order by 字段名 排序的规则;

例子:

   #1.使用价格排序(降序)
   SELECT  * FROM  product   ORDER  BY  price  DESC 
   #2.在价格排序(降序)的基础上
   #若价格相同,相同价格的数据以pid降序排序
   SELECT  * FROM  product   ORDER  BY  price  DESC,pid DESC 
4.3.8 分页查询
select * from  表名 limit ?,? 
4.3.9 分组查询
select * from 表名  group by 字段名;
 # 统计各个分类下商品的个数
 SELECT  category_name ,COUNT(1) FROM product GROUP BY category_name   
4.3.10 过滤
select * from  表名  group  by  列名  having  条件
#一般是与分组进行搭配使用  一般是在分组的后面
#统计各个分类商品的个数,有且 只显示分类名称不为空值的数据
SELECT  category_name ,COUNT(1) FROM  product GROUP BY category_name
HAVING  category_name IS NOT NULL 
4.3.11 去重
SELECT DISTINCT 字段名 FROM 表名; 
4.3.12 设置别名(as可省略)
   SELECT 字段名 AS 别名 FROM  表名 AS 别名;
4.3.13 查询的顺序
 select  *  from  表名   where 条件   group  by 条件   having 条件
 order by  排序条件  limit(分页)

五、函数

5.1 聚合函数
函数的名称函数的描述
count(1)(效率最高)或者count(*)或者count(列名)总记录数
sum(列名)总和
max(列名)最大值
min(列名)最小值
avg(列名)平均值
#1 查询商品的总条数
SELECT  COUNT(1) FROM  product
#查看商品总价格、最大价格、最小价格、价格的平均值
SELECT  SUM(price) AS "总价格",MAX(price) AS "最大价格",MIN(price) AS "最小价格",
ROUND(AVG(price),2) AS "平均价格" FROM  product 
#2 查询价格大于200商品的总条数
SELECT  COUNT(1) FROM  product  WHERE  price >=200
#3 查询分类为'电脑办公'的所有商品的总记录
SELECT   COUNT(1) FROM  product  p WHERE p.category_name="电脑办公"   
#4 查询分类为'服装'所有商品的平均价格
SELECT AVG(price) FROM  product  p WHERE p.category_name="服装"
5.2 时间函数
SELECT  SYSDATE()
SELECT  CURDATE()
SELECT  CURTIME()
SELECT  NOW()
5.3 字符串函数
字符串函数说明
CONCAT(str1,str2,str…)将多个字符串连接
INSERT(str,pos.len,newStr)将str 中指定pos 位置开始len长度的内容替换为newStr
LOWER(str)将指定字符串转换为小写
UPPER(str)将指定字符串转换为大写
SUBSTRING(str,num len)将str字符串指定num位置开始截取len个内容
SELECT  CONCAT("今天","天气","真不错")
SELECT  INSERT("今天中午吃什么",4,3,"去吃饭");
SELECT UPPER("Abc");
SELECT LOWER("Abc");
SELECT  SUBSTRING("MySQL从删库到跑路",7,4)

六、约束

6.1主键约束

方式一(建表时)

CREATE  TABLE p1(
     id INT (11)  PRIMARY KEY,
     anme VARCHAR(20)
 )

方式二(建表后)
注意:建表时未设置主键id的情况下

alter table  表名  add  PRIMARY KEY(字段名);

删除主键约束

 alter table 表名 drop PRIMARY KEY
6.2 唯一约束

关键字: unique
方式一(建表时)

CREATE  TABLE   p1(
 id  INT(11) PRIMARY KEY  AUTO_INCREMENT,
 name VARCHAR(20) UNIQUE 
);

方式二

alter  table  表名 add CONSTRAINT 唯一约束的名称  unique(字段名)

联合唯一约束

CREATE TABLE p3(
  id  INT(11) PRIMARY KEY  AUTO_INCREMENT,
  name VARCHAR(20),
  pwd VARCHAR(20),
  UNIQUE(name,pwd)
); 

删除唯一约束

alter table  表名 drop index  唯一约束的名称;
6.3 非空约束

关键字: not null

CREATE  TABLE  p4(
   id  INT(11) PRIMARY KEY  AUTO_INCREMENT,
   name VARCHAR(20) NOT NULL 
);
6.4 默认约束

关键字:default

CREATE  TABLE  p5(
   id  INT(11) PRIMARY  KEY  AUTO_INCREMENT,
   name  VARCHAR(20) DEFAULT '牛牛'
);
INSERT  INTO  p5(pname)VALUES(DEFAULT);
6.5 外键约束
alter table 从表 add constraint 外键(例:FK_从表_主表) foreign key (从表外键字段) references 主表(主键字段);

七、联合查询

7.1 非等值查询
select * from1,2
7.2 连接查询
7.2.1显示内连接

概念:使用mysql中inner join关键字来进行连接查询 就是显示内连接

select  * from  左表  inner  join  右表  on  关联的条件
7.2.2 隐式内连接

概念:不使用inner join关键字来进行连接查询 就是隐式内连接

select  * from  左表, 右表  where  关联条件
5.5 左外连接
select  *  from  左表  left  join  右表  on 匹配
5.6 右外连接
select * from 左表  right join  右表  on 匹配条件
5.7 子查询
  1. 概念: 一个查询语句嵌套另一个完成的查询语句
  2. 两种体现:
    • 一个子查询的结果当做另一查询语句条件使用
    • 一个查询语句的结果当前另一个查询语句的字段来使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值