MySQL基础(一)

一、分类

1、DDL(Data Definition Language):数据库定义语言,用来定义数据库对象:表、列、库等。
2、DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。
3、DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
4、DQL(Data Query Language):数据查询语言,用来查询记录(记录)。

二、DDL

1、基本操作:

1.1、 查看所有数据库名称:SHOW DATABASES;

1.2、 切换数据库:USE mydb;,切换到mydb数据库。

2、操作数据库

2.1、 创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb;
如果写CREATE DATABASE mydb,会创建一个名为mydb的数据库,但如果这个数据库已经存在,则会报错,为了避免错误,则在创建的时候加上[IF NOT EXISTS],在不存在的时候创建该库。

2.2、 删除数据库:DROP DATABASE [IF EXISTS] mydb;IF EXISTS代表如果存在,意为如果数据库存在,则删除该数据库,如果不写IF EXISTS,在数据库不存在的是偶删除,会报错。

2.3、修改数据库编码:ALTER DATABASE mydb CHARACTER SET UTF8;修改数据库mydb的编码为utf-8,注意:在MySQL中所有的utf-8编码都不能使用中间的“-”。

3、数据类型

MYSQL与Java一样,也有数据类型。MySQL中数据类型主要应用在列上。

常用类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
decimal:浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题;
char:固定长度字符串类型;
varchar:可变长度字符串类型;
text:字符串类型;
blob:字节类型;
date:日期类型,格式为yyyy-MM-dd;
time:时间类型,格式为hh:mm:ss;
timestamp:时间戳类型;

4、操作表

4.1、操作表
(1)、创建表:
CREATE TABLE 表名(
列名 列类型,
列名 列类型
........
);
(2)、查看当前数据库中所有表名称:SHOW TABLES;
(3)、查看指定表的创建语句:SHOW CREATE TABLE emp,查看emp表的创建语句;
(4)、查看表结构:DESC emp; 查看emp表结构;
(5)、删除表:DROP TABLE emp,删除emp表;
(6)、修改表:
修改之添加列:给stu表添加classname列:alter table stu add(classname varchar(100));
修改之修改列类型:修改stu表的gender列类型为CHAR(2):ALTER TABLE stu MODIFY gender CHAR(2);
修改之修改列名:修改stu表的gender为sex:ALTER TABLE stu change gender sex CHAR(2);
修改之删除列:删除stu表的classname列:ALTER TABLE stu DROP classname;
修改之修改表名称:修改stu表名称为student:ALTER TABLE stu RENAME TO student;

三、DML

1、插入数据

INSERT INTO 表名(列名1,列名2,....)VALUES(值1,值2);

INSERT INTO 表名 VALUES(值1,值2);这个语句因为没有指定要插入的列,所以插入数据的时候要按建表时的顺序插入;

2、修改数据

update 表名 set 列名1=值1,.....,列名n=值n WHERE 条件;

3、删除数据

delete FROM 表名 WHERE 条件;

TRUNCATE TABLE 表名;虽然TRUNCATE和DELETE都可以删除表的所有记录,但原理不同。DELETE的效率没有TRUNCATE高; TRUNCATE其实属于DDL语句,它是先DROP TABLE,在CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,DELETE删除的记录可以回滚。

四、DQL

DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集到客户端。
语法:
SELECT selection_list 要查询的列名称
FROM table_list 要查询的表名称
WHERE condition 分组后的行条件
GROUP BY grouping_columns 对结果分组
HAVING condition 分组后的行条件
ORDER BY sorting_columns 对结果分组
LIMIT offset_start,row_count 对结果限定

1、基础查询

1.1、查询stu表的所有列: SELECT *FROM stu;
1.2、查询stu表的指定列(sid,sname,age):SELECT sid,sname,age FROM stu;

2、条件查询

2.1、条件查询介绍
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:=、!=、<>、<、<=、>、>=;
BETWEEN...AND; IN(set);IS NULL; AND; OR; NOT
2.2、查询gender为女,并且年龄为50的记录
SELECT *FROM stu WHERE gender=‘fename’ OR sname age=50;
2.3、查询学号不是S_1001,S_1002,S_1003的及学生记录
SELECT *FROM stu WHERE sid IN(‘S_1001’,‘S_1002’,‘S_1003’);
2.4、查询年龄为null的记录
SELECT *FROM stu WHERE age IS NULL;

3、模糊查询

当想查询姓名中包含a字母的学生时就需要使用模糊查询,模糊查询关键字LIKE。
查询姓名中第二个字母为a的学生记录:SELETE *FROM stu WHERE sname LIKE '_i%';
一个横线代表以为,”%“代表后面位数不限。

4、字段控制查询

4.1、去除重复记录,如果两行或两行以上的数据完全相同,就需要去除重复记录,关键字DISTINCT。
SELECT DISTINCT sal FROM emp;
4.2、查看雇员的月薪sal与佣金comm之和:因为定义的时候把它们定义成立数值类型,所以可以直接做加运算,如果sal或comm中有一个字段不是数据类型,就会出错
SELECT *,sal + comm FROM emp;
因为有可能出现sal或comm为null的情况,任何东西与null相加结果还是null,这时就需要将记录是null的之转换一下,使用 IFNULL(转换前的列名,需要替换null的数值),例SELECT *,sal + IFNULL(comm,0) FROM emp;
4.3、给列名添加别名:按上文4.2所写,搜索出来的的月薪与佣金之和的列名为:
sal + IFNULL(comm,0),看起来很别扭,这时可以给它起一个别名(如total):
SELECT *,sal + IFNULL(comm,0)AS total FROM emp;同时AS可省略(起别名的时候):SELECT *,sal + IFNULL(comm,0)total FROM emp;

5、排序

5.1、查询stu表的所有记录,按年龄sage升序排序
SELECT *
FROM
ORDER BY sage ASC;
或者:
SELECT *
FROM
ORDER BY sage ;
ASC代表升序,默认为升序

5.2、查询stu表的所有记录,按年龄sage降序排序
SELECT *
FROM
ORDER BY sage DESC;
DESC代表降序

6、聚合函数

聚合函数是用来做纵向运算的函数:有COUNT()、MAX()、MIN()、SUM()、AVG();
6.1、COUNT:统计指定列不为null的记录行数
例1:查询emp表中的记录数:
SELECT COUNT(*)FROM emp;
例2:查询emp表中有佣金(comm)的人数:
SELECT COUNT(comm)FROM emp;
注意:例1是统计所有非空行的记录的总数,例二中因为指定了是comm列,所以只统计comm列非NULL的行数
6.2、SUM和AVG
sum是计算指定列的数值和,如果指定列的类型不是数值类型,那么计算结果为0;
avg是计算指定列的平均值,如果指定列的类型不是数值类型,那么计算结果为0;
两者都是纵向的
例1:查询emp表所有员工月薪(sal)和及平均佣金(comm)
SELECT SUM(sal),AVG(comm)FROM emp;

7、分组查询

使用分组查询时需要使用BROUP BY子句,以GROUP BY后面的列来进行分组
7.1、例:查询每个部门的部门编号(deptno)以及每个部门工资(sal)大于1500的人数
SELECT deptno,COUNT(*)
FROM emp
WHERE sal>1500
GROUP BY deptno;
7.2、HAVING子句
例:查询工资(sal)总和大于9000的部门编号以及工资和:
SELECT deptno,SUN(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal)>9000;
注意:WHERE是对分组前记录的条件查询,如果这行记录没有满足WHERE子句的条件,这行记录就不会参加分组,而HAVING是对分组后数据的约束,本例首先对部门进行分组,再找出工资和大于9000的部门,所以用HAVING

8、LIMIT

LIMIT用来限定查询结果的起始行,以及总行数
例:从emp表中查询5行记录,起始行为0
SELECT *FROM emp LIMIT 0,5;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,681评论 0 2
  • 数据库概述: 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用...
    字节码阅读 519评论 0 0
  • DQL数据查询语言 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。 查询返回的结果集是一...
    Michael_林阅读 667评论 0 1
  • SQL ==SQLPLUS== DML(Data Manipulation Language,数据操作语言)---...
    蝌蚪1573阅读 571评论 0 4
  • 大学毕业两年半了。 两年半后似乎我的一切都没变,似乎又变得面目全非。我或许还是我,也或许已经是另一个全新的人了。 ...
    乔祎阅读 67评论 0 0