SELECT 列名 FROM 表名;
# 查询表t1中的所有信息
SELECT * FROM t1;
# 查询表t1中的部分信息
SELECT id,name,age,phone FROM t1;
SELECT 原列名 AS 自定义列名 FROM 表名;
# 给ID 自定义别名
SELECT ID AS '编号' FROM t1;
SELECT DISTINCT 列名 FROM 表名;
# 查询去重后t1表中的所有数据
SELECT DISTINCT * FROM t1;
SELECT 列名 FROM 表名 ORDER BY 排序列 排序依据
# 查询表t1 的所有数据,并按照id的 升序排列
select * from t1 order by id ASC;
# 查询表t1 的所有数据,并按照id的 降序排列
select * from t1 order by id DESC;
# 先根据班级名称升序,如果同名,则根据年龄降序
select * from t1 order by classname ASC ,age DESC;
SELECT 列名 FROM 表名 WHERE 条件;
# 查询表 t1中ID = 1 的数据
SELECT * FROM T1 WHERE ID = 1;
# 查询表t1中,姓名 = 张三 且 年龄 = 18的数据
SELECT * FROM T1 WHERE NAME = '张三' And age = 13 ;
SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 小值 AND 大值;
# 查询id范围在1到3之间的数据
SELECT * FROM t1 WHERE id BETWEEN 1 AND 3;
SELECT 列名 FROM 表名 WHERE 列名 IS NULL / IS NOT NULL;
# 查询ID不为空的数据
SELECT * FROM t1 WHERE ID IS NOT NULL;
SELECT 列名 FROM 表名 WHERE 列名 IN(值1,值2,值3);
# 枚举查询ID为1和3 的数据
select * from t1 WHere id in (1,3);
SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘模糊查询条件’;
SELECT * FROM 测试表 WHERE NAME LIKE '张_';# 模糊查询所有姓名为张某的数据
SELECT 列名 ,CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
ELSE 结果4
END
FROM 表名;
# 根据ID 生成 一个列叫等级
SELECT * ,CASE
WHEN id = 1 THEN 'A'
WHEN id = 2 THEN 'B'
WHEN id = 3 THEN 'C'
WHEN id = 4 THEN 'D'
ELSE 'E'
END AS '等级'
FROM 测试表;
SELECT 列名 FROM 表名 GROUP BY 分组列名;
# 查询以班级名称分组,每个班级各有多少人
SELECT class,COUNT(id)AS '人数' FROM 测试表 GROUP BY class;
SELECT 列名 FROM 表名 GROUP BY 分组列名 HAVING 过滤条件;
#查询以班级名称分组,每个班级各有多少人,过滤规则,年龄>10;
SELECT classname,COUNT(id)AS '人数', age FROM 测试表 GROUP BY class having age > 10;
SELECT 列名 FROM 表名 LIMIT 起始行,查询行数;
# 分页,一页10行
SELECT * FROM 测试表 LIMIT 0,10;
SELECT * FROM 测试表 LIMIT 10,10;
SELECT 列名 FROM 表名1 UNION SELECT 列名 FROM 表名2( 去除重复数据)
SELECT 列名 FROM 表名1 UNION ALL SELECT 列名 FROM 表名2(保留重复数据)
#合并查询两张表,去除重复记录
SELECT * FORM t1 UNION SELECT * FORM t2;
#合并查询两张表,保留重复记录
SELECT * FORM t1 UNION ALL SELECT * FORM t2;
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 连接条件;
# 连接表2,连接条件是t1的ID等于t2的ID
SELECT t1.name,t1.class FROM t1
INNER JOIN t2 ON t1.id = t2.id;
SELECT 列名 FROM 表1 , 表2 WHERE 连接条件
# 一个小技巧
# 表1为分数,表2 为等级判定
#分数表
CREATE TABLE SCORE (
SNO VARCHAR(3) NOT NULL COMMENT '学生编号',
CNO VARCHAR(5) NOT NULL COMMENT '课程编号',
DEGREE FLOAT(10, 1) NOT NULL COMMENT '分数'
);
#插入分数数据
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('103','3-245',86);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('105','3-245',75);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('109','3-245',68);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('103','3-105',92);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('105','3-105',88);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('109','3-105',76);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('101','3-105',64);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('107','3-105',91);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('108','3-105',78);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('101','6-166',85);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('107','6-106',79);
INSERT INTO SCORE(SNO,CNO,DEGREE) VALUES ('108','6-166',81);
#创建成绩分类表
CREATE TABLE grade1(
low FLOAT(3,0),
upp INT(3),
lever VARCHAR(10)
);
#插入成绩分类数据
INSERT INTO grade1 VALUES(90,100,'A');
INSERT INTO grade1 VALUES(80,89,'B');
INSERT INTO grade1 VALUES(70,79,'C');
INSERT INTO grade1 VALUES(60,69,'D');
INSERT INTO grade1 VALUES(0,59,'E');
# 查询代码
SELECT sno ,cno, lever FROM score,grade1 WHERE degree BETWEEN low AND upp;# 方式1
# 方式2
SELECT sno,cno,lever FROM score
INNER JOIN grade1
ON degree BETWEEN low AND upp;
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 连接条件;
SELECT t1.id,t1.name FROM t1
left join t2 on t1.id =t2.`id`;
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 连接条件;
SELECT t1.id,t1.name FROM t1
RIGHT JOIN t2 ON t1.id =t2.`id`;
CREATE TBALE 表名(
列名 数据类型 [约束],
列名 数据类型 [约束]
)CHARSET = 字符集编码;
CREATE TABLE t1 (
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
)CHARSET = UTF8;
ALTER TABLE 表名 操作;
ALTER TABLE 表名 ADD 列名 数据类型 [约束];
# 添加性别列;
ALTER TABLE T1 ADD gender VARCHAR(2);
ALTER TABLE 表名 MODIFY 列名 数据类型 [约束];
ALTER TABLE t1 MODIFY age VARCHAR(2);
ALTER TABLE 表名 DROP 列名;
# 删除表中的性别列;
ALTER TABLE T1 DROP gender;
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型 [约束];
# 修改列名age 为 年龄
ALTER TABLE t1 CHANGE age 年龄 VARCHAR(2);
ALTER TABLE 旧表名 RENAME 新表名;
# 把表T1 改名为 T2;
ALTER TABLE T1 RENAME T2;
DROP TABLE 表名;
# 删除表t1;
DROP TABLE T1 ;
INSERT INTO 表名(列1,列2,列3) VALUES(值1,值2,值3);
# 添加1条数据
INSERT INTO t1(id,NAME ,class ,age) VALUES(5,'测试','测试',18);
INSERT INTO t1 VALUES(5,'测试','测试',18);
# 添加多条数据
INSERT INTO t1(id,NAME ,class ,age) VALUES(5,'测试','测试',18),(6,'测试','测试',19);
UPDATE 表名 SET 列1 = 值1 ,列2 = 值2 WHERE 条件;
# 修改ID为3的数据,name 为哈哈嘿嘿;
UPDATE t1 SET NAME = '哈哈嘿嘿' WHERE id = 3;
# 修改所有数据的name为哈哈嘿嘿;
UPDATE t1 SET NAME = '哈哈嘿嘿';
DELETE FROM 表名 WHERE 条件;
# 删除一条数据
DELETE FROM t1 WHERE ID = 1 ;
# 删除表中所有的数据
DELETE FROM t1;
TRUECATE TBALE 表名;
# 先销毁表,然后按照原表的列新建一张表
TRUECATE TABLE T1;
==START TRANSACTION ==;
BEGIN
CREATE USER 用户名 IDENTIFINED BY 密码;
CREATE USER 'zhang' IDENTIFIED BY '123';
DROP USER 用户名;
DROP USER 'zhang';
GRANT ALL ON 数据库.表 ==TO ==用户名;
GRANT ALL ON test.* TO 'zhang';
REVOKE ALL ON 数据库.表名 FROM 用户名;
REVOKE ALL IN test.* FROM 'zhang';
SYSDATE(); #当前系统时间(日月年,时分秒)
CURDATE();#获取当前日期(日月年)
CURTIME();#获取当前时间(时分秒)
WEEK(DATE);#获取指定日期为一年中的第几周)
YEAR(DATE);#获取指定日期的年份
HOUR(TIME);#获取指定时间的小时值
MINUTE(TIME);#获取指定时间的分钟值
DATEDIFF(DATE1,DATE2);#获取date1于date2之间相隔的天数
ADDDATE(DATE,N):#计算date加上N天后的日期
CONCAT(STR1,STR2,STR3...);#字符串的拼接
INSERT(旧字符串,位置,长度,新字符串):#字符串的替换
LOWER(STR)#转成小写
UPPER(STR)#转成大写
SUBSTRING(字符串,位置,长度)#截取字符串
SUM(); #求和
AVG();#求平均值
MAX();#求最大值
MIN();#求最小值
COUNT();求总行数
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
# 创建时定义主键约束方式1
create table test(
id int primary key);
#创建时定义主键约束方式2
create table test(
id int,
primary key(id)
);
#定义联合主键约束
create table test(
id int,
name varchar(10),
primary key(id,name)
);
#为列添加主键约束
alter table test add primary key (列名);
# 撤销主键约束(撤销主键后,原主键的列还是非空约束中)
alter table test drop primary key;
# 创建时定义唯一约束方式1
create table test(
id int primary key);
#创建时定义唯一约束方式2
create table test(
id int,
primary key(id)
);
#定义联合唯一约束
create table test(
id int,
name varchar(10),
primary key(id,name)
);
# 为列添加唯一约束
alter table test add unique (id);
#撤销唯一约束
ALTER TABLE test DROP INDEX id;
create table test(
id int AUTO_INCREMENT,
name varchar(10),
primary key(id)
);
#撤销自动增长列方法
ALTER TABLE test MODIFY id INT;
#方法2
ALTER TABLE test CHANGE id id INT;
-非空,此列的值不能为空
# 创建时添加非空约束
CREATE TABLE test(
id INT NOT NULL,
NAME VARCHAR(10) NOT NULL
);
# 创建后,为某列添加非空约束
ALTER TABLE test MODIFY id INT NOT NULL;
ALTER TABLE test CHANGE NAME NAME INT NOT NULL;
# 删除非空约束
alter table test modify id int;
alter table test change id id int;
# 创建时添加默认约束
CREATE TABLE test(
id INT DEFAULT 1,
NAME VARCHAR(10) DEFAULT '默认'
);
# 删除默认值约束
alter table test modify id int;
alter table test change name name varchar(10);
CONSTRAINT 引用名 FOREIGN KEY (列名) REFERENCES 被引用表名(列名)
# 在新建是定义外键约束方式1
CREATE TABLE test(
id INT,
NAME VARCHAR(10),
FOREIGN KEY (id)REFERENCES t1(id)
);
# 在新建是定义外键约束方式2
CREATE TABLE test(
id INT,
NAME VARCHAR(10),
CONSTRAINT ID关键外键约束 FOREIGN KEY (id) REFERENCES t1(id)
);
# 为列新增外键约束
alter table test add foreign key(id) references t1(id);