mysql-安装、基本的操作命令

数据库的概述:

什么是数据库

        管理数据的一个文件系统,用sql语句操作

数据库的作用

       存储数据,数据仓库,带有访问的权限,不通的人可以有不同的操作

为什么要学习数据库

        生活所迫

常见的数据库:

        关系型数据库:

MySQL数据库:开源的免费的适合中小公司免费的数据库,被sun公司受够了,后台sun公司又被oracle公司收购了

mariadb:由mysql数据库创始人搞出来的,基本的命令和mysql一样

oracle数据库:甲骨文公司,收费,适合大型的电商企业

db2数据库:IBM公司thinkpad使用的,银行大多数采用db2

sqlServer数据库:windows里面,政府里面常用,大学教学,图像化页面比较好

 

        非关系型数据库: mongodb         redis:一般当做缓存用  

 

关系型数据库:

       主要用来描述实体与实体之间的关系,

       实体:就是表示实实在在的存在现实世界的事物,比如学校与学院,学生与班级,员工与部门

       E-R图:矩形表示实体,椭圆表示属性,菱形表示关系

 

Mysql数据库服务器:

       数据库服务器其实就是一台电脑,提供外界访问的端口号,根据不同的端口号来提供不同的服务

       我们通常所说的mysql数据库其实是管理数据库的软件。

 

mysql数据库的安装和卸载:

       卸载:

            打开控制面板,进行卸载

            卸载完之后去 C:\Program Files\MySQL\MySQL Server 5.5/my.ini 删除 文件,否则再安装的时候会出现错误

            然后再去C:\ProgramData\MySQL 删除这个目录下的MySQL文件,否则安装时候会出现错误

            如果都删除干净,重新安装的时候出现

             A windows service with the name Mysql already exists, please uninstall this service correctly or choose a diffreent                       name for the new service

             这个错误,解决办法: 点击这个链接看看

             https://blog.csdn.net/k_122/article/details/76620494

        安装:

          启动安装程序,直接点击下一步,知道没有下一步点击finish

          第一次finish之后启动配置服务

         然后配置,都选第一个,知道修改字符集选第二个,utf-8,之前的一步表示几个用户并发,选自定义改为20个,之后设置           root用户的密码,下面的勾选不要勾上,勾上之后其他电脑也能访问你的数据库,然后下一步,最后成功。

 

mysql的sql语句:

       SQL:Structure  Query Language  结构化查询语言

       DDL:数据库定义语言,定义数据库、数据表的结构:create(创建)、drop(删除)、alter(修改)

       DML:数据操纵语言,主要操控数据:insert(插入)delete(删)、update(改)

       DCL:数据控制语言,主要来定义访问权限、取消访问权限,安全设置:grant

       DQL:数据查询语言:select(查询)子句where from等

 

数据库的CRUD操作:

登录数据库服务器:mysql -uroot -p123456

创建数据库:

       create database 数据库的名字;

       create database hou;

       创建数据库的时候指定字符集:

       create database 数据库的名字 character set 字符集;

       create database hou character set utf8;

       

       create database hou character set utf8 collate 校队规则;

       校队规则:xiao

                         x=23232      i=3333      a=8989   o=2345

                         xiao=23232333389892345

 

查看数据库

        查看数据库定义的语句:

        show create database 数据库的名字;

        show create database hou;

        查看所有的数据库:

        show databases;

        information_schema    performation_schema   mysql :   约束规则的意思,存放了mysql的基础配置,不能动他       

  

修改数据库

       修改数据库的字符集:

       alert database 数据库的名字 character set 字符集;

       alter database hou character set gbk;

 

删除数据库

       drop database 数据库的名字;

       drop database hou;

 

其他数据库的操作命令

                   切换数据库:use 数据库的名字;

                   查看当前的数据库:select database();

        

表结构的CRUD操作:

创建表         

create table 表名(

               列名    列类型    约束,

               列名    列类型(长度)    约束    

        );

列的类型:
Java                sql
int                 int
char/String         char/varchar(长度)
                    char:固定长度   例如char(3),就直接给三个字符的空间
                    varchar:可变长度  例如varchar(3),根据你写的字符给定空间,但是最多为3个字符
float               float
double              double
boolean             boolean
date                date:        YYYY-MM-DD
                    time:        hh:mm:ss
                    datetime:    YYYY-MM-DD hh:mm:ss 默认为null
                    timestamp:   YYYY-MM-DD hh:mm:ss 默认当前的时间

列的约束:
    主键约束:primary key
    唯一约束:unique
    非空约束:not null


创建表:
分析实体:学生
属性:学生ID、姓名、性别、年龄
create table student(
    sid int primary key,
    name varchar(10),
    sex varchar(10),
    age int

);    

 

查看表

查看多有的表
show tables;

查看表的结构: //最重要,有关数据库结构的优化
desc 表名;

查看表的创建过程:
show create table 表名;

 

修改表

修改表的列:添加列(add)、修改列类型(modify)、修改列名(change)、删除列(drop),修改表名(rename)、修改表的字符集()

添加列:alter table 表名 add 新列名 新列的类型 列的约束;
        alter table student add tel varchar(20) not null;

修改列的类型:alter table 表名 modify 原列名 新的列类型 列约束;
        alter table student modify sex int;

修改列名:alter table 表名 change 原列名 新列名;
        alter table student change sex sexx;

删除列:alter table 表名 drop 列名;
        alter table student drop tel;

修改表名:rename table 表名 to 新表名
        rename table student to students;

修改表的字符集:alter table 表名 character set 字符集;
        alter table student character set utf8;

删除表

drop table 表名;

sql完成对表中数据的CRUD操作

插入数据       

insert into 表名(列名1,列名2,列名3,列名4) values(值1,值2,值3,值4);

insert into student(sid,name,sex,age) values(3,'zhangsan','男',18);

如果插入的是全列名的数据,表名后面的列名可以省略不写
insert into student values(3,'zhangsan','男',18);

如插入的是其中个别列的数据,表名后面的列名必须写
insert into student(sid,name) values(1,'lisi');

批量插入数据
insert into student(sid,name,sex,age) values
(4,'kk','女', 20),
(4,'kk','女', 20),
(4,'kk','女', 20),
(4,'kk','女', 20);


单条插入数据和批量插入数据的效率
批量插入识别的关键字少,效率高,但是如果一条出现问题,整个插入就不能进行
单条插入数据识别的关键字多,效率低,一条出现问题,但之前的数据也能插入

解决插入数据中文的乱码问题

https://www.cnblogs.com/linst/p/5865434.html

在创建表(相当于在数据库中建立表结构为数据库使用的字符集编码)的过程中,设置表的字符编码相当于在数据库服务             器中的设置了编码。

在cmd键入的字符相当于是gbk编码,相当于客户端client。

connection相当于连接数据库的字符集类型,相当于my.ini文件中的设置的类型。

临时解决方案:

        使用set names gbk 命令,相当于是高速服务器软件,我们在当前输入的是gbk编码,当关闭当前的窗口,再输入中                     文就会出现问题

        使用 show variables like 'character%' 来查询当前数库的所有的编码集。

永久解决方案:

        1、暂停mysql服务

        2、在mysql安装路径中找到C:\Program Files\MySQL\MySQL Server 5.5\my.ini 文件

        3、  [mysql]      //表示与客户端相关的字符集

                           default-character-set=utf8   改成   gbk编码

                   4、保存文件退出,重启mysql服务

 

 

 

删除数据

delete from 表名 [where 条件];

删除表中所有的数据
delete from student;

根据条件删除数据
delete from student where sid=5;

面试的时候问:delete删除数据 和 truncate删除数据有什么区别
    delete:   DML语言,是一条一条的删除数据
    truncate:  DDL语言,是先删除表的结构,然后再重建表
关于执行的时候,哪个效率高
    具体得看数据量的大小,如果数据量非常小的话,delete删除的效率高,
    如果数据量非常的大,truncate删除的效率高

更新数据

update 表名 set 列名=列的值,列名2=列的值 [where 条件];
update student set sname = 'jkjk' where sid=2;

如果参数是zai字符串,日期要加上单引号
如果没加where条件,将改变这一列全部的数据
update student set sname = 'jkjk';

查询数据

select [distinct] [*] [列名1,列名2] from 表名 [where 条件];

distinct:去除重复的数据

商品的分类:手机数码、鞋靴箱包
    1、分类的id
    2、分类的商品
    3、分类的描述
创建表
create table categroy(
    cid int primary key auto_increment,
    cname varchar(10),
    cdesc varchar(31)
);
插入数据
insert into categroy values(1,'手机数码','电子产品质量保证');
insert into categroy values(2,'鞋靴箱包','京南皮革厂倒闭了');
insert into categroy values(3,'香烟酒水','二锅头,小郎酒');
insert into categroy values(4,'酸奶饼干','娃哈哈,纯真');
insert into categroy values(5,'馋嘴零食','花生瓜子、八宝粥');

查询语句
select * from categroy;
select cname,cid from categroy;

所有商品
商品的id,商品的名称,商品的价格,生产日期,商品的分类
create table product(
    pid int primary key auto_increment,
    pname varchar(10),
    price double,
    pdate timestamp,
    con int
);
insert into product values(null,'小米',998,null,1);
insert into product values(null,'苹果',998,null,1);
insert into product values(null,'老村长',998,null,3);
insert into product values(null,'耐克',998,null,2);
insert into product values(null,'小熊饼',998,null,5);
insert into product values(null,'蒙牛',88,null,4);

简单查询
查询所有商品
select * from product;

查询商品的名称和价格
select pname,price from product;

别名查询,as关键字,as关键字可以省略,可用于多表查询
select p.pname,p.price from product as p;  //as可以省略

去掉重复的值
select distinct price from product;

select的运算查询,仅仅是在结果上进行了运算

select *,price*0.8 as 折后价列名 from product;     //as 折后价列名可以不写

条件查询 where 关键字
    关系运算符:>  >=  <  <=  =  !=  <>(不等于)

    逻辑运算符: and  or  not

    like:mohu模糊查询,匹配查询
        _:代表一个字符
        %:代表多个字符
        select * from pname like '%饼%';

    in:表示在某个范围内取值
        查询分类商品con 在 1 4 5 里面的商品
        select * from cno in(1,4,5); //相当于or

排序查询  order by
    desc:倒序
    asc:升序,默认升序排列

聚合函数
    sum() 求和
    avg() 求平均数
    count() 统计数量,统计所有的行数
    max() 最大值
    min() 最小值

分组-- group by
    将子句查询结果按一列或者多列进行分组
    先分组然后使用聚合函数,聚合函数经作用于每一组

    having 关键字作用于每一组,将满足条件的组进行筛选出来
    where 是作用于基本表或视图,用来筛选元祖



连接查询
    等值连接:where 表1.列名=表2.列名;   //列名必须是相同的

嵌套查询
    查询条件中再嵌套


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_44142032/article/details/88323608