zoukankan      html  css  js  c++  java
  • MYSQL 基础

    http://www.cnblogs.com/wupeiqi/articles/5713315.html

    http://www.cnblogs.com/wupeiqi/articles/5713323.html

    http://www.cnblogs.com/wupeiqi/articles/5729934.html

    http://www.cnblogs.com/wupeiqi/articles/5716963.html

    一、数据库管理系统DBMS
    软件

    bin
    config
    db (保存数据)
    - admin
    - 123asdfasd.txt {用户名, 密码,类型...}
    - 123asdfasdb.txt{用户名, 密码,类型...}
    - course
    - school
    src

    写程序:
    a. 数据库在本地
    1、找到目录
    2、添加数据
    b. 数据库在远程
    1、socket连接上远程机器
    2、socket发送{命令} # add|asdfasdfadf
    做些什么????
    a.
    A,程序
    程序,socket客户端
    B,数据
    socket服务端
    C,制作一套规则
    add|阿德法撒旦发射点发
    delete|asdfasdf
    ....
    D,socket客户端和服务端用户认证,授权,限制

    有人搞了一套软件:

    socket客户端
    B,数据
    socket服务端
    C,制作一套规则
    add|阿德法撒旦发射点发
    delete|asdfasdf
    ....
    D,socket客户端和服务端用户认证,授权,限制

    -- SqlServer(收费),Oracle,sqlite,access...,,,, MySQL

    MySQL,SqlServer(收费),Oracle,sqlite,access..

    二、下载安装

    1、下载
    2、解压到任意目录
    3、服务器端运行起来
    mysqld

    4、客户端连接

    省事:
    将mysql服务端制作成一个Windows服务
    net start mysql
    net stop mysql
    ===,打开服务管理,直接...

    三、MySQL数据库

    1、概念

    数据库, 文件夹
    数据库表, 文件
    数据行, 文件中的一行数据

    2、
    启动服务器:
    net start mysql

    C:mysql-5.7.16-winx64mysql-5.7.16-winx64mysql

    mysql.server start

    /etc/init.d/mysql start


    客户端连接:
    C:mysql-5.7.16-winx64mysql-5.7.16-winx64mysql -u root -p


    初试:

    show databases; # 查看当前Mysql都有那些数据,根目录都有那些文件夹

    create database 数据库名; # 创建文件夹

    use 数据库名; # 使用选中数据库,进入目录

    show tables; # 查看当前数据库下都有那些表,

    create table 表名(nid int,name varchar(20), pwd varchar(64)); # 创建数据库表

    select * from 表名; # 查看表中的所有数据

    insert into 表名(nid,name,pwd) values(1,'alex','123'); # 插入数据

    -- select * from 表名;

    3、用户授权
    用户管理特殊命令:
    创建用户
    create user '用户名'@'IP地址' identified by '密码';
    删除用户
    drop user '用户名'@'IP地址';
    修改用户
    rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;


    修改密码
    set password for '用户名'@'IP地址' ='新密码'

    mysql> set password for 'root'@'localhost' ='111111';



    c:mysql-5.7.16-winx64mysql-5.7.16-winx64inmysql -u

    权限:
    默认,什么都没有

    grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

    select,查


    数据库.表
    test.tb1
    test.*
    *.*

    '用户'@'IP地址'
    xiaohu@localhost

    mysql> grant all privileges on *.* to liyinchun@192.168.132.127;
    ##给liyinchun 用户开通所有的权限。

    ===========重要,远程连接=============

    ====================
    a. 解放双手,在重复操作文件,直接将命令发送给mysql服务端,自动操作
    b. 数据库,表,行
    c. 开户和授权
    密码,必须用 引号 ''
    其他,推荐用

    d. 客户端连接(MySQL提供的客户端)
    1、
    mysql -u root -h 192.168.1.1 -p
    # 输入密码

    2、

    初试:

    show databases; # 查看当前Mysql都有那些数据,根目录都有那些文件夹

    create database 数据库名; # 创建文件夹

    use 数据库名; # 使用选中数据库,进入目录

    show tables; # 查看当前数据库下都有那些表,

    create table 表名(nid int,name varchar(20), pwd varchar(64)); # 创建数据库表

    select * from 表名; # 查看表中的所有数据

    insert into 表名(nid,name,pwd) values(1,'alex','123'); # 插入数据

    -- select * from 表名;

    3、 ;;;;;;;;;;


    4、 SQL语句

    数据库级别
    SHOW DATABASES;

    CREATE DATABASE 数据库名称;
    CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    USE 数据库名称;

    drop database 数据库名称;

    表级表
    show tables;
    desc tb1; 查看表的具体属性

    *** create table tb1(nid int, name varchar(10));
    # 事务,原子操作,回滚

    a. 默认值
    b. 是否可以为空
    c. 自增列(一张表只能有一个,数字,必须是索引-主键)
    d. 主键索引:

    一张表只能有一个主键,唯一不能重复,不能为null,- 一般情况下,自增列设置主键
    1,2,3,4,5,6
    唯一索引:
    可以为null,一张表可以有多个唯一列
    1,2,3,4,5,6,null

    -- 约束
    -- 索引,加速查找

    create table xxx(
    nid.... primary key,
    ....
    )

    create table student(
    name varchar(10) not null,
    num int not null,
    age int,
    gender int,
    primary key (name,num)
    )
    约束:
    name num age
    a 88 9
    a 99 9
    a 88 0

    # 主键:
    不能为null,
    不能重复,
    一张表只有一个主键(可以多列组成主键)
    # 一般用法:
    nid int auto_increment primary key,

    # 请在本地创建表:
    CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    use 数据库名称;

    create table tb5(
    nid int not null auto_increment primary key,
    name varchar(16),
    age int default 19
    )engine=innodb default charset=utf8;

    e. 外键foreign key,一对多

    两张表建立约束

    -- 约束
    -- foreign key,一对多



    f. 数据类型:数值、时间和字符串
    数值:
    二进制:
    bit 二进制
    整数:
    tinyint
    smallint
    int
    bigint
    - 范围不一样

    小数:
    decimal --精确的

    -- 985412154521321.857541245421245845
    FLOAT -- 98541215458798465465749465465465421321.857541245420000000
    -- 985412154000000000000000000000000000000000000000000000000
    DOUBLE -- 9854121544587984654657494654654654000000000000000000000000

    字符串:
    # 定长
    char
    create table tb13(n char(7),b int, c int)
    insert ssss
    # 查找速度快,浪费空间


    # 变长
    varchar
    create table tb13(n varchar(7),b int, c int)
    insert ssss
    insert sssss
    insert sssss5
    # 查获找速度慢,节省空间
    text
    mediumtext
    longtext
    二进制数据:
    TinyBlob、Blob、MediumBlob、LongBlob
    # 上传文件
    # Blob,强制二进制方式
    # varchar(65), "D:av.avi" 将上传的文件保存在硬盘, D:av.avi ;

    时间:
    DATE
    YYYY-MM-DD(1000-01-01/9999-12-31)
    # 1996-12-12 18:45

    TIME
    HH:MM:SS('-838:59:59'/'838:59:59')

    YEAR
    YYYY(1901/2155)

    DATETIME

    YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)

    TIMESTAMP

    YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

    enum
    单选

    集合
    多选

    create table tb13(num decimal(6,2)) #8888.18

    drop table tb1; # 直接表删除

    delete from tb1; # 清空表内容
    truncate table tb1; # 清空表内容,速度快,自增回到远点

    select * from tbl;

    数据行级别 *****

    select * from tbl;



    # 增
    insert into tb1(name,age) values('alex', 18);
    insert into tb1(name,age) values('alex', 18),('eric', 19),('eric', 19);
    create

    # 删
    delete from 表
    delete from 表 where id=1 and name='alex'

    # 改
    update 表 set name = 'alex' where id>1


    # 查
    select * from 表
    select * from 表 where id > 1
    select nid,name,gender as gg from 表 where id > 1

    # 其他

    连表操作:★★★★★★★
    # 连表
    select * form a,b where a.x = b.o
    mysql> select * from love,live where love.nid = live.nid;

    # join,
    a. left join
    select * from a LEFT JOIN b ON a.x = b.o

    b. inner join ,永远不会出现Null
    select * from a inner JOIN b ON a.x = b.o



    #组合
    组合,自动处理重合
    select nickname
    from A
    union
    select name
    from B

    组合,不处理重合
    select nickname
    from A
    union all
    select name
    from B


    #排序
    select * from 表 order by 列 asc - 根据 “列” 从小到大排列
    select * from 表 order by 列 desc - 根据 “列” 从大到小排列
    select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序   



    #分组
    group by
    mysql> SELECT item FROM live GROUP BY item;
    #聚合函数
    mysql> select nid, max(item),min(item),sum(item),count(item) from live group by item;
    最大 最小 和 次数

    select AVG(cid) FROM course   ### avg 求平均

    查询某个段区间 

    SELECT *
    FROM
    SystemEvents
    WHERE  ReceivedAt BETWEEN'2018-06-20 09:51:00' AND '2018-06-20 10:01:00'


    mysql> select max(nid),item from live group by item having max(nid) > 3;
    # 在对 聚合条件进行删选的时候就不能用where了 需要用 having !

    #限制
    select * from 表 limit 5; - 前5行
    select * from 表 limit 4,5; - 从第4行打印5行
    select * from 表 limit 5 offset 4 - 从第4行打印5行 (和上面方法一样,不过这种用的多)

    ===========今日内容整理 ================
    1、数据库概念,很多
    2、数据库,表,行
    3、启动服务器端,启动客户端连接服务端
    - 用户管理
    - 权限管理
    4、SQL语句
    数据库操作 *
    表操作**
    - 是否可以为空
    - 默认值
    - 主键
    - 外键
    - 自增
    - 数据类型(char,varchar)
    数据行 ******:
    增删改查
    其他:
    limit offset
    left join
    order by
    group by ,having max,min,sum,count
    # 条件,模糊,.....

    添加列:alter table 表名 add 列名 类型

    删除列:alter table 表名 drop column 列名
    修改列:
            alter table 表名 modify column 列名 类型;  -- 类型
            alter table 表名 change 原列名 新列名 类型; -- 列名,类型
      
    添加主键:
            alter table 表名 add primary key(列名);
    删除主键:
            alter table 表名 drop primary key;
            alter table 表名  modify  列名 int, drop primary key;
      
    添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    删除外键:alter table 表名 drop foreign key 外键名称
      
    修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

    外键,一个特殊的索引,只能是指定内容
    creat table color(
    nid int not null primary key,
    name char(16) not null
    )

    create table fruit(
    nid int not null primary key,
    smt char(32) null ,
    color_id int not null,
    constraint fk_cc foreign key (color_id) references color(nid)
    )

    外键




    create table fuwuzhongxing(nid int not null auto_increment primary key,
    name varchar(10),age int, class int default 4)engine=innodb default charset=utf8;

  • 相关阅读:
    Oracle中的带参数的视图--我们致力于打造人力资源软件
    (免费)在线演示人力资源管理系统--源自偕行软件
    打造国内第一个支持在线演示的人力资源管理系统--源自偕行软件
    Silverlight C1.Silverlight.FlexGrid 表格动态列
    SILVERLIGHT 多维表头、复杂表头 MULTIPLE HEADER
    weixin JS 接口调用代码
    盒布局
    焦点不在input或textarea中,屏蔽回格按钮
    CSS3多栏布局
    AJAX
  • 原文地址:https://www.cnblogs.com/th-lyc/p/8968607.html
Copyright © 2011-2022 走看看