在一个MySQL服务器上,可创建并管理多个数据库
查询:
查看所有数据库:SHOW DATABASES;切换为当前数据库:USE cug;对一个数据库操作首先要切换到当前数据库
修改:
创建新的数据库:CREATE DATABASE cug;删除某个数据库:DROP DATABASE cug;查询:
查看数据库中的所有表:SHOW TABLES students;查看某个表的结构:DESC students;查看创建表的SQL语句:SHOW CREATE TABLE students;修改:
创建表: CREARE TABLE students(column_name column_type); CREATE TABLE `students`( `id` bigint(20) NOT NULL AUTO_INCREMENT, `class_id` bigint(20) NOT NULL, `gender` varchar(1) NOT NULL, `score` int(11) NOT NULL, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;①CMD创建表时至少增加一个列,否则会报错 ②在创建表的时候,可加反引号来避免你自己的标识符(字段名,表名等)和数据库SQL中的关键字冲突
删除表:DROP TABLE students;修改表结构: 1)新增字段(列): ALTER TABLE students ADD COLUMN birth VARCHAR(10) NOT NULL; 2)修改字段信息: ALTER TABLE students CHANGE COLUMN birth birthday VARCHAR(20) NOT NULL; 3)删除字段: ALTER TABLE students DROP COLUMN birthday;在WHERE的条件上我们可以使用operator有:<, <=, >, >=, = 注意等于的判断只用一个等号
查询指定列–投影查询 SELECT name, score FROM students;注意,这里的多个字段不用括号括起来
从students表中查询成绩以9打头的所有记录 SELECT * FROM students WHRER score regexp '^9'SELECT查询时默认按id顺序排列,根据条件排序:使用ORDER BY
1.默认升序排列:
SELECT * FROM students ORDER BY score;2.使用DESC可降序排列:
SELECT * FROM students ORDER BY score DESC;3.如果有相同分数的,再按gender列排序:
SELECT * FROM students ORDER BY score DESC, gender;PS:如果有WHERE子句,那么ORDER BY子句要放到WHERE子句后面:
SELECT * FROM students WHERE class_id = 1 ORDER BY score DESC;LIMIT 3 OFFSET 0,从第0条开始查3条,作为一个分页
SELECT * FROM students ORDER BY score DESC LIMIT 3 OFFSET 6;聚合函数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kN6ElHHH-1601907502723)(en-resource://database/2285:1)]
如:查询表中的男生总数
SELECT COUNT(*) boys FROM students WHERE gender = 'M';为了方便处理结果,给列名COUNT(* )起别名num
使用GROUP BY 分组聚合 SELECT class_id, COUNT(*) population FROM students GROUP BY class_id;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LT3TlndK-1601907502725)(en-resource://database/2303:1)]@w=500
使用多个列进行分组: SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;上述查询结果集一共有6条记录,分别对应各班级的男生和女生人数。
自增型字段和有默认值的字段在INSERT语句中可不出现
部分列插入 INSERT INTO students(name,age) VALUES('朱蕊',24); 多行插入 INSERT INTO students(name,age) VALUES('朱蕊',24),('宋超超',25);使用UPDATE,我们就可以一次更新表中的一条或多条记录。
UPDATE students SET name='大牛', score=66 WHERE id=1; UPDATE students SET score=score+10 WHERE score<80;如果WHERE条件没有匹配到任何记录,UPDATE语句不会报错,也不会有任何记录被更新。
最后,要特别小心的是,UPDATE语句可以没有WHERE条件,例如:UPDATE students SET score=60;这时,整个表的所有记录都会被更新。
所以,在执行UPDATE语句时要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE更新。
可以一次删除表中的一条或多条记录。
DELETE FROM students WHERE id>=5 AND id<=7;在聚合查询时聚合函数会作用在多条记录上,GROUP BY分组聚合时有时需要加限定条件。
having是分组(group by)后的筛选条件,在分组后的数据组内再筛选;where则是在分组前筛选。
顺序是: WHERE GROUP BY HAVING
查询男同学的均分大于80的班级:
SELECT AVG(score) average, class_id FROM students WHERE gender='M' GROUP BY class_id HAVING AVG(score)>80