数据库MySQL

作者: 清清子衿木子水心 | 来源:发表于2018-06-21 14:22 被阅读0次
    数据库分类

    |-- windowMySQL的安装和配置:

    .msi微软安装

    |--zip包压缩

    1、下载官网压缩包

    2、解压压缩包(不要C盘、不要有中文、不要有特殊字符)

    3、复制一个xx.ini,修改为my.ini

    4、修改my.ini

               datadir=mysql的主目录

                basedir=mysql的主目录/data

    5、将bin目录添加到path中去(此电脑右键属性--高级系统设置--环境变量--path--新建)

    6、以管理员的身份运行cmd,将路径切换到bin来(很重要)(搜索里写入cmd--命令提示符右键--以管理员身份运行)

    7、执行mysqld install 命令,安装注册mysql服务

         cd  D:\tools\mysql-5.5.41-winx64\bin

          d:

    8、启动服务(net start[stop|restart]  服务名称(eg:mysql))

    9、测试

     9、进入数据库

                        mysql -u用户名称 -p用户密码

                       如:mysql -uroot -proot

    |--exe msi

                         不教,下一步下一步

    |-- Linux

    |-- apt

              sudo apt [apt-get] install mysql-server mysql-client

              sudo apt [apt-get] install mysql-server

              sudo apt [apt-get] install mysql-client

              service mysql start[|stop|restart]

    |-- zip压缩包

    1、下载mysql的压缩包 .tar.gz

    2、解压压缩包

    tar -zxvf xxx.tar.gz

    3、bin配置path :两种方案,可以配置到系统配置文件中或者用户配置文件

    4、启动mysql

            mysqd install

            service mysql start/stop

    msyql的登录

              mysql -u(user) -p(password)-h(host主机)-P(port端口(默认端口是3306))

    mysql的退出 :exit quit \q ctrl+c

    常见的操作命令

      show databases; # 显示当前数据库管理系统中的所有数据库

               show databases like "%b%" # 模糊匹配符合规则的数据库

      use dbName; # 进入到某个数据库(DBName就是这个数据库名称)中。

      show tables; # 查看当前数据库下所有表

                 show tables like "%p%"; #模糊匹配符合规则的表

      desc(description) tableName; # 描述某张表的结构

      show create table tableName; # 显示创建表的sql

    标准sql的学习:

    sql(structured  query language)结构化查询语言

    在1986年 ANSI sql86

    在1987年 ISO sql87

      1989 ISO  sql89

    dml(database Manipulation language): 数据库操作语言

           show查    create增   drop删   alter改

    ddl(database difined language):数据定义语言

    CRUD

    insert

    update

    delete

    dql(database query language) 数据库查询语言

    dcl(database controller language):数据库控制语言

      grant(权限)

    invoke

    dba(database administrator)数据库管理员

    三个创建:表 数据库 视图

    四条语句:CRUD

    五种约束:主键、外键、唯一、非空、默认值

    ================================================================

    DBMS ===> db ===> table、view、index……

    如何创建一个数据库

    create database dbName [charset=utf8 ENGINE=InnoDB]

    # 创建一个数据库,名称是db_xx

    create database db_py1803;

    create database db_py1803 charset=utf8

    删除一个数据库

    drop database DBName (慎用)

    drop database db_py1803;

    如何创建一张表

    作业:请说明如下四种类型的不同之处?

    char nchar varchar nvarchar

    create table tableName(

                     id int, #

                    name varchar(50), liujianhong

                   name char(50),

                  age int,

                  nickname char(50)

    )

    drop table tableName;

    # 创建一张表 t_user

    create table t_user(

                  id int primary key (主键不能为空,不能重复)auto_increment, -- 主键 自动增长

                  username varchar(50) not null,

                  password varchar(100) not null,

                 age int default 18,

                 gender varchar(5) default (默认值)'nan',

                  nickname varchar(255) unique (无逗号) # unique 表示唯一约束

    )

    # CRUD 增删改查

    # c(create) r(Retrieve)u(update) d(delete)

    # 插入数据

    insert into tableName(字段1,字段2……,字段n) values(值1,值2……,值n)

    # 插入一条数据到t_user表里面来

    insert into t_user(id,username,password,age,gender,nickname)

    values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")

    insert into t_user(id,username,password,age,gender,nickname)

    values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")

    insert into t_user(id,username,password,age,gender,nickname)

    values(null,"liushuaige",'123456',16,'nan',"shuaigege")

    insert into t_user values(null,"liushuaiguo",'123456',16,'nan',"shuaige")

    insert into t_user(id,password,username,nickname)

    values(default,'123456',"liushuaige","ooo");

    truncate  t_user;

    # 简单的查询某张表

    select 字段1,字段2……,字段n from tableName;

    select id,username,gender,age,password,nickname from t_user;

    select * from t_user;

    select id,username from t_user;

    # 更新(修改)

    update tableName set 字段1=新值[,字段2=新值……字段n=新值] where 条件

    update t_user set username = 'liuouba';

    update t_user set username = 'liushuaige' where id = 1;

    update t_user set username = 'oubaliu' where id >3;

    #删除 delete

    delete from tableName where condition

    delete from t_user where id = 6


    配置mysql的远程登录:

    1、为什么配置远程登录?

    2、如何配置远程登录

    1、到mysql数据库 use mysql

    2、查询user  ==== select host,user from user;

    3、修改root用户

    update user set host='%' where user='root';(%表示通配所有,可以支持远程登录)

    4、修改/etc/mysql/mysql.conf.d/mysqld.cnf  

     进入vim中找到43行将bind-address 注释掉

    5、重启服务 sudo service mysql  restart;

    ===============================================================

    create table t_user(

                   id int primary key auto_increment,

                   name varchar(50) not null, # 不能为空

                   age int default 18, # 如果填入的不写,则默认填写18岁

                   gender varchar(10) default(默认) 'nan',

                   nickname varchar(50) unique, -- 不能重复

                  address char(50)

    )


    mysql数据类型

    整型 :int

    浮点型:float , decimal(7,2)#7表示总长度,2表示小数位数

    字符串:name varchar(30)  liujianhong  不超过30就占用本身的大小 (一般用于字符串长度不定时可以剩内存)

    name char(30)  字符串长度不超过30时,也占用30的位置 (一般用于长度确定的时候)

    文本类型:text


    日期:data(只能表示年月日) time (只能表示时分秒)datatime(年月日时分秒)now()当前日期 

    create table t_user(

                     id int primary key auto_increment,

                     name varchar(50) not null,

                     birthday datetime default '2018-06-22 00:00:00',

                     intro text

    );

    ====================================================================

    grant语言的使用

    grant all 权限 db_py05.* 这个库的所有表 ljh表示用户名称localhost表示地址 identified by 'ljhljh'表示修改密码为ljhljh 如果用户存在则修改,不存在则创建ljh

    grant all on db_py05.* to 'ljh'@'localhost' identified by 'ljhljh';

    grant all on *.* to 'root'@'%' identified by '123456';第一个*表示所有的库,第二个*表示所有的表

    ====================================================================

    CURD

    查询

    select 字段1,字段2,……,字段n from tableName [where condition]条件

    select  *  from  tableName;

    增加

    insert into tabelName(字段1,字段2,……,字段n) values(值1,值2,……,值n);

    insert into tabelName values(值1, 值2,……,值n); # 必须写全

    更新

    update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]

     删除

    delete from tableName  [where condition](如果不带条件,则表内容清空)

    # truncate 删除 慎用

    修改表的结构:alter

    alter table t_user update/change/modify type text;修改字段type的类型

    alter table t_user add type int;给表增加字段

    alter table t_user drop type;删除字段

    ===================================================================

    CRUD

    insert into tableName values();

    update tableName set  where condition;

    delete from tableName where condition;

    select * from tableName;

    select 字段1,字段2…… from tableName;

    mysqldump


    分页:

    当前页 pageNow 用户决定

    每页显示多少条 pageSize 程序员决定

    总有多少页 pageCount=allCount/pageSize 计算得到

    总有多少条记录 allCount 查询得到 select count(*) from tName;


    # 查询id为1的用户

    SELECT * FROM t_user WHERE id = 1;

    # 查询id大于1的用户

    select * FROM t_user WHERE id > 1;

    select * FROM t_user WHERE id < 5;

    select * FROM t_user WHERE id >= 3;

    select * FROM t_user WHERE id != 3;

    select * FROM t_user WHERE id <> 3;


    -- 查询年龄大于10并且姓名为王五的人的性别

    SELECT gender FROM t_user where age > 10 AND username = '王五';

    # 查询年龄大于等于20 或者性别是男的人的详情

    SELECT * FROM t_user WHERE age >= 20 OR gender = '男';


    # 查询性别为空

    # 注意:在sql中,判断为空,或者判断不为空,需要使用is,而不是等于符号

    null空和空字符串的区别

    SELECT * FROM t_user where gender is null;

    SELECT * FROM t_user where gender is not null;包含非空和空字符串


    # 查询所有人的年龄的和

    SELECT SUM(age) FROM t_user;

    # 找出年龄最大的那个哥们

    SELECT max(age) FROM t_user;

    # 找出年龄最大的那个姐们

    SELECT min(age) FROM t_user;

    # 求当前所有人的平均年龄

    SELECT avg(age) FROM t_user;


    # 共有多少人?

    SELECT count(*) FROM t_user;

    # 共有多少人?

    SELECT count(*) as counts FROM t_user;

    # 共有多少人?

    SELECT count(*) counts FROM t_user;


    # 年龄大于16 并且 年龄小于 20岁

    SELECT * FROM t_user where age >= 16 AND age <= 20;

    # 年龄大于16并且年龄小于 20岁

    SELECT * FROM t_user where age BETWEEN 16 AND 20;

    # 查询年龄为5 8 16 20 30 50的人

    SELECT * from t_user where age in (5,8,16,20,30,50);

    # 查询年龄为5 8 16 20 30 50的人

    SELECT * from t_user where age not in (5,8,16,20,30,50);


    # 模糊查询  like

    # 查询姓王的人

    SELECT * FROM t_user where username LIKE '王%'

    # 查询名称中第二个字是建的

    SELECT * FROM t_user where username LIKE '_建%'

    SELECT * FROM t_user where username LIKE '%哥%'

    SELECT * FROM t_user;


    # 排序

    -- 查询所有用户,默认使用年龄升序排列

    SELECT * FROM t_user order by age ;

    SELECT * FROM t_user where age > 10 order by age asc;

    SELECT * FROM t_user where age > 10 order by age desc;

    SELECT * FROM t_user where age > 10 order by age desc, id asc;


    # 分组

    # 统计当前男生有多少人,女生多少人

    SELECT count(gender) FROM t_user;

    SELECT gender,count(*) FROM t_user group by gender;

    SELECT age FROM t_user GROUP BY age;

    # 通过性别进行分组,得到组员多余3人的

    # having 必须是出现group by之后,它是对分组结果进行筛选

    SELECT gender,count(*) as counts FROM t_user group by gender having counts > 3;

    SELECT * FROM t_user LIMIT 5;前五个值

    SELECT * FROM t_user LIMIT 0,2;(0哪开始,id=1开始,2表示查两个)

    SELECT * FROM t_user LIMIT 2,2;

    SELECT * FROM t_user LIMIT 4,2;

    相关文章

      网友评论

        本文标题:数据库MySQL

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