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学习笔记一 —— 数据的增删改查的更多相关文章

  1. Mysql学习笔记(六)增删改查

    PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...

  2. Mybatis学习笔记之---CRUD(增删改查)

    Mybatis的CRUD(增删改查) 1.pom.xml <dependencies> <dependency> <groupId>junit</groupI ...

  3. MySql CURD操作(数据的增删改查)

    1.增 格式  insert into 表名字 (列名) values(...); 两种方式 1.直接insert into 表名字 values(...);  全部插入 2.insert into ...

  4. hibernate学习笔记之四 Hibernate的增删改查

    采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...

  5. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  6. Mybatis学习总结(二)—使用接口实现数据的增删改查

    在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...

  7. Node.js + MySQL 实现数据的增删改查

    通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...

  8. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  9. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

随机推荐

  1. MySQL 基础四 存储过程

    -- 定义存储过程 DELIMITER // CREATE PROCEDURE query_student2() BEGIN SELECT * FROM student; END // DELIMIT ...

  2. fragment The specified child already has a parent. You must call removeView()

    在切换Fragment的时候出现:The specified child already has a parent. You must call removeView()异常. 错误主要出在Fragm ...

  3. at android.view.Surface.unlockCanvasAndPost(Native Method)

    at android.view.Surface.unlockCanvasAndPost(Native Method) 在绘制动画特效的时候点击back键会报以上异常. 主要原因:当点击back按钮时A ...

  4. sql 语言

    sql 语言 DDL DDL 全称 Data Definition Language,即数据定义语言. DATABASE 创建数据库 CREATE DATABASE 语句用于创建数据库. CREATE ...

  5. Luogu4899 IOI2018 Werewolf 主席树、Kruskal重构树

    传送门 IOI强行交互可还行,我Luogu的代码要改很多才能交到UOJ去-- 发现问题是对边权做限制的连通块类问题,考虑\(Kruskal\)重构树进行解决. 对于图上的边\((u,v)(u<v ...

  6. LOJ6089 小Y的背包计数问题 背包、根号分治

    题目传送门 题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模.$N \leq 10^5$ $23333 ...

  7. Jquery UI 中的datepicker() ,获取日期后的回调函数onClose()

    <head> //引入相关的css/js <link rel="stylesheet" href="//code.jquery.com/ui/1.10. ...

  8. 【php增删改查实例】第十三节 - EasyUI列格式化

    因为easyUI的datagrid组件是横着一格一格加载数据的,一行加载好了之后才会去加载下一行.所谓的列格式化,就是在加载某一列的所有单元格时,对即将加载到这些单元格的数据进行二次包装. 比如,我们 ...

  9. .Net版本依赖之坑引发的搜查

    前言 今天上午,一个客户反馈XX消息没有推送到第三方链接.于是我查看了推送日志列表,并没有今天的.接着登录服务器查询文件日志,看到了记录.我们的代码步骤是消息先推送到消息队列,消费消息队列时,记录文件 ...

  10. NTP服务部署和测试

    1. 概述2. 部署3. 配置4. 客户端配置4.1 客户端安装ntpdate4.2 同步设置 1. 概述 本篇博客主要记录如何部署一台NTP服务器,用于内网时间同步. 时间服务器对于集群内部节点之间 ...