MySQL学习小结

来源:互联网 发布:ubuntu 稳定版本 编辑:程序博客网 时间:2024/05/01 06:39


在cmd命令行下输入 mysql -u root -p
进入到MySQL数据库登录界面
-u 说明输入用户名
-p 说明需要输入密码

SQL语句默认以分号结尾,只有识别到;就认为语句已经结束
1.显示当前所有的数据库    show databases;
information_schema
mysql
test
information_schema和mysql不可以更改,因为放置的是数据的的配置信息和编码方式
test可以随便更改,test只是数据库的是一个实例

所谓安装数据库服务器,只是在机器上装了一个数据库管理程序。
这个管理程序可以管理多个数据库
一个数据库可以有多个用户
每个用户都可以以在数据库中创建自己的表结构
在数据库中,数据存在表中
在数据库中,表示意行列的形式存在的
表中定义表存储的内容的那一行,被称为表头
表中的一行称之为一条记录
表中的一条记录对应一个Java对象的数据
表中的一列对应一个Java对象的一种属性


DDL data Definition Language
作用:用于描述数据库中存储的现实世界实体的性质。即创建数据库和表结构。
常用关键字create alter drop truncate

查看数据库支持的字符集
show character set;
查看某种字符集的校验规则
show collation like 'utf8%';
在MySQL数据库中utf-8的写法为utf8


SQL语句的定义:数据库的关键字用全部大写的形式 非关键字用小写的形式
MySQL语句的大小写问题:在飞Windows系统中,严格区分大小写
    在Windows下,不区分大小写
创建数据库
CREATE DATABASE 数据库名;
在MySQL中查看一般都用show ;
查看某个数据库的字符编码
SHOW CREATE DATABASE 数据库名
创建数据库时,如果没有有指定数据库的编码集,默认使用数据库软件安装时指定的编码
创建数据库时指定数据库的编码集
CREATE DATABASE 数据库名 CHARACTER SET 编码集
CREATE DATABASE test1 CHARACTER SET gbk;
create database day15 defualt character set utf8;
修改数据库的编码集
ALTER DATABASE 数据库名      CHARACTER SET 编码集;

删除数据库 DROP 数据库名;
------------------------------------


查看当前选择数据库
select database();
指定使用的数据库
USE 数据库名
指定数据库以后,创建的表,都属于这个数据库

在数据库中创建表结构
CREATE TABLE 表明(
 字段  datatype(指定的数据类型),
 字段  datatype,
 字段  datatype
)character set 字符集 collate 校验规则
在创建表结构时,如果不指定字符集,则使用数据库默认的字符集

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

查看表结构:
desc 表名


删除表结构
drop table 表名;


CREATE TABLE student(
id INT,
name VARCHAR(40),
gender VARCHAR(4),
age INT);

在表中增加数据
方式一:全值插入,给所有的字段赋值,依次按顺序插入,不能少或者多。
 INSERT INTO 表名 VALUES(值集);
 值与值之间用英文逗号,分割,整数类型的数值直接写,字符串类型的数值用英文单引''号引起来
 插入的值必须是对应表的结构的,且按照顺序插入
INSERT INTO student VALUES(1,'aa','man',13);
方式二:使用列名插入
 INSERT INTO student(列名,列名,……)VALUE (值,值,……);
 列和值的类型需要匹配
 INSERT INTO student(id,NAME)VALUE (3,'王五');
 
查询数据
1.查询表中的所有数据
 SELECT * FROM 表名;
 SELECT * FROM student;
2.查询表中的某些列的值
 SELECT 字段,字段 FROM 表名;
 SELECT id,name FROM student;
3.查询时可以指定别名,指定别名后,该列在显示时将以别名显示出来
 SELECT 列名 AS 别名,列名 AS 别名,…… FROM 表名;
 SELECT id AS '编号',NAME AS '姓名' FROM student;
 表也可以起别名,表的别名不能用字符串表示
 SELECT 表的别名.列名 AS 别名,表的别名.列名 AS 别名,…… FROM 表名 AS s;
 SELECT s.id AS '编号',s.NAME AS '姓名' FROM student AS s;
 表的别名主要在多表查询时使用,单表查询时,表的别名没有意义
4.查询时添加一个常量列,常量列名也可以使用别名
-- 在查询表示,添加一个常量列,说明学生所属的班级
 SELECT 列名,列名,列名, 要增加的常量字符串列名 FROM 表名;
 SELECT id,NAME,age, 'java基础学习班' FROM student;
5.查询时合并列  合并的列用'+'连接 语法(列名+列名)
 合并列只能合并数值类型的字段,非数值类型的列不能合并
 数值型和非数值型合并,最终只会显示数值型的值
 -- 给student表添加数学和语文成绩列
 给表添加多个列时,可以同时添加。
 ALTER TABLE 表名 ADD 列名 数据类型,ADD 列名 数据类型,……;
 ALTER TABLE student ADD yuwen INT,ADD shuxue INT;
 -- 在student表中加上这两科的成绩
 UPDATE student SET yuwen=80,shuxue =15 WHERE id=1;
 UPDATE student SET yuwen=80,shuxue =15 WHERE id=1;
 UPDATE student SET yuwen=70,shuxue =80 WHERE id=2;
 UPDATE student SET yuwen=80,shuxue =90 WHERE id=4;
 -- 查询每个学生的语文和数学的总成绩
 -- 合并列合并的是这两列的值 可以给合并列起一个别名。
 SELECT 列名,列名 ,(列名+列名) AS 别名 FROM 表名;
 SELECT id,NAME ,(yuwen+shuxue) AS '总成绩' FROM student;
6.去除重复的列
 需求:查询学生的性别
 SELECT DISTINCT 列名 FROM 表名;
 SELECT DISTINCT gender FROM student;
 SELECT DISTINCT(列名) FROM 表名;
 SELECT DISTINCT(gender) FROM student;
 
 在表中加入地址
 ALTER TABLE student ADD address VARCHAR(60);
 UPDATE  student SET address='云南曲靖' WHERE id=1;
 UPDATE  student SET address='云南曲靖' WHERE id=2;
 UPDATE  student SET address='云南昆明' WHERE id=4;
 查寻学生所在地区:去除重复
 SELECT DISTINCT(address) FROM student;
 
7.条件查询 关键字where
 7.1逻辑条件  关键字 and(相当于与)   or(相当于或)
  -- 需求:查询id为2,且姓名为李四的学生
  --  两个或者两个以上的查询条件,必须用逻辑连接词
  -- 对于没有具体信息要求的,查询项默认使用*
  SELECT * FROM student  WHERE id=2 AND NAME='李四';
  
  -- 需求:查询id为1,或者姓名为李四的学生
  SELECT * FROM student  WHERE id=1 OR NAME='李四';
 7.2比较条件: >(大于) <(小于) >=(大于等于) <=(小于等于) <>(不等于)
  between  and 在什么之间
  -- 查询语文成绩大于70分的学生
  SELECT * FROM student WHERE yuwen>70;
  -- 查询语文成绩大于等于70,且小于等于八十十分的学生
  SELECT * FROM student WHERE yuwen>=70 AND yuwen<=80 ;
  -- 相当于between  and等价于  小于等于 ---大于等于---
  SELECT * FROM student WHERE yuwen BETWEEN 70 AND 80;
  -- 查询语文成绩不等于80分的学生
  SELECT * FROM student WHERE yuwen <>80;
  -- 查询语文成绩小于80分的学生
  SELECT * FROM student WHERE yuwen<80;  
  
 7.3判空条件
  判断null  is null /is not null
  判断""   =''或者是<>''
  -- 查询地址为空的学生
   null表示没有值,空字符串是有值的,只是之唯恐
  -- 插入null并不表示插入的值是空,只有(NULL)才是空
  INSERT INTO student VALUES(3,'张的海','男',25,74,98,'(NULL)');
  INSERT INTO student VALUES(5,'小五','女',25,55,98,'');
  SELECT * FROM student;
  -- 查询地址为空的学生
  SELECT * FROM student WHERE address IS NOT NULL;
  SELECT * FROM student WHERE address IS NULL;
  SELECT * FROM student WHERE address ='';
  SELECT * FROM student WHERE address <>'';
  SELECT * FROM student WHERE address IS NULL OR address ='' ;
   
 7.4模糊条件 关键字 like like后面的条件后面经常加上%
 %表示匹配任意字符
 _表示匹配一个字符, _ 可以同时使用多个
  -- 查询所有云南的学生
  SELECT * FROM student WHERE address LIKE '云南%';
  
 8.聚合查询
 使用聚合函数的查询称为聚合查询
 常用的聚合函数有:
 sum(),求和
 查询所有学生的语文的总成绩
 SELECT SUM(yuwen) AS '总成绩' FROM student;
 avg(),求平均数
 查询所有学生的语文的平均分
 SELECT AVG(yuwen) AS '平均分' FROM student;
 max(),求最大值
 查询所有学生的语文的最高分
 SELECT MAX(yuwen) AS '最高分' FROM student;
 min(),求最小值
 查询所有学生的语文的最低分
 SELECT MIN(yuwen) AS '最低分' FROM student;
 count(); 统计某个字段里面有多少值。
 该函数会排出空值NULL,统计多个字段时,会返回其中的最大值。
 SELECT COUNT(字段或者*)FROM student;

9.分页查询   关键字limit 起始行 ,要查的行数,即查询几行
 起始行从0开始。
 -- 查询出第一和第二条的记录
 SELECT * FROM student LIMIT 0,2;
 分页查询的关键点:当前所在页面是第几页,每页显示多少条记录
 在分页查询中查询当前页的数据的失去了语句
 SELECT * FROM 表名 LIMIT (当前页-1)*每页显示的条数,每页显示的条数
 
10.排序查询
 默认情况下按照插入式时的顺序排序
 语法:order by 字段 asc/desc
 asc:正序排列,如果是数值,则按照递增的方式排序,如果是字母,按照自然属性排序a-z
 desc:倒序排序 ,如果是数值,则按照递减的方式排序,如果是字母,按照z-a排序
 如果有相同数值,会按照默认方式排序,即插入时的顺序排列相同的数值
 SELECT * FROM student ORDER BY age ASC ;
 SELECT * FROM student ORDER BY age DESC ;
 SELECT * FROM student ORDER BY age; 不写排序关键字时,按照升序排序
 当有多个排序条件时 排序条件用引文都好隔开
 如果第一个条件有相同数值,按照第二个条件进行排序,依次类推
 
11.分组排序   关键字 group by
 需求查询男女同学各自的人数
 第一步,按照性别分组
 SELECT gender FROM student GROUP BY gender;
 第二部统计每个分组的人数
 SELECT gender,count(*) FROM student GROUP BY gender;
 一旦有分组,count()统计的就是分组里面各自的人数
 分组之前的条件筛选用where。 分组之后,只能使用having语句来进行条件筛选。
 



 
修改表中的数据
 UPDATE 表名 SET 字段名=要修改的值;
 表中所有的数据的该字段的值都会被修改
 UPDATE student SET id=2;
 更多的只是修改表中符合某一个条件的字段的值
 UPDATE 表名 SET 字段名=要修改的值,字段名=要修改的值,…… WHERE 条件;
 UPDATE student SET id=1 WHERE NAME='张三';
 
 
OOD  面向对象设计
OOP  面向对象编程
OOAD 面向对象分析与设计

删除表中的数据
 1.删除表中的所有数据
 DELETE FROM 表名;
 DELETE FROM student;
 2.删除表中符合某一条件的数据
 DELETE FROM 表名 WHERE 条件;
 DELETE FROM student WHERE name='aa';
 3.删除表中的所有数据
 TRUNCATE TABLE 表名;
 TRUNCATE TABLE student;
  delete可以删除表中的数据,但是不能删除表中的约束
  truncate可以删除表中的数据和约束
 


0 0