DML
DML(data manipulation language)
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
插入数据INSERT
完整插入:INSERT INTO 表名 VALUES (值1,值2,值3…值n);
部分插入:INSERT INTO 表名(列名,列名) VALUES (值1,值2);
mysql>insert into student_table values (zhangsan,18,'男');
>Query OK, 0 rows affected (0.15 sec)
mysql>insert into student_table (name,age) values ("lisi",23);
>Query OK, 0 rows affected (0.15 sec)
更新数据UPDATE
语法:UPDATE 表名 SET 列名=值 WHERE CONDITION;
mysql>update student_table set age=40 where name="zhangsan"
>Query OK, 0 rows affected (0.15 sec)
修改root密码
>use mysql;
>alter user 'root'@'localhost' identified by 'Honglei@123456';
Query OK, 0 rows affected (0.15 sec)
>flush privileges;
删除数据DELETE
语法:DELETE FROM 表名 WHERE CONDITION;
mysql> delete from t6 where name="zhangsan";
DQL
DQL(Data Query Language )
DQL语句 数据库查询语言: 查询数据SELECT
简单查询
查看所有列:SELECT * FROM 表名;
查部分列:SELECT 列1,列2,列3 FROM 表名;
mysql> select * from student_table;
mysql> select name,age from student_table;
条件查询
单条件查询WHERE:SELECT 列名 FROM 表名 WHERE 条件
mysql> select * from student_table where name="zhangsan";
多条件查询AND/OR:SELECT 列名 FROM 表名 WHERE 条件 AND/OR 条件
mysql> select * from student_table from where age=18 and age=24;
mysql> select * from student_table from where age=18 or age=24;
关键字BETWEEN AND:SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值 AND 值
#查询年龄在18~24之间的所有列信息
mysql> select * from student_table where age between 18 and 24
关键字IN集合查询:SELECT 列名 FROM 表名 WHERE 列名 IN 集合
#查询年龄为18、20、24的所有列信息
mysql> select * from student_table where age IN (18,20,24)
#查询年龄不为18、20、24的所有列信息
mysql> select * from student_table where age NOT IN (18,20,24)
关键字IS NULL查询:SELECT 列名 FROM 表名 WHERE 列名 IS NULL
#查询名字为NULL的所有列信息
mysql> select * from student_table where name IS NULL
#查询名字不为NULL的所有列信息
mysql> select * from student_table where name IS NOT NULL
关键字LIKE模糊查询:SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘范围’
#通配符’%’代表多个任意字符
mysql> select * from student_table where name LIKE 'zhang%'
#通配符’_’代表1个任意字符
mysql> select * from student_table where name LIKE 'zhang___'
查询排序
升序查询:SELECT 列名 FROM 表名 ORDER BY 列名 ASC;
降序查询:SELECT 列名 FROM 表名 ORDER BY 列名 DESC;
#按年龄升序排序
mysql> select * from student_table order by age ASC;
#按年龄降序排序
mysql> select * from student_table order by age ASC;
多表查询
交叉连接:生成笛卡尔积,它不使用任何匹配条件(全部组合(A表5行,B表7行,最后5*7=35行))
内连接
内连接:只连接匹配的行(两列相同时,才会显示)
SELECT 字段列表 FROM 表名1,表名2 WHERE 表名1.字段 =表名2.字段
#查询两表部门序号相同的所有列
mysql> select * from info,department where info.dep_num = department.dep_num;
外连接
外连接:两列相同时显示,并已左/右表为主。
语法:SELECT 字段 FROM 表1 LEFT/RIGHT JOIN ON 表2 WHERE 表1.字段 = 表2.字段;
select info.name,info.age,info.dep_num,department.dep_name from info left join on department on info.dep_num = department.dep_num;
select info.name,info.age,info.dep_num,department.dep_name from info right join department on info.dep_num = department.dep_num;
子查询
略