赞
踩
1.SQL语句可以单行或多行书写,以分号结尾;
2.SQL语句可以使用 空格或缩进 来增强可读性;
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
4.注释
分类 | 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
数值类型 | TINYINT | 1 byte | (-2^7,2^7-1) | (0,2^8-1) | 小整数型 |
SMALLINT | 2 byte | (-2^15-,2^15-1) | (0,2^16-1) | 大整数型 | |
MEDIUMINT | 3 byte | (-2^23-,2^23-1) | (0,2^24-1) | 大整数型 | |
INT或INTEGER | 4 byte | (-2^31-,2^31-1) | (0,2^32-1) | 大整数型 | |
BIGINT | 8 byte | (-2^63-,2^63-1) | (0,2^64-1) | 超大整数型 | |
FLOAT | 4 byte | (-3.40E+38 ~ +3.40E+38) | 0和(1.175494351E-38,3.402823466E+38) | 单精度浮点型 | |
DOUBLE | 8 byte | (-1.79E+308 ~ +1.79E+308) | 0和(2.2250738585072014E-308,1.7976931348623157E+308) | 双精度浮点型 | |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) | ||
字符串类型 | CHAR | 0-255 bytes | 定长字符串 | ||
VARCHAR | 0-65 535 bytes | 变长字符串 | |||
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 | |||
TINYTEXT | 0-255 bytes | 短文本字符串 | |||
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 | |||
TEXT | 0-65 535 bytes | 长文本数据 | |||
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | |||
MEDIUMYEXT | 0-16 777 215 bytes | 中等长度文本数据 | |||
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | |||
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 | |||
日期类型 | 类型 | 大小 | 格式 | ||
DATE | 3 | YYYY-MM-DD | 日期值 | ||
TIME | 3 | HH:MM:SS | 时间值或持续时间 | ||
YEAR | 1 | YYYY | 年份值 | ||
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | ||
TIMESTAMP | 4 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
查询所有数据库
SHOW DATABASES;
查询当前的数据库
SELECT DATABASE();
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则 ];
DROP DATABASE [IF EXISTS] 数据库名;
USE 数据库名;
- CREATE TABLE 表名(
-
- 字段1 字段1类型[COMMENT 字段1注释],
- 字段2 字段2类型[COMMENT 字段2注释],
- 字段3 字段3类型[COMMENT 字段3注释],
-
- ...
- 字段n 字段n类型[COMMENT 字段n注释]
-
- )[COMMENT 表注释];
SHOW TABLES;
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD 字段名 类型(长度) [comment 注释][约束];
向emp表增加一个新的字段“昵称”为nickname,类型为varchar(20):
ALTER TABLE 表名 MODIFY 字段名 数据类型(长度);
将emp表的nickname的数据类型改为 nickname(50)
将emp表的nickname改名为username,数据类型改为 nickname(30)
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型(长度) [comment 注释] [约束];
ALTER TABLE 表名 DROP 字段名;
将emp表中username字段删除:
ALTER TABLE 表名 RENAME TO 新表名 ;
DROP TABLE [IF EXISTS] 表名;
TRUNCATE TABLE 仅仅删除表的所有记录,表的结构、索引、触发器、约束等将被保留。
TRUNCATE TABLE 表名;
用来对数据库中表的记录进行增删改操作
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...);
字段顺序与值的顺序一一对应
INSERT INTO 表名 VALUES(值1,值2,...);
- INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
- INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE 条件 ];
不写条件会对所有记录的指定字段进行修改
DELETE FROM 表名 [WHERE 条件];
不写条件会对修改整张表的数据
用来查询数据库表中的记录
语法:
- SELECT
- 字段列表
- FROM
- 表名列表
- WHERE
- 条件列表
- GROUP BY
- 分组字段列表
- HAVING
- 分组后条件列表
- ORDER BY
- 排序字段列表
- LIMIT
- 分页参数
- SELECT 字段1,字段2,字段3,...FROM 表名;
- SELECT * FROM 表名;
查询所有字段用*表示
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]...FORM 表名;
显示的是别名,as可以省略。
SELECT DISTINCT 字段列表 FROM 表名;
SELECT 字段列表 FROM 表名 WHERE 条件列表;
比较运算符 | 功能 |
>、>=、<、<=、=、<>或 != | 大小相等比较 |
BETWEEN...AND... | 在某个范围内(含最小、最大值) |
IN(...) | 查询在列表项内的数据 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符)数值类型的同样适用 |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
AND 或 && | 并且(多个条件同时成立) |
OR 或 || | 或者(多个条件任意一个成立) |
NOT 或! | 非 (不是) |
- -- 查询年龄在25-28之间的员工信息
- select id, name, gender, age from staff_1 where age between 25 and 28;
- -- 查询年龄为25或28的员工信息
- select id, name, gender, age from staff_1 where age in(25,28);
- -- 查询姓名为三个字符的员工信息
- select id, name, gender, age from staff_1 where name like'___';
- -- 查询身份证号最后一位是3的员工信息
- select id, name, gender, age,id_num from staff_1 where id_num like'%3';
- -- 查询身份证号第一位是3的员工信息
- select id, name, gender, age,id_num from staff_1 where id_num like'3%';
- -- 查询年龄个位数是5的员工信息(数值型)
- select id, name, gender, age,id_num from staff_1 where age like'%5';
将一列数据作为一个整体,进行纵向计算。null值不参与所有聚合函数运算
语法:
SELECT 聚合函数(字段列表) FROM 表名;
常见聚合函数:
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
- -- 统计表中数据总量
- select count(*) from staff_1;
- -- 计算表中所有男性的年龄之和
- select sum(age) from staff_1 where gender='男';
SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
where 与 having区别:
- -- 根据性别分组,统计男员工和女员工的数量
- select gender, count(*) from staff_1 group by gender ;
- -- 根据性别分组,统计男性员工和女性员工的平均年龄
- select gender,avg(age) from staff_1 group by gender;
- -- 查询男性员工,并根据年龄进行分组,获取员工数量大于等于2的年龄
- select age,count(*) from staff_1 where gender='男' group by age having count(*)>=2;
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
2.排序方式
若是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
- -- 对staff表中的数据根据入职时间进行降序排序
- select * from staff order by entrydate desc ;
- -- 对staff表中的数据根据年龄进行降序排序,若年龄相同,按照姓名升序排序
- select * from staff order by age desc ,name ;
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
- -- 查询第一页数据,每页显示5条数据
- select * from staff limit 5;
-
- -- 查询第二页数据,每页显示5条数据
- select * from staff limit 5,5;
用来管理数据库用户,控制数据库的访问权限等。
- USE mysql;
- SELECT * FROM user;
- -- 主机名:localhost表示本地主机,%表示任意主机(通配)
- CREATE USER '用户名'@'主机名' identified by '密码';
- -- 修改用户密码
- ALTER USER '用户名'@'主机名' identified with mysql_native_password by '新密码';
- -- 删除用户
- DROP USER '用户名'@'主机名'
MySQL中常见的几种权限:
权限 | 说明 |
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/试图 |
CREATE | 创建数据库/表 |
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。