MySQL基础

来源:互联网 发布:pdf批量转换jpg mac 编辑:程序博客网 时间:2024/06/11 20:07

1.管理数据库

1.1 查看所有数据库
show databases;

1.2 创建数据库

创建数据库,并制定默认字符集

 create database day08 default character set utf8;

查看数据库的状态(默认字符串):show create database day08;

1.3 删除数据库

 drop database day08;

1.4 修改数据库

修改数据库默认字符集

alter database day08 default character set gbk;


2.管理表

2.1 查询所有表

use day15;   --选择数据库

show tables; --查看数据库中的所有表

2.2 创建表

 create table student(

   -> id int, 

   -> name varchar(20),

   -> age int

    -> );

2.3 删除表

 drop table student;

2.4 修改表

1)添加字段

 alter table student add column gender varchar(2);

2)修改字段类型

alter table student modify columnremark varchar(100);

3)修改字段名称

alter table student change column remark remark2 varchar(100);

4)删除字段

alter table studentrename to student2;

3.管理数据

3.1 查看表的数据

SELECT * FROM student;

3.2 插入数据

插入所有列(所有列的值都要按顺序依次插入)

INSERT INTO studentVALUES(1,'rose',25,'广州人','女');

插入部分列(列的数据和值的顺序和数量一定保持一致!)

INSERT INTO student(id,NAME,age,remark2)VALUES(2,'jacky',27,'佛山人');

3.3 修改数据

修改所有

UPDATE studentSET gender='男';

修改某个某些条件的数据

UPDATE studentSET gender='女' WHERE id=2;

修改多个列(SET 列名=值,列名=值...)

UPDATE student SET age=28,remark2='韶关人' WHERE id=2;

3.4 删除数据

删除表的所有数据(用的较少)

注意:

1)只能删除表中的数据,不能影响表中的自增长约束

2)使用delete删除的数据,通过事务可以回滚。

3)后面带条件

DELETE FROM student;

删除部分

DELETE FROM student WHERE id=3;

-- 删除所有数据

-- 注意:

   --1)既能删除表的数据,也能够把表的子增长约束置为0.

   --2)使用truncate删除的数据,不能回滚

   --3)后面不能带条件

TRUNCATE TABLE student;

4.查询数据

4.1 查询所有列

SELECT * FROM student;

4.2 查询指定列

SELECT NAME,gender FROM student;

4.3 查询时给列指定别名(AS)

SELECT NAME AS '姓名',gender AS '性别' FROM student;(AS可以省略

SELECT NAME '姓名',gender '性别' FROM student;

4.4 合并列查询

添加servet,jsp成绩列

ALTER TABLE student ADD servlet INT,ADD jsp INT;

需求:查询每个学生的servlet和jsp的总成绩

注意:必须是数值类型

SELECT NAME '姓名',(servlet+jsp) '总成绩'  FROM student;

注意,与数值以外合并没有意义

SELECT NAME '姓名',(gender+jsp)  FROM student;

4.5 查询时添加常量列

在查询学生表时都带上一个班级列,内容为"java"

SELECT NAME '姓名',gender '性别',age '年龄','java' AS '班级'FROM student;

4.6 查询去除重复数据

统计学生都来自于哪里

SELECT DISTINCT remark2 FROM student;

SELECT DISTINCT(remark2) FROM student;

4.7 条件查询(where)

SELECT * FROM student;

1) 逻辑条件: and   or

查询id值为3,且性别为男的学生

SELECT * FROM student WHERE id=3 AND gender='男';

查询id为3,或性别为男的学生

SELECT * FROM student WHERE id=3 OR gender='男';

2)比较条件: >  < >=  <=  = between and

查询servlet分数大于80分的学生

SELECT * FROM student WHERE servlet>80;

查询jsp分数小于或等于80分的学生

SELECT * FROM student WHERE jsp<=80;

SELECT * FROM student WHERE jsp<80 ORjsp=80;

查询servlet成绩大于等于80,且小于等于88的学生

SELECT * FROM student WHERE servlet>=80 AND servlet<=88;

SELECT * FROM student WHERE servlet BETWEEN 80 AND88

3)判空条件:  =''  is null  <>''  is not null

UPDATE student SET remark2=""WHERE id=1;

UPDATE student SET remark2=NULL WHERE id=4;

查询remark字段为空的学生(包含null,也包含字符串)

null 和 空字符串的区别:

null:没有数据。判断null: is null,判断不为null: is not null

空字符:有数据,数据就是空字符串。判断空字符:=''; 判断不为空字符串:<>''

查询remark字段不为空的学生

SELECT * FROM student WHERE remark2 IS NOT NULL AND remark2<>'';

4) 模糊条件: like

 like后面跟上符合

 %: 表示任意多个字符(0-多个)

 _: 表示一个字符

查询姓张的学生

SELECT * FROM student WHERE NAME LIKE '张%';

查询姓名中包含'张'字的学生

SELECT * FROM student WHERE NAME LIKE '%张%';

查询姓张,且姓名只有两个字的学生

SELECT * FROM student WHERE NAME LIKE '张__';

查询以“DB_”开头且倒数第三个字符为i的课程的详情情况。

SELECT * FROM Course WHERE Cname LIKE‘DB\_%i__’ ESCAPE ’\ ’;

5)确定集合

IN用来查找属性值属于指定集合的元组

查询CS,MA,IS学生的姓名和性别。

SELECT Sname,Ssex FROM student WHERE sdept IN(‘CS’,‘MA’,‘IS’);


4.8 聚合查询

查询所有学生servlet的总分 (SUM: 求和函数)

SELECT SUM(servlet) FROM student;

查询所有学生servlet的平均分(AVG; 平均函数)

SELECT AVG(servlet) FROM student;

查询最高的servlet分数(MAX:最大值函数)

SELECT MAX(servlet) FROM student;

查询最低的servlet分数(MIN:最小值函数)

SELECT MIN(servlet) FROM student;

一共几个学生(COUNT: 统计数量函数)

SELECT COUNT(*) FROM student;

SELECT COUNT(id) FROM student;

效率会比count(*)效率稍高

注意: 聚合函数,会排除null值的数据


4.9 分页查询(limit)
 limit 起始行数,查询的行数
起始行数从0开始
学生共20条数据,每页显示5条,共4页
看第4页(第16到20条)的学生数据sql: select * from student limit 15,5;
查询第1,2条数据
SELECT * FROM student LIMIT 0,2;
查询第3,4条数据
SELECT * FROM student LIMIT 2,2;

4.10 查询后排序(order by)
desc: 降序。数值从大到小,字母z-a
asc: 升序。数值从小到大,字母a-z(默认情况下,按照插入的顺序排序
按照id的升序排序
SELECT * FROM student ORDER BY id ASC;
按照servlet成绩降序排序
SELECT * FROM student ORDER BY servlet DESC;
多个排序条件的情况:先按照前面的条件排序,当出现重复记录,再按照后面的条件排序
按照age升序,按照servlet成绩升序排序
SELECT * FROM student ORDER BY age ASC,servlet ASC;

4.11 分组查询

查询男女的数量各自多少

SELECT gender,COUNT(*) '人数' FROM student GROUP BY gender;

where条件必须放在group by分组之前,group by先将列的值分组,值相等的为一组,分组后聚集函数将作用于每一个组

4.12分组筛选

查询人数大于2的性别

having使用在group by分组之后的,对分组后的条件进行筛选

SELECT gender,COUNT(*) '人数' FROM student GROUP BY gender HAVING COUNT(*)>2;









1 0
原创粉丝点击