mysql入门
mysql:关系型数据库的一种,用来存储数据;
一个仓库------一个数据库;
一个箱子------ 表;
进入mysql命令行:mysql -uroot -p(密码);查看数据库中所有表:show tables
创建表:create table name charset utf-8;
删除表:drop table name;
选择数据库:use tablename;
查看数据库的建立语句:show create databases name;
表
约束:自增长——auto increment; 非空——not null; 默认——default 'xx';
唯一——unique; charset——指定字符集; 主键——primary key(唯一性,不能为空)
外键——用来表示两个表之间的关系
增:
#score
create table score(
id int auto_increment primary key,
s_id int not null,
grade float not null
);
create table blk (
id int auto_increment primary key
name varchar(10) not null,
sex varchar(5) default '男'
addr varchar(50),
phone int not null unique,
);
删除:drop table test
改表名:alter table blk rename stu
alter table blk modify name varchar(20) unique;
修改字段的数据类型:alter table blk chage name stu_name varchar(30);
新增一个字段,放在那个位置:alter table blk add money float not null after stu_name;
删除某个字段:alter table tablename drop addr
查
查看建表语句:show create table tablename;
查看表结构:desc tablename;
查看所有表:show tables;
数据
增:insert into blk (stu_name,money,sex,phone) values ('张三','100.1','女',110);
insert into blk (stu_name,money,phone) values ('李四','100.1',110);
指定字段、不指定字段
insert into blk values ('','王五',1000,'',10991);
指定字段的话,插入的值和字段对应
不指定的话,要把所有的字典值都写全
insert into blk(stu_name,money,phone) values ('赵六',100011,1091199),('张华',1000,1999),('张伟',1000,1999);同时插入多条数据
删除
detele from blk;删除整个表的数据
truncate tablename;删除整个表里的数据,再输入时id从头开始
delete清空的表自增长id还会继续增长,truncate清空的表自增长id从1开始,truncate速度比delete要快,truncate是从磁盘上直接删除的,数据无法恢复。
删除指定的数据
改
update blk set money=80;不指定条件的话,修改的是整个表的数据
update blk set money=90 where name='';
update blk set money=money+100;在原来的数值基础上修改
查
select * from blk limit 1,5;从第几条开始,下面的x条,不包含开始那条
select * from blk limit 5;查询5条
select id,stu_name,sex,money,phone from blk;指定查询的字段
SELECT * from blk where sex='男' and money>100; #多个条件,必须同时满足
SELECT * from blk where sex='男' or sex='未知' ; #多个条件,有一个满足即可
select * from blk where sex !='男';<>也是不等于
SELECT * FROM blk where addr like '%东京%';#模糊匹配,%代表的是通配符,必须得用like
select * from blk a where a.stu_name like '姚_';#_通配符表示任意一个单字符
SELECT a.stu_name 学生名称,a.phone 学生电话 from blk as a where a.stu_name='姚远';#给表起别名,as可以省略
SELECT * from blk ORDER BY money desc; #order by xxx desc,根据哪个字段继续排序,默认是升序,降序是desc,升序asc
SELECT * from blk a where a.addr = '' or a.addr is null; #查询数据为空
SELECT DISTINCT a.money from blk a ;#去重
SELECT COUNT(*) 学生人数 from blk where sex='女'; #统计行数
SELECT MAX(a.money) 钱最多 from blk a; #最大值
SELECT sex 性别,count(*) 人数 from blk GROUP BY sex; #分组
SELECT
sex 性别,
count(*) 人数,
a.stu_name 名字
FROM
blk a
WHERE
a.money > 300
GROUP BY
a.id
HAVING
a.stu_name LIKE '姚%';
#如果group by后面有条件的话,必须得用having子句,having子句里面用到的字段必须出现在select后面,如果group by和order by一起用的话,order by必须写在group by后面
SELECT *,COUNT(*) from blk GROUP BY sex,class; #多个字段进行分组
SELECT id,stu_name from blk UNION SELECT id,t_name from teacher;
#用来合并两条select语句的结果,两条select语句字段数量要一致,并且数据类型也要一致
union和union all的区别就是一个会去重一个不会
表关联
select * from user a,accounts b where a.id=b.user_id and a.username='niuhy';
SELECT * from blk a LEFT JOIN score b on a.id=b.s_id;
-- LEFT JOIN会把左边表所有的数据都查出来,右边表有匹配的就查出来
SELECT * from blk a RIGHT JOIN score b on a.id=b.s_id;
-- RIGHT JOIN会把右边表所有的数据都查出来,左边表有匹配的就查出来
SELECT * from blk a inner JOIN score b on a.id=b.s_id;
-- INNER JOIN两边表里都匹配的数据才查到
子查询:一条sql的结果,作为另一条sql的条件
SELECT * from score a where a.s_id = (SELECT id from blk where stu_name='张三');
把子查询当成一个表
SELECT
a.grade 成绩,
b.stu_name 学生名称,
b.id 学号
FROM
score a,
(
SELECT
id,
stu_name
FROM
blk
WHERE
stu_name = '张三'
) b
WHERE
a.s_id = b.id;
数据库权限:mysql数据的权限实质上都是在user表里控制的
1.grant 所以的权限 所有的数据库下面的所有表 用户 用户ip
grant all on *.* to 'andashu' @ 'localhost' identified by '123456' with grant option;
密码 #有执行grant语句的权限
grant all on *.* to 'andashu'@'%' identified by '123456' with grant option
取消授权:
Revoke select on *.* from dba@localhost
Revoke all on *.* from andashu@localhost
修改user表的数据
对user表进行增加,修改和删除
flush privileges;刷新权限
备份数据库:
mysqldump -uroot -p123456 db > db.sql
mysqldump -uroot -p123456 -A > all.sql
恢复数据:
mysqldump -uroot -p123456 db < db.sql
存储过程:
批量的造数据
delimiter $$;为了改结束符
create procedure big_data1(num int)代表要造多少条数据
begin
declare i int;
set i=0;
while i<num do
insert into blk (stu_name,money) values (concat('李四',i),2000);
concat 的作用是连接不同类型的数据
把字符串和数字拼接在一起
set i=i+1;
end while;
end
$$;
delimiter;
call big_data1(500);调用
环境搭建:1.下载依赖软件,安装好
2.获取源代码(代码)得根据语言的不同来看是否需要编译,打包
3.导入基础数据
4.修改配置文件
5.启动 java程序(tomcat,weblogic,jetty,resin,ws)
php,ruby,python,(nginx,apache)
日常部署
1.获取最新的代码(编译,打包)如果有表结构变更的话,要执行sql
2.修改配置文件
3.重启你的程序
mysql入门的更多相关文章
- 21分钟 MySQL 入门教程(转载!!!)
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- MySQL入门02-MySQL二进制版本快速部署
在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- MySQL入门(三)
写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- MySQL入门转载
21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...
- mysql 入门 基本命令
MYSQL入门学习之一:基本操作 1.登录数据库 www.2cto.com 命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码) ...
- MySQL入门笔记(一)
一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...
- MySQL入门(上)
1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
随机推荐
- 论SOA架构的几种主要开发方式
转: http://blog.csdn.net/chenleixing/article/details/44926955 面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...
- Appirater -- app中提示用户为app评价的提示框
Appirater是一段你可以嵌入自己工程中的代码,在用户使用应用一段时间后会自动弹出提示用户进行评分. 使用Appirater方面,你可以简单把源代码嵌入你的app工程中,并把以下代码添加至它的委托 ...
- 与IE奋战的血泪史
IE6下font-size会撑高元素,也就是说IE6下元素的最小高度为font-size的高度(蛋疼) IE6不支持两个class 例如 .a.b,类名不支持下划线开头 通过js设置样式带下划线的样式 ...
- Webkit 文字和背景效果
-webkit-background-clip:padding-box | border-box | content-box | text,指定对象的背景图像向外裁剪的区域.对应的脚本特性为backg ...
- dbms_output.put_line长度限制问题
dbms_output.put_line长度限制问题 对于10g以上版本(包括10g), dbms_output.put_line的最大长度限制是32767. 如果报错buffer overflow, ...
- ffmpeg(2.6) rockplayer android 下编译 小记.
最近因为一些需求,开始学习 ffmgeg 在android 上使用. 使用的环境: 1,VMware V8 虚似机 安装的 FedoraV18 系统.(下载地址,请baidu),虚似机,最好有20-3 ...
- redis 3.0的集群部署
转载请注明出处:http://hot66hot.iteye.com/admin/blogs/2050676 最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到re ...
- js事件机制——事件冒泡和捕获
概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的onclick事件也会被触发.js里称这种事件连续发生的机制为事件冒泡或者事件捕获. IE浏览器:事件从 ...
- 使用PowerShell读取SharePoint里列表的内容
1. 在https://www.microsoft.com/en-us/download/details.aspx?id=42038这里下载SharePoint Online Client Compo ...
- CSS 学习笔记
0.CSS概念层叠样式表(Cascading Style Sheets),CSS的来历就不必多说了.可以简单的理解为万维网联盟(w3c)为了丰富HTML页面的布局和外观而指定的一种标准. 1.CSS实 ...