MySQL数据库(上)

文章目录

MySQL

1.MySQL基础

    (1).登录MySQL:(两种方法)

        ①在DOS命令中,mysql -u+用户名 -p+密码;(加号相当于紧挨着无空格)
        ②在DOS命令中,mysql -u+用户名 -p----->回车----->输入密码(可隐藏密码)

    (2).修改密码:(两种方法)

        ①在DOS命令中,进入mysql>界面后,输入以下指令:set password for 用户名@localhost=password(‘新密码在此处’);
        ②在DOS命令中,输入mysql -u+用户名 -p+旧密码 password 新密码

    (3).退出mysql:

输入:exit或者quit或者 \q

    (4).mysql的卸载:(易遗漏)

        ①Windows10系统中,打开文件点击选项进入文件夹选项,进入查看高级设置中找到显示隐藏文件、文件夹及驱动器,选中;
        ②点开mysql安装包卸载;
        ③进入安装目录卸载MySQL目录;
        ④进入C盘中隐藏的ProgramData目录找到MySQL,删除即可。
Tips:②、③、④三步缺一不可,走完三步走才算作删除干净。

2.SQL语言

(1)概念:

    结构化查询语言,属于高级语言,同为先编译后运行。

(2)编译与执行操作:

    DBMS(执行)–>SQL(操作)–>DB。

(3)数据库的组成:

    ①表(table)是数据库的基本组成单元;
    ②在表中,行叫 作
数据
,列叫作字段
    ③在表中,每个字段都有相应的字段名和数据类型等

(4)分类:

    ①DQL(DateQueryL):数据查询语言,例:select…;
    ②DDL(DataDefinition):数据定义语言,例:create,drop,alter…(对表结构的增删改);
    ③DML(DataManipulation):数据操作语言,例:insert,delete,update…(对表中数据的增删改);
    ④TCL(TransactionalControl):事务控制语言,例:commit(提交事务)…
    ⑤DCL(DataControl):数据控制语言,例:grant(授权),revoke(撤权)…;

(5)常用命令:(+处加空格)

    ①查看当前数据库:select database();
    ②查看mysql版本号:select version();
    ③结束一条语句:\c;
    ④查看创建表的语句:show create table+表名。

(6)导入数据的语句:(+处加空格)

    ①登录Mysql;
    ②查看全部数据库:show databases;
    ③创建数据库:create database+数据库名;
    ④使用数据库:use+数据库名;
    ⑤查看数据库中的表:show tables;
    ⑥初始化数据:source+绝对路径\数据库名.sql;
    ⑦查看表中的结构:desc+表名;(describe)
    ⑧查看表中的数据:select * from+表名;
    ⑨删除数据库:drop database+数据库名;

(7)查询语句(DQL语句):

<1>.简单查询:
①简单查询语法格式:

    select+字段名1,字段名2,…+from+表名;

②字段重命名:

select
        字段名1 (as)+重命名,字段名2 (as)+重命名
from
        表名

③查询所有数据:

    select * from+表名;
Tips:使用*的缺点有:    ①效率低;②可读性差。

④查询结果的去重:

select
        distinct+字段名
from
        表名;

Tips:distinct关键字只能出现在字段最前面。

<2>.条件查询:
①条件查询语法格式:

select
        字段1,字段2…
from
        表名
where
        条件;

Tips:执行顺序from—>where—>select。

②查询介于两数之间的表达:


(例如,查xxx字段在1100-3000之间的数据)
where
        xxx>=1100 and xxx<=3000;

或者⬇
where
        xxx between 1100 and 3000;

Tips:between … and …语句前后都为闭区间。

③某字段的定点查询or/in:


(例如,查xxx字段等于‘A’或者等于’B’的数据)
where
        xxx =‘A’ or xxx =‘B’;

或者⬇
where
        xxx in (‘A’,‘B’);

Tips:and的优先级大于or
        in前可加not表示否定。

④模糊查询like:


(例如,查xxx字段以‘a’开头的数据)
where
        xxx like 'a%'

Tips:’%‘代表任意多个字符,’_'代表任意一个字符。

⑤排序order by:


(例如对xxx字段进行排序)
order by
        字段名 by+(asc/desc);

Tips:默认升序排列;
        by后面的asc代表升序,desc代表降序。
        当同时对多个字段进行排序时,前字段相同时才会比较后字段。

<3>.分组查询:
①定义:

        按照某个或某些字段进行分组;

②语法格式:

select+分组函数 from+表名 (where+条件) group by+字段xxx having+条件。

③group by与having:

        A.有分组参与的查询各语句执行顺序:
from找表->where初过滤->group by分组->having过滤->select查找->order by排序
        B.一条语句中有group by 时,select后仅能跟分组函数参与分组的字段
        C.调用avg(xxx)函数时,不能使用where,会改变平均值,使用having;
        D.where后不能跟分组函数但having后可以。(执行顺序推论)

④分组函数:

        A.count(字段xxx);        //对字段进行计数(忽略null);
        B.sum(字段xxx);        //对字段数据求和(忽略null);
        C.max(字段xxx);        //求字段的最大值
        D.min(字段xxx);        //求字段的最小值
        E.avg(字段xxx);        //求字段的平均值

⑤单行处理函数:

        A.ifnull(字段xxx,0);        //若xxx字段为NULL时,被当作0处理;
        B.count(*);                     //统计总记录条数

<4>.连接查询:
①笛卡尔积现象:

两张表连接查询时,无条件限制,查询结果条数是两表条数乘积;

Tips:笛卡尔积现象使查询效率降低,where后设置筛选条件可避免该现象;

②表的别名法连接查询:

select
        表别名1.字段名1,表别名2.字段名2…
from
        表名1 表别名1,表名2 表别名2;

Tips:起别名的方法提高了程序执行效率且可读性高。

③内连接:
A.等值连接:条件1是等值关系;

语法格式:

select
        字段1,字段2…
from
        表名1
(innner) join
        表名2
on
        条件1
where
        条件2;

B.非等值连接:条件是不等值关系;

语法格式:

与等值连接相似,条件on处使用非等值语句即可,比如between…and…等;

C.自连接:一张表看作两张,我连我自己;

同分为等值与非等值连接;

实例:员工的领导表和领导的员工表。

select        //一样的表的不同别名
        e.name,m.name
from        //连接员工表e与m
        employee e
join
        employee m
on        //设置条件e表的领导编号等于m表的员工编号
        e.managerNo = m.employeeNo;

④外连接:
A.左连接:左边的表是主表;

语法格式:

select
        字段
from
        表名1
left (outer) join
        表名2
on
        条件;

B.右连接:右边的表是主表;

语法格式:

与左连接语法格式相似,将left关键字改为right即可。

⑤外内连接的区别:

        ①内连接两表平等,无主副之分;
        ②外连接分主副表,主要查询主表数据,若副表无与之匹配的数据,自动模拟为NULL;
        ③主表的数据无条件全部查出。(比如,领导King的领导名被模拟为NULL)

⑥全连接:左右两表均为主表;
<5>.三张表连接进行查询:

语法规则:

select
        字段1,字段2,…
from
        表名1
(left/right) join
        表名2
on
        条件
(left/right) join
        表名3
on
        条件;

<6>.子查询:select语句嵌套,内部的select;

例如:

select
        employeeName,salary
from
        employee
where
        salary>(select min(salary) from employee);

Tips:a.从内而外一层一层看,将子查询结果当作一张临时表。
        b.子查询嵌套的select只能返回一条,多于一条会报错。

<7>.union关键字:连接两条查询语句

例如:

select
        employeeName,job
from
        employee
where
        job = ‘manager’ or job = ‘salesman’;

可用union关键字改写为:

select
        employeeName,job
from
        employee
where
        job = ‘manager’
union
select
        employeeName,job
from
        employee
where
        job = ‘salesman’;

Tips:
        a.union有着连接两条查询语句的作用,效率更高,克服笛卡尔积现象;
        b.union使用时必须保证两个结果列数相同

<8>.limit关键字:取出一部分结果

语法格式:

limit         //startIndex是起始下标,length是长度;
        startIndex,length;
②limit        
//numble是取前n个查询结果;
        numble;

Tips:limit在“order by”之后执行。

<9>.关于查询语句关键字执行顺序汇总:

语法规则:

select
        字段名,…
from
        表名
where
        条件
group by
        字段名
having
        条件
order by
        字段名 (asc/desc)
limit
        过滤参数

执行顺序:

from找表->
where初筛->
group by分组->
having细筛->
select查找->
order by排序->
limit过滤。

(8)表的相关语句:

<1>.MySQL中的数据类型:
①字符串类:

varchar(10)
动态分配存储空间,节省空间;(姓名字段)

char(10)
定长字符串,分配速度快;(性别字段)

最长可储存255位。

②整型数类:

int
常规整型类,等同于java中的int;
bigint
长整型,等同于java中的long;

最长可储存11位。

③浮点型类:

float
常规浮点型,等同于java中的float;
double
长浮点型,等同于java中的double;

④日期类:

date
短日期类型,存储年月日信息;
datetime
长日期类型,存储年月日时分秒信息;

<2>.表的创建(DDL语句):

语法格式:

create table 表名(字段名 数据类型(default ‘m’),字段名 数据类型,… );

Tips:①表名的命名规范:以t_或者tbl_开始,比如t_students;
        ②default ‘m’作用为指定字段默认值为’m’。

<3>.表的删除:

语法格式:

①drop table 表名;
表不存在时会报错;
②drop table if exists 表名;
不会报错。

<4>.表中数据插入(DML语句):
①常规插入语法格式:

insert into 表名(字段名1,字段名2,…) values(值1,值2,…),(值1,值2,…),…;

Tips:
        A.insert语句一旦执行,必然多一条记录,未赋值元素为NULL;
        B.字段名在传入所有值情况下字段名可省略。

②日期的插入:
A.MySQL中的日期格式:

%Y        %m        %d        %h        %i        %s
年            月          日          时        分        秒
date默认格式:        %Y-%m-%d;
datetime默认格式:        %Y-%m-%d-%h-%i-%s;

B.字符串日期转换为日期类型函数:

str_to_date(‘字符串日期’,‘日期格式’);
//将字符串日期varchar类型转换为date类型;

Tips:当字符串为‘%Y-%m-%d’格式时,自动转换为date类型;

C.日期格式化函数:

date_format(日期类型数据,‘日期格式’);
//将日期格式转换为所需类型的字符串。

D.获取当前时间函数:

now();
//获得到当前时间的datetime类型数据。

<5>.表中数据修改(DML语句):

语法格式:

update 表名 set 字段名1=值1,字段名2=值2,…where 条件;
//必须加where后的条件,否则会修改字段所有行。

<6>.表中数据删除:
①delete删除语法格式:(DML语句)

delete from 表名 where 条件;
//切记加where后条件,否则会全部删除。
数据被删除,但存储空间不会被释放;
删除效率较低,但是可回滚

②truncate删除语法格式:(DDL语句)

truncate table 表名;
完全删除,删除效率高,但数据不可回滚。

<7>.表的复制:
①全部复制语法格式:

create table 新表名 as select * from 拷贝表名;
//将拷贝表名中的所有数据拷贝到新表中。

②部分复制语法格式:

create table 新表名 as select 字段名1,字段名2,… from 拷贝表名 where 条件;
//将拷贝表面的满足条件的某字段数据复制到新表中。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值