赞
踩
格式:show databases;
举例:
show databases;
格式:create database 数据库名 character set utf8;
UTF-8字符集:
目前utf8和utf8mb3一样,代表的是 用3个字节表示一个字符 (mb3=most byte 3)
utf8mb4最多不超过4个字节表示一个字符(设计数据库时如果想要允许用户使用特殊符号(Emoji表情等),最好使用utf8mb4编码来存储)
举例:
create database hero_db character set utf8;
格式:show create database 数据库名;
举例:
show create database hero_db;
格式:drop database 数据库名;
举例:
drop database hero_db;
格式:use 数据库名;
举例:
use hero_db;
格式:show tables;
show tables;
格式:create table 表名 (字段名1 类型,字段名2 类型,…);
举例:
create table hero(name varchar(10) not null,job varchar(10) not null,price int not null);
复制表结构及数据到新表
格式:create table 新表名 select * from 源表名 ;
举例:
create table hero_new as select * from hero ;
只复制表结构到新表
格式1: create table 新表名 like 源表名;
格式2: create table 新表名 select * from 源表名 where 1=2;
举例1:
create table hero_new like hero;
举例2:
create table hero_new select * from hero where 1=2;
复制表1的数据到表2(假设两个表结构一样)
格式:insert into 表2 select from 表1*
insert into hero_new select * from hero;
复制表1的数据到表2(假设两个表结构不一样)
格式:insert into 表2(字段名1,字段名2,…) SELECT 字段名1,字段名2,… from 表1
insert into hero_new(name,price) SELECT name,price from hero
格式:show create table 表名;
举例:
show create table hero;
格式:desc 表名;
举例:
desc hero;
格式:rename table 原表名 to 新表名;
举例:
rename table hero to hero_new;
格式:drop table 表名;
举例:
drop table hero;
最后面添加
格式: alter table 表名 add 字段名 类型;
举例:
alter table hero add job varchar(5);
最前面添加
格式: alter table 表名 add 字段名 类型 first;
举例:
alter table hero add id int first;
在某字段后面添加
格式:alter table 表名 add 字段名 类型 after 字段名;
alter table hero add gender varchar(5) after name;
格式:alter table 表名 drop 字段名;
举例:
alter table hero drop gender;
格式: alter table 表名 change 原名 新名 新类型;
举例:
alter table hero change name hero_name varchar(10);
全表插入
格式:insert into 表名 values(值1,值2);
举例:
insert into hero values('薇恩','射手');
指定字段插入
格式:insert into 表名(字段名1,字段名2)values(值1,值2);
举例:
insert into hero(name,job)values('弗拉基米尔','法师');
查询满足条件的指定字段信息
格式:select 字段信息 from 表名 where 条件;
举例:
select name from hero where price > 6300;
查询全部字段**(阿里java开发手册禁止使用*作为查询字段)**
格式:select * from 表名 ;
举例:
select * from hero;
格式:update 表名 set 字段名1 = 值1,字段名2 = 值2,… where 条件;
举例:
update hero set price = 1350,gender = '女' where name ='妮蔻';
格式:delete from 表名 where 条件;
举例:
delete from hero where name = '阿克尚';
下面测试会用到如下表:
数据类型 | 描述 |
---|---|
CHARACTER(n) | 字符/字符串。固定长度 n。 |
VARCHAR(n) 或 CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
BINARY(n) | 二进制串。固定长度 n。 |
BOOLEAN | 存储 TRUE 或 FALSE 值 |
VARBINARY(n) 或 BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
INTEGER§ | 整数值(没有小数点)。精度 p。 |
SMALLINT | 整数值(没有小数点)。精度 5。 |
INTEGER | 整数值(没有小数点)。精度 10。 |
BIGINT | 整数值(没有小数点)。精度 19。 |
DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。 |
NUMERIC(p,s) | 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) |
FLOAT§ | 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 |
REAL | 近似数值,尾数精度 7。 |
FLOAT | 近似数值,尾数精度 16。 |
DOUBLE PRECISION | 近似数值,尾数精度 16。 |
DATE | 存储年、月、日的值。 |
TIME | 存储小时、分、秒的值。 |
TIMESTAMP | 存储年、月、日、小时、分、秒的值。 |
INTERVAL | 由一些整数字段组成,代表一段时间,取决于区间的类型。 |
ARRAY | 元素的固定长度的有序集合 |
MULTISET | 元素的可变长度的无序集合 |
XML | 存储 XML 数据 |
通配符:
_
表示任意的单个字符
%
表示零个或多个字符串
[]
表示括号内所列字符中的一个(类似正则表达式)
[^]
表示不在括号所列之内的单个字符建议: 在查询的时候尽量不要在前面加
_
,%
等字符,导致不会走索引,而是全表扫描
举例:
查询名字第二个字是恩
的数据
select * from hero where name like '_恩%';
查询结果为:
查询名字以卡
开头的数据
select * from hero where name like '卡%';
查询结果为:
查询名字为张1,张2,...,张9
的数据
select * from hero where name like '张[0123456789]';
select * from hero where name like '张[0-9]';
查询名字不为'赵一','钱一','孙一','李一'
的数据
select * from hero where name like '[^赵钱孙李]一';
distinct用于返回唯一不同的值
格式:select distinct 字段名1,字段名2,…from 表名;(distinct必须放在开头)
举例:
查询英雄表中所有不同的职业
select distinct job from hero;
查询结果为:
假如 “hero” 表中的 “skin_owner” 列是可选的.这意味着如果在 “skin_owner” 列插入一条不带值的记录,“skin_owner” 列会使用 null 值保存.
那么我们如何测试 null值呢?
无法使用比较运算符来测试 null值,比如 =,< 或 <>.
我们必须使用 is null和 is not null操作符.
查询皮肤拥有者(skin_owner)不为空的英雄信息
select * from hero where skin_owner is not null;
查询结果为:
查询皮肤拥有者(skin_owner)为空的英雄信息
select * from hero where skin_owner is null;
查询结果为:
and和 or运算符用于基于一个以上的条件对记录进行过滤.
如果第一个条件和第二个条件都成立,则 and运算符显示一条记录.
如果第一个条件和第二个条件中只要有一个成立,则 or运算符显示一条记录.
格式:select 字段列表 from 表名 where 条件1 and/or 条件2;
查询工作(job)是坦克并且价格(price)是6300
的英雄信息
select * from hero where job = '坦克' and price = 6300;
查询结果为:
查询价格等于500
或者工作是法师
的英雄信息
select * from hero where price = 500 or job = '法师';
查询结果为:
常用的比较运算符有 >(大于) ,<(小于), >=(大于等于),<=(小于等于),=(等于),!=(不等于),<>(不等于),其中 != 和 <> 两者意义相同,但<>可移植性优于!=.
比较运算符常常与 where在一起使用,where用于逻辑判断,where后面写判断的条件,满足条件的语句会被筛选出来.
查询价格小于等于3150
的英雄信息
select * from hero where price <= 3150;
查询结果为:
查询价格不等于6300
的英雄信息
select * from hero where price <> 6300;
查询结果为:
between … and … 操作符用于选取介于两个值之间的数据范围内的值。
这些值可以是数值、文本或者日期。
格式:select 字段列表 from 表名 where 字段名 between 值1 and 值2;
举例:
查询价格在3150
到6300
之间的英雄信息
select * from hero where price between 3150 and 6300;
查询结果为:
in 操作符允许在where子句中规定多个值。
格式:select 字段列表 from 表名 where字段名 in (值1,值2,…);
举例:
查询工作是刺客
和射手
的英雄信息
select * from hero where job in ('刺客','射手')
查询结果为:
order by 关键字用于对结果集按照一个列或者多个列进行排序。
order by 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 desc 关键字。
格式:select 字段列表 from 表名 order by 字段名 asc(升序,默认的)/desc(降序);
举例:
查询全部英雄信息按照价格降序排序
select * from hero order by price desc;
查询结果为:
limit子句用于限制查询结果返回的数量
格式:select 字段列表 from 表名 order by 字段名 limit x,y;
x:跳过的条数(x为0时,可以直接写为limit y)
y:请求的条数(每页的条数)
*x=(请求的页数-1)y
举例:
查询价格最低的英雄信息
select * from hero order by price limit 1;
查询结果为:
按照价格降序排序,查询第5
页的2
条数据
select * from hero order by price desc limit 8,2;
查询结果为:
格式1: select 字段名 as “需要设置的别名” from 表名;
格式2: select 字段名 “需要设置的别名” from 表名;
格式3: select 字段名 需要设置的别名 from 表名;
举例:
select name,skin_owner 皮肤拥有者 from hero;
查询结果为:
平均值
格式:avg(字段名)
举例:
查询工作是坦克的英雄的平均价格
select avg(price) from hero where job = '坦克';
查询结果为:
最大值
格式:max(字段名)
举例:
查询所有英雄的最高价格
select max(price) from hero;
查询结果为:
最小值
格式:min(字段名)
举例:
查询所有英雄的最低价格
select min(price) from hero;
查询结果为:
求和
格式:sum(字段名)
举例:
查询所有英雄的总价格
select sum(price) from hero;
查询结果为:
计数
格式:count(*)
举例:
查询价格为6300
的英雄数量
select count(*) from hero where price = 6300;
查询结果为:
数值运算符 | |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取余运算 |
举例:
查询工作是刺客
的英雄价格打8折
之后的价格
select name,job,price*0.8 折后价格 from hero where job = '刺客';
查询结果为:
给价格低于6300
的英雄每人涨价500
块
update hero set price = price + 500 where price < 6300;
修改之后查询结果为:
文章到这里就先结束了,后面还会更新SQL基础(二),希望能帮助到各位大佬。如果文章有需要改进的地方还请各位大佬斧正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。