我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论。
一、新增数据
1、语法:insert [into] <表名>[列名] values<值列表>
-- Insert into 表名(列名1,列名2) values(值1,值2,);
INSERT INTO students (s_id, s_name) VALUES ('J1604025', 'XZG');
注意:
- 如果insert语句中不写字段名,则默认是向表中的所有字段添加值,并且添加值的数量要和表的字段数对应。
- 字符串需要以”或者”“来括起。
- 字段列多值少 会报错 数据库对插入的数据是否有效进行了完整性的校验。
例:
INSERT INTO students VALUES ( 'J1609004', 'GMCC', 28, 175, '男');
- 某个值是字符,对应的字段是数字,则它会自动转换成数字插入。
例:
INSERT INTO students VALUES ( 'J1609004', 'GMCC', '28', '175', '男');
- 要把字符转换成数字,则字符中必须全部是数字形式的字符。
例:
INSERT INTO students VALUES ( 'J1609004', 'GMCC', '28', '175cm', '男');
报错:Data truncated for column ‘height’ at row 1
- 如果字段设置了not null 则给这张表添加数据时该字段必须插入。或者设置default值。
- 每个数据值的数据类型、精度和小数位数必须与相应的列匹配。
2、讲查询结果插入到一张表中
语法:INSERT [INTO] <表名> [列名] SELECT [源列名] FROM <源表名>;
INSERT INTO 表名 (列名1,列名2) SELECT 源列名1,源列名2 FROM 源表名
- INSERT INTO 表名[列名] select 列名 from 来源表
INSERT INTO students_bak SELECT * FROM students;
二、更新数据
语法: UPDATE <表名> set <列名1=更新值1>,<列名2=更新值2> [where 更新条件]
注意:where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据。
UPDATE students SET sex = '男', age = 30 WHERE s_id = 'J1607016';
三、删除数据
1、语法:delete from <表名> [WHERE]
注意:此语句删除表中的行,如果不带where子句,则删除整个表中的记录但是表不被删除。
- delete from <表名>; 删除表里的所有数据,表结构还在。
- drop table <表名>; 删除表。表结构不存在。
DELETE FROM students_bak;--删除整个表的数据
DELETE FROM students_bak WHERE s_id = 'J16004012' --删除一条数据
2、TRUNCATE不会显示删除的数据行数,不能够做筛选。直接进行整表删除。
TRUNCATE TABLE students_bak
注意:delete truncate 删除表的数据记录。 drop 是会删除整个表的数据和结构。
四、查询
1、语法:SELECT <列名> FROM <表名> [WHERE <查询表达式>];
1、查询学生的学号(s_id) ,姓名(s_name)
Select s_id,s_name from students;
2、查询表里的所有列
<1>Select * from students; // 用*表示所有列
<2>select s_id,s_name,age,height,sex,class_id,birthday,s_desc from
students; // 把所有列的列举出来
3、给列起别名:select 列名 [as] 别名,列名2 [as] 别名2 from 表名;
Select s_name,s_name as ‘学员姓名’ from students;
4、给表起别名: select 表别名.列名 from 表名 表别名;
mysql> select s.s_id,s.s_name from students s;
补充:MySQL中使用SQL语言几点说明
1、属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
2、箭头(->)代表SQL语句没有输入完。
3、取消SQL语句使用(\c)。
4、SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)。
5、使用函数时,函数名和后面的括号之间不能有空格。
说明:表和字段的引用方式有两种:绝对引用和相对引用
1、绝对引用:数据库名.表名(.字段名)
mysql> select school.students.s_name from school.students;
2、相对引用:表名.(字段名)
mysql> select students.s_name from school.students;