赞
踩
目录
SHOW DATABASES;
语法:
- CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
- create_specification]...]
-
- create_specification:
- [DEFAULT] CHARACTER SET charset_name
- [DEFAULT] COLLATE collation_name
说明:
· 大写的表示关键字
· [ ]是可选项
· CHARACTER SET:指定数据库采用的字符集
· COLLATE:指定数据库字符集的校验规则
示例:
· 创建名字为db_name1的数据库
create database db_name1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci
· 如果系统里没有db_name2的数据库,则创建一个名字为db_name2的数据库,如果有则不创建
create database if not exists db_name2;
· 如果系统里面没有db_name3的数据库,则创建一个使用utf8mb4字符集的db_name3的数据库,如果有则不创建
create database if not exists db_name3 character set utf8mb4;
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符,MySQL真正的utf8是使用utf8mb4,建议都是用utf8mb4
use 数据库名;
示例:
use db_name3;
语法:
DROP DATABASE [IF EXISTS] db_name;
示例:
- drop database if exists db_name1;
- drop database if exists db_name2;
说明:数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
整型和浮点型:
数据类型 | 大小 | 说明 | 对应Java类型 |
BIT[(M)] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用boolean对应BIT,此时默认为1位,只能存0和1 |
TINYINT | 1字节 | Byte | |
SMALINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGINT | 8字节 | Long | |
FLOAT(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数,会发生精度丢失 | Float |
DOUBLE(M,D) | 8字节 | Double | |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数,精确数值 | BigDecimal |
NUMERIC(M,D) | M/D最大值+2 | 和DECIMAL一样 | BigDecimal |
数据类型 | 大小 | 说明 | 对应Java类型 |
VARCHAR(SIZE) | 0-65535字节 | 可变长度字符串 | String |
TEXT | 0-65535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 | String |
BLOB | 0-65535字节 | 二进制形式的长文本数据 | byte[] |
数据类型 | 大小 | 说明 | 对应Java类型 |
DATATIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 | java.util.Data java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Data java.sql.Timestamp |
需要操作数据库中的表时,需要先使用数据库:
use db_name;
desc 表名;
示例:
语法:
- create table table_name(
- field1 datatype,
- field2 datatype,
- field3 datatype
- );
可以使用comment增加字段说明
示例:
- create table student (
- id int,
- name varchar(10) comment '姓名',
- age int comment '年龄',
- sex varchar(1)
- );
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tab_name;
示例:
- -- 删除tab_name1表
- drop table tab_name1;
- -- 如果tab_name2表存在,则删除
- drop table if exists tab_name2;
注释:在SQL中可以使用“--空格+描述”来进行注释说明
CRUD即:增加(create),查询(retrieve),更新(updata),删除(delete)
语法:
- INSERT
- [INTO] table_name [(column [, column]...
- ) ]
- VALUES
- (value_list) [, (value_list)]...value_list: value,
- [, value]...
案例表:
- create table student (
- id int,
- name varchar(10) comment '姓名',
- age int comment '年龄',
- sex varchar(1) comment '性别'
- );
单行数据 + 全列插入 :
- -- value_list数量必须和表的列的数量和顺序一致
- insert into student values (1,'小张',20,'男');
- insert into student values (2,'小红',21,'女');
多行数据 + 指定列插入:
- insert into
- student (id, name, age)
- values
- (3, '小花', 22),
- (4, '小赵', 25);
语法:
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
案例表:
- -- 创建成绩表
- create table student_score (
- id int,
- name varchar(10),
- chinese decimal(3, 1),
- math decimal(3, 1),
- english decimal(3, 1)
- );
-
- -- 往成绩表中插入数据
- insert into
- student_score (id, name, chinese, math, english)
- values
- (1, '小张', 60.5, 70, 85),
- (2, '小花', 85.5, 95, 96),
- (3, '小赵', 76, 88, 92),
- (4, '小王', 85, 64, 73);
全列查询:
- -- *代表全部列
- select * from student_score;
结果:
指定列查询:
- select
- id,
- name,
- chinese
- from
- student_score;
结果:
查询字段为表达式:
表达式含有一个字段
- -- 表达式包含一个字段
- select
- id,
- name,
- chinese + 10,
- math -10,
- english -5
- from
- student_score;
结果:
表达式不含有字段
- -- 表达式不包含字段
- select id,name,10 from student_score;
结果:
表达式包含多个字段
- -- 表达式含多个字段
- select
- id,
- name,
- chinese + math + english
- from
- student_score;
结果:
为查询结果中的指定列起别名,表示返回的结果集中,以别名作为该列的名称,语法:
SELECT column [AS] alias_name [...] FROM table_name;
关键字为:as,但是as可以省略
示例:
- -- 别名作为列名返回
- select
- id,
- name,
- chinese + math + english sum
- from
- student_score;
结果:
使用DISTINCT关键字对某列数据进行去重
-- 语文得85分的重复了
select chinese from student_score;
-- 去重结果
select distinct chinese from student_score;
语法:
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
1. 没有order by子句的查询返回的顺序是未定义的
2. null数据排序,视为比任何值都小,升序在最上面,降序在最下面
示例:按语文成绩进行升序排序:
- select
- *
- from
- student_score
- order by
- chinese;
结果:
3. 使用表达式及别名进行排降序
- select
- id,
- name,
- chinese + math + english sum
- from
- student_score
- order by
- sum desc;
结果:
4. 可以对多个字段进行排序,排序优先级随书写顺序
- select
- *
- from
- student_score
- order by
- chinese,
- math,
- english desc;
结果:
比较运算符:
运算符 | 说明 |
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL不安全,NULL=NULL的结果为NULL |
<=> | 等于,NULL安全,NULL<=>NULL的结果为TRUE |
!=,<> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[ a0,a1 ] |
IN(option1......) | 如果是option中的任意一个返回true |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
LIKE | 模糊匹配,%表示任意多个任意字符;_表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
AND | 多个条件都必须是true,结果才是true |
OR | 任意一个条件为true,结果就是true |
NOT | 条件为true,结果为false |
注意:
1. where条件可以使用表达式,但是不能使用别名
2. AND的优先级高于OR
示例:
· 基本查询:
- -- 查询语文成绩小于70分的同学
- select id,name,chinese from student_score where chinese<70;
- --查询语文成绩比英语成绩低的同学
- select
- id,
- name,
- chinese,
- english
- from
- student_score
- where
- chinese < english;
- -- 查询总分低于250分的同学
- select
- id,
- name,
- chinese + math + english
- from
- student_score
- where
- chinese + math + english < 250;
结果:
· AND与OR:
- -- 查询语文和英语成绩都大于80分的同学
- select
- *
- from
- student_score
- where
- chinese > 80
- and english > 80;
- -- 查询数学成绩大于80或者英语成绩小于80的同学
- select
- *
- from
- student_score
- where
- math > 80
- or english < 80;
· 范围查询:
- -- 查询语文成绩在70到90分之间的学生
- select
- *
- from
- student_score
- where
- chinese between 70
- and 90;
· 模糊查询: LIKE
- -- 查询名字为 小... 同学的成绩
- select
- *
- from
- student_score
- where
- name like '小%';
语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
示例:查询语文成绩排在第二名的成绩:
- select
- id,
- name,
- chinese
- from
- student_score
- order by
- chinese desc limit 1,1;
结果:
语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
示例:
将小花的语文成绩修改为80:
update student_score set chinese=80 where name='小花';
结果:
语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
示例:
删除小花的成绩:
- delete from
- student_score
- where
- name = '小花';
结果:
删除整张表的数据:
delete from student_score;
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。