mysql学习笔记一 —— 数据的增删改查
1、连接mysql
mysql 直接回车(是以root身份,密码空,登陆的是本机localhost)
	[root@www mysql]# mysql -uroot -p123 -S /var/lib/mysql/mysql.sock
2、设置root用户密码并登陆
	[root@www mysql]# /usr/bin/mysqladmin -u root password '123'
	再登陆:
		[root@www mysql]# mysql -u root -p123 -h localhost
			-u	指定以哪个用户的身份登陆mysql
			-p	指定密码(没有空格)
			-h	指定登陆哪台主机上的mysql
3、安全设置(加固)
	[root@www mysql]# mysql_secure_installation
4、配置文件
	ibdata1		InnoDB存储引擎的系统表空间,存放这innodb表的数据、回滚段
	ib_logfile0 
	ib_logfile1	innodb日志文件组
	mysql  		数据库,库名叫mysql(权限库)
	mysql.sock	mysql的socket文件,用于本机用户登陆mysql
/etc/my.cnf 配置文件
[mysqld]
datadir=/var/lib/mysql			//mysql数据存放目录
socket=/var/lib/mysql/mysql.sock	//socket文件路径
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0			//软连接支持与否
character_set_server=utf8
[mysqld_safe]				//跟启动有关
log-error=/var/log/mysqld.log		//错误日志
pid-file=/var/run/mysqld/mysqld.pid	//pid文件
character_set_database=utf8
[mysql]
default-character-set=utf8
5、库的管理
	创建数据库
		文件系统:
			cd /var/lib/mysql
			mkdir DB1
			chown mysql.mysql DB1
		SQL:
			mysql> create database DB2;
删除数据库
文件系统:
			rm -rf DB2
		SQL:
			mysql> drop database DB1;
查询数据库(查询有哪些数据库)
		mysql> show databases;
使用数据库:
		mysql> use DB1;
		Database changed
		mysql> select database();		//查看当前在哪个库中
		+------------+
		| database() |
		+------------+
		| DB1        |
		+------------+
		1 row in set (0.00 sec)
6、表的管理
	mysql数据库系统软件,提供数据库服务,主要用来存放数据:
	库-->表-->字段和记录
6.1 增加表
id name xingbie aihao
枚举()
	mysql> create table T1(id int(11),name char(50),xingbie enum('M','F'),aihao set('AV','nv','nan','linux'));
mysql> create table chengji (id int not null auto_increment primary key,class int,name char(30),yuwen int,shuxue int,yingyu int);
not null:表示该列不能为空
auto_increment:自动增加
primary_key:主键索引
id,name,xingbie,aihao	创建的表中的各个列(字段)
	int,char,enum,set	列的数据类型
		int	整数类型,整型(整数,数字)
		char	字符串(字母,汉字)
		ENUM	枚举,从给定的选项中选择一个
		set	类似enum,从给定的选项汇总选择多个
6.2 	删除表
	mysql> drop table t1;
删除表的数据
mysql> delete from t1;
6.3	修改表
		增加列
		删除列
		修改列名
		修改列数据类型
增加列:
			增加一个email列
			mysql> alter table T1 add email char(50);
增加到指定列后面
mysql> alter table T1 add email char(50) after id;
增加到第一列
mysql> alter table T1 add email char(50) first;
删除列:
			删除email列
			mysql> alter table T1 drop email;
修改列名:
			把xingbie列改成gender
			mysql> alter table T1 change xingbie gender enum('M','F');	//change既可以修改列名,也可以列类型
修改列类型:
			把name列的类型char(50)改为char(30)
			mysql> alter table T1 modify name char(30);
修改表名:
		mysql> rename table T1 to T2;
复制表:
法一:mysql> create table T2 (select id,name,number from T1); //不能添加主键、索引等信息
法二:mysql> create table T2 like T1; mysql> insert into T2 (select * from T1);
6.4	查询表(查看有哪些表)
		mysql> show tables;
		mysql> desc T1;
+---------+------------------------------+------+-----+---------+-------+
| Field   | Type                         | Null | Key | Default | Extra |
+---------+------------------------------+------+-----+---------+-------+
| id      | int(11)                      | YES  |     | NULL    |       |
| name    | char(50)                     | YES  |     | NULL    |       |
| xingbie | enum('M','F')                | YES  |     | NULL    |       |
| aihao   | set('AV','nv','nan','linux') | YES  |     | NULL    |       |
+---------+------------------------------+------+-----+---------+-------+
4 rows in set (0.03 sec)
7、 数据管理
7.1 增加数据
7.2	删除数据
7.3	修改数据
7.4	查询数据
增加数据
显示表结构:
mysql> desc T1;
  字段(列名)  列数据类型		是否允许为空  是否是索引键	默认为null  额外描述
+---------+------------------------------+------+-----+---------+-------+
| Field   | Type                         | Null | Key | Default | Extra |
+---------+------------------------------+------+-----+---------+-------+
| id      | int(11)                      | YES  |     | NULL    |       |
| name    | char(50)                     | YES  |     | NULL    |       |
| xingbie | enum('M','F')                | YES  |     | NULL    |       |
| aihao   | set('AV','nv','nan','linux') | YES  |     | NULL    |       |
+---------+------------------------------+------+-----+---------+-------+
4 rows in set (0.03 sec)
插入数据:
mysql> insert into T1 values (1,"xiaoli",'F','nan,av');
Query OK, 1 row affected (0.01 sec)
mysql> insert into T1 values (2,"xiaoming",'M','nv,av'),(3,"laowang",'M','nv');
mysql>insert into chengji(class,name,yuwen,shuxue,yingyu) values (1,"danny",100,65,80),(2,"tom",100,59,80),(2,"jeck",88,60,22),(4,"hans",90,86,95);
删除数据,删除某一条记录
	select   条件查询
	mysql> select * from T2 where id=1;
从T2表中删除id为4的行:
	mysql> delete from T2 where id=4;
将表中内容全部删除:
		mysql> delete from T2;		//在一个事物中,支持回滚
		mysql> truncate T1;		//不支持回滚
修改数据
		update修改表中数据
修改表中数据:update table set xx=xxx where xx=xxx;
update user set password=password("1234");
修改chengji表中id为1的行中shuxue列值为100
mysql> update chengji set shuxue=100 where id=1;
查询数据:
	mysql> select * from chengji;     *表示表中所有字段
mysql> select * from chengji where name="danny";
mysql> select yuwen from chengji where name="danny"; //从chengji表中查询danny的语文成绩是多少
数学运算	+ - * / %(取模)
mysql> select 1+1;
+-----+
| 1+1 |
+-----+
|   2 |
+-----+
1 row in set (0.01 sec)
mysql> select class,name,yuwen+shuxue+yingyu as zongfen from chengji;
比较运算 > < >= <= = !=
select 3>2; 比较结果:对,错 真1,假0
mysql> select 3>2;
+-----+
| 3>2 |
+-----+
|   1 |
+-----+
mysql> select * from chengji where yuwen>=60; //chengji表中检索出yuwen成绩及格学员所有信息
mysql> select class,name,yuwen from chengji where yuwen>=60; //检索chengji表中yuwen成绩及格的学院班级、姓名和语文成绩
逻辑运算	
		与	&&	并且,条件为必要条件,都需要被满足
		或	||	非必要条件,满足其中之一
		非	not	表示否定,取反。真加上not后为假;假加上not后为真。
mysql> select 3>2 && 5<3;
+------------+
| 3>2 && 5<3 |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)
mysql> select 3>2 || 5<3;
+------------+
| 3>2 || 5<3 |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)
mysql> select not 3>2;
+---------+
| not 3>2 |
+---------+
|       0 |
+---------+
1 row in set (0.00 sec)
检索语数外都及格的学生的班级、姓名和语数外的成绩
mysql> select class,name,yuwen,shuxue,yingyu from chengji where yuwen>=60 && shuxue>=60 && yingyu>=60;
排序	order by:通过    通过哪个字段来排序
mysql> select * from chengji order by yuwen;	//通过yuwen字段排序,默认为升序排序
desc   降序排序
mysql> select class,name,yuwen+shuxue+yingyu as zongfen from chengji order by zongfen desc;
限制  limit
看一下总分前三名的信息
mysql> select class,name,yuwen+shuxue+yingyu as zongfen from chengji order by zongfen desc limit 3;
分组	group by:通过某个字段来分组
统计每个班中的人数
mysql> select class,count(class) from chengji group by class;
count()	函数,计数函数,这里通过class字段计数
检索区间 between...and...
mysql> select class,name from chengji where yuwen between 80 and 90;
+-------+-------------+
| class | name        |
+-------+-------------+
|     2 | shijinbao   |
|     4 | yangguangyu |
+-------+-------------+
2 rows in set (0.01 sec)
常用函数
user()		查看当前用户是谁
database()	查看当前所属库
version()	mysql的版本
now()		系统时间
sum()		求和函数
avg()		平均数
max()		最大值
min()		最小值
count()		统计数量,计数
例:
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.73    |
+-----------+
1 row in set (0.01 sec)
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-08-14 15:14:11 |
+---------------------+
1 row in set (0.02 sec)
mysql> select count(*) from chengji;
+----------+
| count(*) |
+----------+
|        6 |
+----------+
1 row in set (0.00 sec)
mysql> select sum(yuwen) from chengji;
+------------+
| sum(yuwen) |
+------------+
|        433 |
+------------+
1 row in set (0.01 sec)
mysql> select avg(yuwen) from chengji;
+------------+
| avg(yuwen) |
+------------+
|    72.1667 |
+------------+
1 row in set (0.01 sec)
mysql> select max(yingyu) from chengji;
+-------------+
| max(yingyu) |
+-------------+
|          95 |
+-------------+
1 row in set (0.00 sec)
mysql> select min(yingyu) from chengji;
+-------------+
| min(yingyu) |
+-------------+
|          22 |
+-------------+
1 row in set (0.00 sec)
8、数据类型
数值类型
			占用磁盘空间
		tinyint	1字节即8位	-256~256
		int	4字节即32位	-42亿~42亿   		11         11111111111
		bigint	8字节即64位
DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
  		| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
 		 | DECIMAL
float	浮点数,单精度
		double	浮点数,双精度
decimal(M,D)工资		decimal(10,0)   10表示最多10位,小数点后面有0位
					decimal(10,2)  最多10位数,小数点2位
mysql> create table gongzi(name char(20),salary decimal(7,2));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into gongzi values("gebi",24567.99),("laowang",22222.22);
时间类型
		 DATE		
  		| TIME
  		| TIMESTAMP
  		| DATETIME
  		| YEAR
mysql> create table tt1 (d date,t time,dt datetime,ts timestamp,y year);
	Query OK, 0 rows affected (0.02 sec)
	mysql> insert into tt1 values(now(),now(),now(),now(),now());
	mysql> select * from tt1;
+------------+----------+---------------------+---------------------+------+
| d          | t        | dt                  | ts                  | y    |
+------------+----------+---------------------+---------------------+------+
| 2017-08-14 | 15:31:39 | 2017-08-14 15:31:39 | 2017-08-14 15:31:39 | 2017 |
+------------+----------+---------------------+---------------------+------+
1 row in set (0.01 sec)
	字符串类型
		char		name char(30)     xiaoming
		varchar		name varchar(30)  xiaoming
			从节省磁盘空间上来看,varchar好!但是使用varchar会消耗cpu计算能力,导致性能低,虽然用char占用的磁盘空间多,但是不消耗cpu,而且存放字段都是固定长度,读取速度快,性能好。所以对于字符串的数据类型,多用char。用牺牲磁盘空间来换取性能。
存文本:
		text	纯文本
		blob	文本+图片   二进制
枚举	在给定的选项中选择一个
	set	在给定的选项中可以选择多个
总结:
库:
	create database
	drop     
	use
	show
表:(增删改查)
	create table
	drop
	alter table
			增加列   add
			删除列	 drop
			该列名	change
			该列类型  modify
	修改表名:rename table T1 to T2;
	show tables
数据:(增删改查)
	增加   insert into  table  values(.....)
	delete  from ...   truncate
	update  t1 set   =  
	select
补充笔记:
查看mysql数据当前状态等:(常用于mysql资源监控)
mysql -e "show status" | grep xxx 
mysql -uzabbix -p123 -e "show full processlist" //查看当前连接用户
show engines //查询数据库引擎类
myisam表:读写速度块。
InnoDB表,支持事物,支持回滚、数据完整性。
mysql学习笔记一 —— 数据的增删改查的更多相关文章
- Mysql学习笔记(六)增删改查
		
PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...
 - Mybatis学习笔记之---CRUD(增删改查)
		
Mybatis的CRUD(增删改查) 1.pom.xml <dependencies> <dependency> <groupId>junit</groupI ...
 - MySql  CURD操作(数据的增删改查)
		
1.增 格式 insert into 表名字 (列名) values(...); 两种方式 1.直接insert into 表名字 values(...); 全部插入 2.insert into ...
 - hibernate学习笔记之四  Hibernate的增删改查
		
采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...
 - django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
		
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
 - Mybatis学习总结(二)—使用接口实现数据的增删改查
		
在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...
 - Node.js + MySQL 实现数据的增删改查
		
通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...
 - Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
		
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
 - Mybatis框架基于注解的方式,实对数据现增删改查
		
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
 
随机推荐
- rac添加新节点的步骤与方法2
			
上一篇文章,把节点删除了.这次新增加一个节点 .新增加的节点是host03.如下: #Public IP192.168.16.45 racdb1192.168.16.46 racdb2192.168. ...
 - Electron 发生错误 "Cannot find module app"的解决方案
			
运行一个electron小demo出现的一个错误信息:Cannot find module app 原代码如下所示: var app = require('app'); var BrowserWind ...
 - rosdep update 超时
			
https://blog.csdn.net/azhuty/article/details/41209957 http://www.cnblogs.com/wangyarui/p/6059688.htm ...
 - Android学习之基础知识二(build.gradle文件详解)
			
一.详解build.gradle文件 1.Android Studio是采用Gradle来创建项目的,Gradle是非常先进的构建的项目的工具,基于Groovy领域特定的语言(DSL)来声明项目配置, ...
 - Luogu P1525 关押罪犯
			
传送门 首先 这是一个并查集= = 这道题其实明白了还挺简单的qwq 思路: 因为只看仇恨值最大的一对儿,所以把他们从大到小排序,越大的就尽量分开,直到不能再分为止qwq q[x]表示x最大的敌人(x ...
 - java使用POI读取excel报表
			
留此作为记录 package com.demo; import java.io.FileInputStream; import java.util.Iterator; import org.apach ...
 - 如何学习 Webpack
			
webpack-howto Tip: 本文是 webpack-howto 的原文,我觉得这篇文章写得非常好,确实算是目前学习 webpack 入门的必读文章.直接收录之. 本教程的目标 这是一本教你如 ...
 - RocketMQ环境搭建
			
1 源码下载 wget http://mirror.bit.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip unzip ...
 - LINQ 如何动态创建 Where 子查询
			
还是那句话,十年河东,十年河西,莫欺少年穷! 学无止境,精益求精... 今天探讨下如何构造动态的LINQ子查询 LINQ,相信大家都写过,很简单,下面以一个基本的范例说明下: namespace Co ...
 - Luogu  T29912 fuck
			
这是QZEZ的Luogu团队中的一道难得的水题,题面和数据都是CJJ dalao出的,然后我就没有太看懂题意. 也是一道经典的割点好题,但需要一定的思维. 首先对于题意,它只需要得到切断的作用就可以了 ...