zoukankan      html  css  js  c++  java
  • mysql基础语句

    1.去mysql官网下载想要安装的mysql版本

    2.下载完成后,rpm -ivh MySQL-5.6.36-1.el7.src.rpm

    3.yum repolist all | grep mysql         #查看安装的社区mysql包 

    4.yum install mysql-community-server  安装社区版mysql

    一:数据库原理

    1)为什么用数据库

    1. 硬盘 
      文件系统 存储引擎 
      文件

    2. 解决数据的冗余问题

    3. 数据访问困难 
      因为先存到内存里在调用

    4. 数据的完整性问题(事务)

    5. 并发访问的问题 
      让文件实时更新

    6. 安全问题 
      让用户可以看到一部分数据的内容

    7. 访问快

    2.数据库模型 
    1.层次式数据库 
    按层次结构的方式组织数据库的数据(层次结构) 
    ims 
    2.网络式数据库 
    以网状式模型存储数据,关系太复杂 
    dbtg 
    3.关系式数据库 
    建立在关系模型的基础上描述数据

    交集两个圆都有的地方 
    并集就是全部的 
    插集就是两边都有交集的

    3)常见的数据库 
    oracle、mysql、IBM/DB2、 
    sqlserver、mongoDB 
    oracle:必须连续交钱 
    用户一万、内核:10-20万 
    mysql:5-10万之间 
    卡珊德拉 
    nosql (统称为nosql) 
    非关系式数据库 (做前端、后端mysql)

    4)网络安全小组(***) 
    1)IOEC 
    以前红旗 现中标麒麟 
    2)I :以前IBM 、现在浪潮、曙光、宝德 
    o : oracle(大型企业) (小型企业)达蒙、奥斯卡 
    E :EMC 联想 神州数码 
    C :以前cisco 现全华为

    二:数据库组成结构

    1.数据库管理系统 
    软件:mysql oracle

    2.数据库:存储数据的仓库

    3.数据库应用程序: 
    phpmyadmin (图形或管理数据库工具)

    3.标题=字段 1 
    4.任何一个字段指定为主键 
    (只有一个具有唯一性才能做主键) 
    5.数据记录 
    数据表中,所有字段对应的一行数值的总和

    6.装数据库 
    mysql (工具包) 
    mysql-server(主程序包) 
    3306开启时默认端口 
    /etc/my.cnf 
    /var/lib/mysql/ 数据目录

    7.ps aux | grep mysql 
    /bin/sh/mysql_safe 安全启动数据库 
    ibdatal :为索引文件 
    mysql:基本的数据表 
    同样名称有三份 
    .frm 代表数据表的结构 
    .myd 存放数据表的数据(数据的值) 
    .myi 数据的索引信息 
    mysql.sock 套接字文件必须有才能访问 
    用户目录:basedir=/usr/ 
    普通用户都存放到/usr/目录中

    三:数据的增删改查

    2)登录 
    mysqladmin -u root password '123.com' 
    添加密码不是设置密码

    3)登录后 
    create user 'zhangsan'@'localhost' identified 
    by '123.com'; 
    '%' 为任意远程登录 
    mysql -u lisi -p

    4)设置密码 
    set password = password (‘123.com’); 
    设置当前用户密码

    set password for 'lisi'@'%' = password(123.comm)

    1.增:

    1.create table a1 (id int(10)); 
    字段1 类型1,字段2 类型2

    2.创建了一张表格: 
    create table a2 ( 
    id int(10) unsigned auto_increment, 
    整数 不允许为负数 每一次会把上一行 
    的id号自动增长 
    name char (10) not null default ' ', 
    固定字符长度 如果没有写值则空 
    (varchar)可变长 
    age int(10) not null default ‘00’, 
    info char(211) null, 
    primary key (id));

    3.插入数据: 
    insert into a1 (id,name,age,info) values 
    (1,'a1',15,'good') 
    括号里写的是字段,第二个()为字段数据

    4.insert into a2 values (2,'a2',19,'bad'); 
    是按顺序写的如:idname、….

    5.insert into a2 (id,name) values (3,'a3'); 
    没写则默认创键框架时所定义的空或0

    1. insert into a2 (id,info) values (5,'bbb'); 
      也可以打乱顺序

    7.insert into a2 (id,info) values (5,'bbb'), 
    (6,'ccc') 
    插入多条数据

    8.insert into a3 (id,name) select id, 
    name from a4; 
    给a3(没有数据)表插入id,name字段,直接从现有 
    的a4(有数据的)表里导入 
    这条命令的前提是事先创建出a4的空表 
    空表里面有哪些就只能复制哪些内容

    2.删:

    1>删除数据库 
    drop database bb;

    2>删除数据表 
    drop table a1;

    3>删除表里的某一个数据 
    delete from a4 where id=7; 
    删除第七行数据

    delete from jack where cost = 0; 删除jack表中cost类型为0的

    4>删除表里的多个数据 
    delete from a3 where age between 20 and 25;

    删除从20行到25行的数据

    3.改:

    1>update 修改数据 
    update a2 set name='a4' where id=4; 
    增加一条新字段 where匹配字段=数据 
    (前提是已有的字段否则无法修改)

    update book set author="call me" where number between 2 and 5 修改 2到5字段的作者(author)

    update a4 name set name=' '; 
    清空author字段

    update user set password=password('123.com')where user='root'; mysql忘记密码的时候更改密码用

    update grants for 'table'@'%' 
    查看表的授权的内容

    2>修改表结构 
    alter table a3 modify name char(3); 
    修改名字为a3的修改字段为3 
    !!!这里修改名字限制的字段为3, 
    如果你的名字超过3个也会也会操作成功 
    但会只保留三个!!! 
    !!!但奇怪的是数字不受影响

    3>change 修改字段的名称 
    alter table a3 change info 
    information char(255);

    4>添加一个字段 
    alter table a3 add time date; 
    谨记:添加字段不能重复,因为在一张表里不能出现两个一样字段

    5>删除一个字段 
    alter table a3 drop time;

    6>添加到字段的第一行 
    alter table a3 add time date first;

    7>添加到字段的第二行 
    alter table a3 add time date after id; 
    ##这里要写添加到哪行后面

    8>修改表的名字 
    alter table bookss rename book 
    旧名 新名

    9>给已经添加好的字段添加类型 
    alter table table1 add id int auto_increment primary key 
    自增长字段 一定要设置为primary key

    alter table a2 add age int; 添加表的字段类型

    4.查:

    1 > 查数据库 
    show databases; 
    use 数据库

    2 > 查数据表 
    show tables;

    3 > 查看结构 
    describe a1

    5 > 查看某一条数据 
    select name from a2;

    4 > 查看数据: select * from a2表名 
    where 匹配的字段=匹配的数据; 
    select * from a2 where id=1; 
    查看表中的某个字段

    5 > 查看当前系统有哪些用户被授权过 
    select host,user from mysql.user

    四:授权

    1)授权用户有权限 
    grant create,drop on test.* to 
    'zhangsan'@'localhost' ; 
    对已经存在的用户执行 
    (如果没有这个用户则要加identify……)

    2)取消用户的权限 
    revoke drop on test.* from 'zhangsan'@ 
    'localhost';

    3)查看用户的权限列表 
    show grants for 'zhangsan'@'localhost';

    五:mysql数据库密码恢复(扩展)

    1)vim /etc/init.d/mysqld 
    /exec 搜索关键字 
    –basedir=/usr –skip-grant-tables –skip-networking –user=mysql………. 
    勿忘加空格前后!!! 为不允许通过网络来连接

    2)vi my.cnf 文件中 
    找到 mysqld 下写入 
    skip-grant-tables

    2)保存退出 重启mysql

    3)mysql 可以直接默认登录

    4)勿要忘记修改完成后再把它删掉否则很不安全

    5)必须用用update才能改密码 
    update user set password=password('123456') where user='root';

    通过授权更新授权表方式直接修改其密码,而后一处此两个选项重启服务

    方法一、 
    Js代码

    /etc/init.d/mysqld stop

    mysqld_safe –user=mysql –skip-grant-tables –skip-networking &

    mysql -u root mysql

    mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; 
    mysql> FLUSH PRIVILEGES; 
    mysql> quit

    /etc/init.d/mysql restart

    mysql -uroot -p

    Enter password: <输入新设的密码newpassword> 
    mysql>

    来源: http://blog.chinaunix.net/uid-26727991-id-4711488.html

    支持远程访问: 
    mysql>use mysql; 
    mysql>update user set host = '%' where user = 'root'; –%可以改成ip或者其他 
    mysql>select host, user from user; 
    重启数据库

    mysql扩展

    mysql行求和、列求和 
    分享| 2013-03-26 14:5752263646 | 浏览 10680 次 
    php+mysql 
    2012年1月份销量统计表m201201结构: 
    id name d01 d02 d03…… d31 
    1 3006 5 6 5 …… 5 
    2 3008 9 null 8 …… 6 
    3 3010 3 6 4 …… 9 
    4 3016 null 9 7 …… 2 
    5 3034 3 4 9 …… 7

    希望分别求出d01、d02、d03……d31列的和;

    分别求出3006、3008、3010、3016、3034每一行中d01——d31之间记录的和(即这些网点在1月份的销量); 
    求本表记录总和; 
    麻烦写一下如何在php页面中显示~~初学者求教。 
    显示结果为: 
    2012年1月1日全区总销量为________(d01列求和) 
    2012年1月2日全区总销量为________(d02列求和) 
    … 
    2012年1月31日全区总销量为_______(d31列求和)

    1月份3006网点销量为________(3006行求和) 
    1月份3008网点销量为________(3008行求和) 
    … 
    1月份3034网点销量为_______(3034行求和)

    2012年1月份全区总销量为_______(所有记录求和) 
    2013-03-26 16:31#“谁是脑力达人”之电脑网络分类鏖战ing!#提问者采纳 
    分别求出d01、d02、d03……d31列的和; 
    SELECT count(d01),count(d02),count(d03)…..count(d31) FROM m201201;

    分别求出3006、3008、3010、3016、3034每一行中d01——d31之间记录的和 
    SELECT (d01+d02+d03+….+d31) as d_all FROM m201201 WHERE name IN('3006','3008','3010','3016','3034'); 
    追问: 
    非常感谢!还有一点疑问: 
    count得出来是计数结果。SELECT sum(d01),sum(d02),sum(d03) FROM m201201;这样可以。 
    行求和那里 (d01+d02+d03+…+d31)能不能使用什么简单的表达方式呢?比如(d01——d31)什么的。

    来源: http://zhidao.baidu.com/link?url=rhD1NJKcVT2DVDMVK6ljQ-kry6GJvUov83g5v0l3t7KHp5mykumDOg_nIleIsO5JsRrSNPF7fldOUnnzbGfvxq

    魅力男神
  • 相关阅读:
    20款时尚的 WordPress 博客主题【免费下载】
    垂涎欲滴!30个美味的食品类移动应用程序【上篇】
    Skippr – 轻量、快速的 jQuery 幻灯片插件
    Boba.js – 用于 Google 统计分析 JavaScript 库
    长期这么做的后果就是人民劳苦而得不到该有的回报,怎么能不垮
    左值与右值的根本区别在于能否获取内存地址,而能否赋值不是区分的依据
    百度后端C++电话一面
    Web 开发和数据科学家仍是 Python 开发的两大主力
    Consul架构
    去除两端逗号-JS
  • 原文地址:https://www.cnblogs.com/capable/p/6856089.html
Copyright © 2011-2022 走看看