Mysql数据库,增删改查笔记(非常重要)
新增数据:
INSERT
语法:
INSERT [INTO] <表名>[列名] VALUES<值列表>;
INSETR INTO 表名(列名1,列名2) VALUES(值1,值2);
如果INSETR语句中不写列名,则默认是向表中的所有字段添加值。
(此时输入数据数量要等同于列的数量,否则会报错,数据库对插入的数据是否有效进行了完整的校验)
字符串需要以‘’或者“”“”来括起
字符会自动转换成数字插入
INSERT INTO SELECT
INSERT [INTO] <表名>[列名] SELECT [源列名] FROM <源表名>;
INSERT INTO 表名 (列名1,列名2) SELECT 源列名1,源列名2 FROM 源表名;
1.每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验
INSERT INTO students (s_id,s_name,age) VALUES (‘小明')
2.每个数据值的数据类型、精度和小数位数必须与相应的列匹配
insert into students(s_id,s_name,age) values(1001,123, 'asd');
insert into students(s_id,s_name,age) values(1001,123, '100');
insert into students(s_id,s_name,age) values(1001,123, '255');
3.如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
insert into students(s_id) values(1001); 错误
4.具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值
常见错报错类型:
[Err] 1136 - Column cout doesn't match value count at row 1
INSERT语句中没有输入列名且列多值少 报错 数据库对插入的数据是否有效进行了完整性的校验
[Err] 1265 - Data truncated for column '...' at row 1
数值类型或长度不符合列名设置
[Err] 1364 -Field 's_name' doesn't have a default value
如果字段设置了 NOT NULL 则必须插入。或者设置DEFAULT值
修改数据
UPDATE
语法:
UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]
UPDATE 表名 SET 列名1=值1,列名2=值2 .... WHERE 列名=值;
不带where条件会导致全量更新
叙述:
where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果 不带where子句,则更新所有行数据。
例如:
update students set age=23,height=185 where s_name='火狐';
删除数据
DELETE
语法:
DELETE FROM <表名> [WHERE <更新条件>]
叙述:
此语句删除表中的行,如果不带where子句,则删除整个表中的记录 但是表不被删除
DELETE FROM <表名>; 删除表里的所有数据,表结构还在。
TRUNCATE TABLE <表名>; 删除表里的所有数据,但不会显示删除的数据行数,不能够做筛选。直接进行整表删除,表结构还在。
DORP TABLE <表名>; 删除表。表结构不存在。
查询数据
SELECT
语法:
SELECT <列名> FROM <表名> [WHERE <查询表达式>];
1、查询学生的学号(s_id) ,姓名(s_name)
SELECT s_id,s_name FROM students;
2、查询姓名为‘CMCC’的学号和性别信息
SELECT s_id,s_sex FROM students WHERE s_name='CMCC';
3、查询表里的所有列 (使用*号)
方法1:SELECT * FROM students; // 用*表示所有列
方法2:SELECT s_id,s_name,age,height,sex,class_id,birthday,s_desc FROM students; // 把所有列的列举出来
4、给列起别名:SELECT 列名1 [AS] 列别名1,列名2 [AS] 列别名2... FROM 表名;
SELECT s_name AS ‘学员姓名’,s_id AS ‘学员编号’ FROM students;
5、给表起别名: SELECT 表别名.列名1.列名2 FROM 表名 表别名;
SELECT s.s_id,s.s_name FROM students s;
补充:
MySQL中使用SQL语言几点说明
属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
箭头(->)代表SQL语句没有输入完
取消SQL语句使用(\c)
SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
使用函数时,函数名和后面的括号之间不能有空格
说明:
表和字段的引用方式有两种:绝对引用和相对引用
绝对引用:数据库名.表名(.字段名)
mysql> select school.students.s_name from school.students;
相对引用:表名.(字段名)
mysql> select students.s_name from school.students;