DML:增删改表中数据
- 添加数据
语法:
insert into 表名(列名1,列名2,…列名n)values (值1,值2,…值n);
注意:
-
列名要和值一一对应
-
如果表名后,不定义列名,则默认给所有的列添加值:insert into 表名 values(值1,值2,…值n)
-
处理数字类型,其他类型需要使用引号(单双都可以)引起来
-
删除数据
语法:delete from 表名[where 条件]
注意:
-
如果不加条件,则删除表中所有记录;
-
如果要删除所有记录:1. delete from 表名:–不推荐使用。有多少条记录就会执行多少次删除操作,2.TRUNCATE TABLE 表名;–先删除表,然后再创建一张一样的表
-
修改数据
语法:update 表名 set 列名1 = 值1,列名2 =值2,。。。[where条件]
注意:1.如果不加任何条件,则会将表中所有记录全部修改;
##DQL:查询表中记录
select from 表名;
INSERT INTO stu(id,NAME,age)VALUES(1,'张无忌',20);
INSERT INTO stu VALUES(2,'pofenx',17,99.9,NULL,NULL);
INSERT INTO stu VALUES(3,"张三",17,99.99,"1893-01-16",NULL);
SELECT*FROM stu;
SHOW DATABASES;
SELECT*FROM stu;
UPDATE stu SET age =17 WHERE id = 3;
UPDATE stu SET age =18,score=100 WHERE id =2;
UPDATE stu SET age =20;
DQL:查询表中的记录
select*from 表名;
-
语法
select
字段列表
from
表名列表
where
条件列表
gorup by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
-
基础查询
-
多个字段的查询:select 字段名1,字段名2,…from表名;
-
注意:如果查询所有字段,这可以使用*来代替字段列表
- 去除重复:distinct
- 计算列:一般可以使用四则运算计算一些列的值(一般是只会进行数值类型的计算)
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null,如果该字段为nul后的替换值
起别名:as:as也可以省略
CREATE TABLE student(
id INT ,
NAME VARCHAR(20) ,
age INT ,
sex VARCHAR(5),
address VARCHAR(100),
math INT,
english INT );
INSERT INTO student(id,NAME,age,sex,address,math,english)
VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
SELECT * FROM student;
-- 去除重复的结果集;
SELECT DISTINCT address FROM student;
SELECT DISTINCT NAME,address FROM student;
-- 计算math和english的和
SELECT NAME,math,english,math+english FROM student;
-- 如果有null 参与的运算,计算的结果都为null
SELECT NAME ,math,english,math+IFNULL(english,0) FROM student;
-- 起别名
SELECT NAME ,math,english,math+IFNULL(english,0) AS 总分 FROM student;
SELECT NAME 姓名 ,math 数学,english 英语,math+IFNULL(english,0) 总分 FROM student;
-
条件查询
-
where子句后跟条件
-
运算符:>,<,<=,>=,=,<>,between …and , in(集合),like(模糊查询), is null,and 或&&,or或||,not或!;
- like:模糊查询: _: 单个任意字符,%多个任意字符
CREATE TABLE student(
id INT ,
NAME VARCHAR(20) ,
age INT ,
sex VARCHAR(5),
address VARCHAR(100),
math INT,
english INT );
INSERT INTO student(id,NAME,age,sex,address,math,english)
VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
SELECT * FROM student;
-- 去除重复的结果集;
SELECT DISTINCT address FROM student;
SELECT DISTINCT NAME,address FROM student;
-- 计算math和english的和
SELECT NAME,math,english,math+english FROM student;
-- 如果有null 参与的运算,计算的结果都为null
SELECT NAME ,math,english,math+IFNULL(english,0) FROM student;
-- 起别名`student`
SELECT NAME ,math,english,math+IFNULL(english,0) AS 总分 FROM student;
SELECT NAME 姓名 ,math 数学,english 英语,math+IFNULL(english,0) 总分 FROM student;
-- 查询年龄大(小)(等于)(不等于)于20岁
SELECT * FROM student WHERE age >20;
SELECT * FROM student WHERE age <20;
SELECT * FROM student WHERE age = 20;
SELECT * FROM student WHERE age != 20;
-- 查询年龄大于等于20小于等于30
SELECT * FROM student WHERE age>= 20 && age <=30;
SELECT * FROM student WHERE age>= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 20 ;
-- 查询年龄22岁 ,19 岁 ,25 岁的信息
SELECT * FROM student WHERE age = 20 OR age =19 OR age =25;
SELECT * FROM student WHERE age IN (18,22,25);
-- 查询英语程序为null
SELECT * FROM student WHERE english =NULL -- 不对,null不能用=判断
SELECT * FROM student WHERE english IS NULL;
-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
-- 查询姓马的有哪些
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE '_化%';
-- 查询姓名是三个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名中包含德的人;
SELECT * FROM student WHERE NAME LIKE '%德%';