mysql基础语句
二:数据库组成结构
三:数据的增删改查
1.增:
2.删:
3.改:
4.查:
四:授权
五:mysql数据库密码恢复(扩展)
/etc/init.d/mysqld stop
mysqld_safe –user=mysql –skip-grant-tables –skip-networking &
mysql -u root mysql
/etc/init.d/mysql restart
mysql -uroot -p
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)为什么用数据库
-
硬盘
文件系统 存储引擎
文件 -
解决数据的冗余问题
-
数据访问困难
因为先存到内存里在调用 -
数据的完整性问题(事务)
-
并发访问的问题
让文件实时更新 -
安全问题
让用户可以看到一部分数据的内容 -
访问快
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
- 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)什么的。