MySQL基础
来源:互联网 发布:pdf批量转换jpg mac 编辑:程序博客网 时间:2024/06/11 20:07
1.管理数据库
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.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值的数据
limit 起始行数,查询的行数
学生共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)
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;- MySQL基础
- MySQL基础
- MySql基础
- MySQL基础
- mysql基础
- MYSQL基础
- MySQL基础
- mysql基础
- mysql基础
- MySQL 基础
- mysql基础
- mysql基础
- mysql 基础
- MySQL基础
- MySql 基础
- mysql基础
- mysql基础
- mysql基础
- Linux 工作队列之工作者线程创建
- unity碰撞检测和触发信息
- 程序设计B(2)实验一 :共用体练习
- 常见排序算法小结
- Mac下AS快捷键
- MySQL基础
- getRequestDispatcher()与sendRedirect()的区别
- Codeforces 778A String Game(二分)
- 【转】html5学习--js创建与追加元素
- hadoop第二次作业
- VB源程序总是提示加载错误,或者不能加载OCX控件解决方法
- 查看SQL语句信息(脚本sqlstat.sql)
- c++第二次作业
- java第一课数据类型