CRUD
create read update delete
数据库的CRUD语句
Insert 添加数据
INSERT INTO TableName (column1,column2,column3) VALUES (value1,value2,value3);
#col与val是对应的
-
插入的数据应与字段的类型数据相同
-
数据的长度应该在列的规定范围内
-
VALUES中列出的数据位置必须与被加入的列的排列位置相应
-
字符和日期型数据应该包含在单引号中
-
列可以插入空值[前提是该字段允许为空] insert into table value(null)
-
添加多条记录
INSERT INTO TableName (column1,column2,column3)VALUES (value1,value2,value3),(value1,value2,value3); -
默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错
如果某个列没有指定 not null,那么添加数据时,没有给定值,就会默认给null
如果希望指定某个列的默认值,可以在创建表的时候指定
Update 更新数据
UPDATE TableName
SET col1=expr1,col2=expr2 [WHERE expr];
- UPDATE可以用新值跟新原有列表中的割裂
- SET语句指示要修改哪些列和要赋予那些值
- WHERE子句指定更新哪些行,没有WHERE全更新
- 如果要更新多个字段 通过
set 字段1=值1,字段2=值2=
Delete 删除数据
DEALETE FROM TableName [WHERE expr;];
- 不使用WHERE子句,将删除表中所有的数据
- DELETE 不能删除某一列的值(可使用update设为null或者' ')
- DELETE 语句仅删除记录,不删除表本身,如果要删除表,使用
drop table语句
Select 查找数据
查询
SELECT [DISTINCT] *| {col1,col2,col3...} FROM tablename;
- SELECT指定查询哪些列的数据
- col指定列名
- *代表查询所有列
- FROM指定查询哪张表
- DISTINCT可选,指显示结果时,是否去掉重复数据,每个字段都相同才会去重
create TABLE student
(
id int not null DEFAULT 1,
`name` VARCHAR(20) not null DEFAULT '',
chinese FLOAT not null DEFAULT 0.0,
english FLOAT not null DEFAULT 0.0,
math FLOAT not null DEFAULT 0.0
);
INSERT INTO student (id, `name`, chinese, english, math)
VALUES(1, 'NAME1', 89, 78, 90),
(2, 'NAME2', 67, 98, 56),
(3, 'NAME3', 87, 78, 77),
(4, 'NAME4', 88, 98, 90),
(5, 'NAME5', 82, 84, 67),
(6, 'NAME6', 55, 85, 45),
(7, 'NAME7', 75, 65, 30),
(8, 'NAME8', 45, 65, 99);
SELECT *FROM student;
SELECT `name`,english FROM student;
SELECT DISTINCT english FROM student;
使用表达式对查询的列运算与别名
SELECT *|{column|expression , column2|expression,...} FROM TableName;
SELECT columnName AS 别名 FROM TableName;
SELECT `name`,(chinese+math+english) AS 'SUM' FROM student;
WHERE子句常用运算符
| 比较运算符 | 描述 |
|---|---|
| = != > < >= <= | 等于,不等于,大于,小于,大于等于,小于等于 |
| BETWEEN ...AND... | 在某个范围内,左右闭区间 |
| LIKE NOT LIKE | 模糊搜索某种模式 |
| IN | 指定针对某个列的多个可能值 |
| IS NULL | 判断是否为空 |
| 逻辑运算符 | 描述 |
|---|---|
| AND | 多个条件同时成立 |
| OR | 多个条件任一成立 |
| NOT | 不成立 |
SELECT * FROM student WHERE `name`='name1';
SELECT * FROM student WHERE english > 90;
SELECT * FROM student WHERE english BETWEEN 80 AND 90;
SELECT * FROM student WHERE english IN ( 89,90,91);
SELECT *FROM student WHERE
(english+math+chinese)>200
AND math < chinese
AND `name` LIKE '韩%';
#查询总分大于200,数学小于语文,姓"韩"的学生