My SQL

作者: bajins | 来源:发表于2017-07-20 15:57 被阅读0次

    数据库是一个软件,包含服务端和客户端

    一般安装数据库指的是安装服务端(基本上所有数据库都会自带命令行客户端)

    学习客户端:MySQL Command Line

    Windows CMD

    启动服务:net start myaql

    停止服务:net stop mysql

    连接:mysql -uroot用户名 -p密码 -h主机地址(登录本机的就不用这个)

    退出:quit、exit、\q

    数据概念:

    发展:人工记录(纸质)

    软件      (office)

    数据库    (MySQL    Oracle    SQLServer)

    数据库分类:

    关系型数据库:

    MySQL (中小型,开源,Oracle)

    Oracle(大型,收费)

    SQLServer(中大型,收费,微软)

    SQLLinte(安卓包含)

    说明:一个数据库内装若干个表格,以表存储数据,

    关系指的是行和列的关系和表与表之间关系。

    非关系型数据库:

    NOSQL    ManggoDB

    如何查看当前数据库服务器下有哪些数据库:

    show databases;

    创建数据库

    create database 这里写自己取的名称;

    如何删除数据库:

    drop database 创建的数据库的名称;

    如何创建数据表:

    先找到需要创建数据表的数据库:

    use 数据库名称;

                  create table  表名(

                            编号 int,整数

                            名称 varchar(范围),字符串

                            价格 double,小数

                              日期  date,日期

                        );

    如何查看数据库中创建的数据表:

    show tables;

    删除数据表:

    drop table 数据表名称;

    查看数据表的结构:

    desc 数据表名称;

    如何添加数据到数据表中(1):

    insert into 数据表的名称  values(列1的值,列2的值,列3的值,列4的值,............);

    在需要添加数据的列中插入某列的数据(2):

    inert into 数据表名称(列名,列名,列名,列名.......) values(值,值,值,值);

    查看数据表中的数据:

    select * from 数据表的名称;

    数据类型:

    日期和时间类型:

    字符串类型:

    数据表的约束:

    一、主键约束:区分表中的数据行,唯一的,不能为空。

                              create table 数据表名称(

                                              id int primary key,

                                              name varchar(10)

                                          );

    二、非空约束:要求这一列插入数据时必须给值。

                                      create table 数据表名称(

                                                  id int primary key,

                                                    name varchar(20) not null

                                                );

    三、默认值:在某一列中设置默认值

                                      create table 数据表名称(

                                                        id int primary key,

                                                        name varchar(20) not null,

                                                        age int default '默认的字符'

                                                      );

    四、唯一约束:不允许重复的

                                          create table 数据表名称(

                                                      id int primary key,

                                                      name varchar(20) not null,

                                                      age int default '默认的字符',

                                                      tel varchar(15) unique

                                          );

    五、外键约束

    在主键列表中:constrain fk_主外键表名称_副外键表名称_外键列名称 foreign key(主外键列名称) references 副外键表名称(外键列名称)

    SQL语言(Struct query language)

    数据库方言:各个数据库特有的一种语法(不是特别多)。

    标准SQL:各个数据库通用的语法。

    分类:DDL(数据定义语言) create alter drop

               DML(操作语言) insert delete update

               DQL(数据查询语言) select

               DCL(数据控制语言)事务控制语言

    alter 修改表结构的语句:

    1、重命名表

          alter table 原数据表名 rename to 新数据表名;

    2、添加列

            alter table 数据表名 add 列名  类型 约束;

    3、删除列

           alter table 数据表名 drop 列名;

    4、修改列

           alter table 数据表名 change 旧列名 新列明 类型 约束;

    5、添加约束

    主键约束:

    alter table 主键数据表名 add constraint 主键名 primary key(主键列);

    非空约束:

    alter table 数据表名 change 列名 列名 数据类型 not null;

    alter table 数据表名 modify 列名 数据类型 not null;

    唯一约束:

    alter table 数据表名 modify 列名 数据类型 unique;

    默认值:

    alter table 数据表名 modify 列名 数据类型 ;

    外键约束:

    alter table 主键数据表名 add constraint fk_主键数据表名_副键数据表名_主键列名 foreign key(主外键列名称) references 副外键表名称(外键列名称);

    6、删除约束

    删除主键约束:

    alter table  主键数据表名 drop primary key;

    这样删除不彻底,还需要删除非空约束:

    alter table 数据表名 modify 列名 数据类型 null;

    删除外键约束:

    alter table 主键数据表名 drop foreign key fk_主键数据表名_副键数据表名_主键列名;

    删除唯一约束:

    alter table 主键数据表名 drop index 列名;

    插入语句:

    删除数据:

    delete from 数据表名 where 数据表列名 过滤条件

    过滤条件:

    运算符过滤:=、<、>、<=、>=、!=或者 <>

    关键字过滤:is null(为空)  in('关键字','关键字',.......)

    between 数值  and 数值

    模糊筛选: like '字符'

    _一个任意字符

    %任意多个任意字符

    逻辑运算符:

    and 两个条件同时满足,只能在一个单元(一行)内使用。

    or 满足任意一个条件

    注意过滤条件的使用:当多个条件时,需把同一个条件用()隔开

    修改数据:

    update 数据表名 set 列名='新值',列名='新值',.........where 列名 过滤条件;

    注:更改多个列时用,隔开

    查询数据:

    select 要查询的列 from 数据表名;

    给列取临时别名:

    select 列名 as '别名';

    select 列名 '列名';

    注意:在开发中尽量避免使用*,因为*效率低!

    排序:

    select 列名 from 表名 order by 列名 asc(升序);

    select 列名 from 表名 order by 列名 desc(降序);

    结果限定:

    select 列名 from 表名 limit 跳过的长度 ,要取出的长度;(如果没有跳过的长度,那就代表要跳过的长度为零)

    列运算:

    把查询结果进行数学运算,不会影响表中的数据,只是这次查询中生效

    用+ - * / %

    当有null时,和任何数据运算都为null

    ifnull(列名,0),取代原列名

    concat('字符',原列名),原列名前加字符

    分组,方便统计

    统计总数:count(列名,*)

    注意:null 不计入统计

    去除重复 distinct

    统计最大值:max(列)

    统计最小值:min(列)

    统计平均值:avg(列)

    统计和:sum(列)

    日期函数:

    获取年:year(列名)

    获取月:month(列名)

    获取号:day(列名)

    获取本地日期时间:now()

    分组:

    select 列名 from 表名 group by 分组列

    注:如果是用列名进行筛选在group by前用where进行条件筛选,如果是用统计函数进行筛选在group by后用having进行条件筛选!

    SQL语言执行顺序:

    from→where→group→select→having→order by→limit

    复合查询:

    子查询(嵌套查询)

    select 列名 from 表名 where  列名 运算符(select 列名 from 表名)

    处理多行子查询:子查询返回了多个值。

    any:任意

    >any:大于最小的那一个

    <any:小于最大的那一个

    all:全部

    >all:大于最大的那一个

    <all:小于最小的那一个

    in:集合

    连接查询:

    等值连接

    select 列名 from 表名 ,表名......where 连接条件;

    多表连接查询时尽量使用别名,以解决列名冲突;没有表名要使用表名.列名如图:

    外链接:

    左外连接:左外全部显示,右边无法匹配的显示null

    select 列名 from 表名 left join 表名 on 连接条件

    右外连接:右外全部显示,左边无法匹配的显示null

    select 列名 from 表名 right join 表名 on 连接条件

    全外连接:

    注:MySQL中不支持使用 ,只能用union,同时union all 合并结果不会去掉重复,使用union合并结果会去掉重复

    select 列名 from 表名 left join 表名 on 连接条件union select 列名 from 表名right join表名 on 连接条件

    数据库软件:navicat.11.2.16.premium_cs_x64.zip

    在数据库软件中查询多个外连接表:

    虚表:不是数据库物理存在的表,是把一个查询结果视为一张表使用,使用虚表要使用别名。

    视图表:

    创建视图表:

    create view 自定义表名 as 后面跟上自己所需要显示的表列和条件

    使用视图表:select * from 视图表名

    删除视图表:drop view 视图表名

    注意:可以修改视图表中的数据,但是不能删除视图表中的数据(使用连接查询的视图包含 join)不能添加视图表中的数据,原数据表里的数据发生变化会在视图表中变化体现出来。

    索引:

    相关文章

      网友评论

          本文标题:My SQL

          本文链接:https://www.haomeiwen.com/subject/hthdkxtx.html