mysql零距离接触-linux下mysql命令

一、连接MySQL

格式: mysql -h主机地址 -u用户名 -p用户密码  

1、例1:连接到本机上的MYSQL。(mysql-uroot-p12344)

  首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql<。

2、例2:连接到远程主机上的MYSQL。( mysql -h10.20.0.88-uroot-p12344 )

  假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

  mysql -h110.110.110.110 -uroot -pabcd123

  (注:u与root可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)。

二,服务命令

1.linux下启动mysql的命令:

  mysqladmin start

  /ect/init.d/mysql start (前面为mysql的安装路径)

2.linux下重启mysql的命令:

  mysqladmin restart

  /ect/init.d/mysql restart (前面为mysql的安装路径)

3.linux下关闭mysql的命令:

  mysqladmin -u root -p密码 shutdown

  /ect/init.d/mysql shutdown (前面为mysql的安装路径)

4.连接本机上的mysql:

  进入目录mysql\bin,再键入命令mysql -uroot -p, 回车后提示输入密码。

  退出mysql命令:exit(回车)

5.修改mysql密码:

  mysqladmin -u用户名 -p旧密码 password 新密码

  或进入mysql命令行SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');

  GRANT USAGE ON *.* TO '用户名'@'主机' IDENTIFIED BY 'biscuit';

  修改自己的密码SET PASSWORD = PASSWORD('biscuit');

6.增加新用户。(注意:mysql环境中的命令后面都带一个分号作为命令结束符)

  grant all privileges on *.* to 用户名@'%' identified by '密码' with grant option;

  flush privileges;(刷新权限设置)

  grant select on 数据库.* to 用户名@登录主机 identified by "密码"

  如增加一个用户test密码为123,让他可以在任何主机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:

  grant select,insert,update,delete on *.* to " Identified by "123";

7.跳过授权访问mysql

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

三、有关mysql数据库和表操作

  必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束

1、显示数据库列表。

  show databases;

2、建数据库:

  create database 库名;

3、建表:

       use mysql; //打开库

  create table 表名(字段设定列表);

4,增删表列

    (1)添加单列
    ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
        例如:ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
       在 id 后面添加 username属性:ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL   AFTER username;
    (2)添加多列
    ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
    (3)删除列
    ALTER TABLE tbl_name DROP [COLUMN] col_name
    例如:ALTER TABLE users1 DROP truename;
    (4)一次删除多列:
    ALTER TABLE uses1 DROP password,DROP age;
    也能删除一列的同时,新增一列。其间用逗号隔开。

5,修改列约束

    (5)添加主键约束:
    ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (col_name);
    (6)添加唯一约束
    ALTER TABLE tbl_name ADD UNIQUE(col_name);
    (7)添加外键约束
    ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type](外键列) REFERENCES 父类(参考列);
    (8)删除主键约束
    ALTER TABLE table_name DROP PRIMARY KEY;

    (9)删除唯一约束

    ALTER TABLE table_name DROP {INDEX|KEY} index_name;

    (10)删除外键约束

    ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;

    (11)添加/删除默认约束:
    ALTER TABLE table_name ALTER [COLUMN] column_name SET DEFAULT literal

    ALTER TABLE table_name ALTER [COLUMN] column_name DROP DEFAULT

6,修改列定义

    (1)修改列定义
    ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST |AFTER col_name];

    (2)修改列名称
    ALTER TABLE tbl_name CHANGE [COLUMN] col_name new_col_name column_definition [FIRST|AFTER col_name];

    (3)数据表更名

7,修改数据表名

    ALTER TABLE tbl_name RENAME [TO/AS] new_tbl_name

9,显示创建表和索引

    显示创建表的语句:SHOW CREATE TABLE table_name;
    查看表是否有索引:SHOW INDEXS FROM table_name;

10、显示库中的数据表

  show tables;

11、显示数据表的结构

  describe 表名;(desc)

       SHOW COLUMNS FROM 表名;

12、删库和删表

  drop database 库名;

  drop table 表名;

13,显示所属的数据库

        SELECT DATABASE();

14、编码的修改

  如果要改变整个mysql的编码格式:

  启动mysql的时候,mysqld_safe命令行加入

  --default-character-set=gbk

  如果要改变某个库的编码格式:在mysql提示符后输入命令

  alter database db_name default character set gbk;

四、有关mysql记录操作

四种基本操作:

操作

说明

INSERT

第一种:

INSERT [INTO] tb1_name [(col_name,...)] VALUES(val,...),(val1,...);   //INSERT 关键字,INTO 可省略,tb1_name 数据表的名称

当字段有自动增加的属性后,在插入表的所有字段的数据时,可以填写 NULL 或 DEFAULT 这两个关键字,表示按照原先默认自动增长的属性

第二种:

INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},……

只能一次性插入一条记录

第三种:

insert table_name [(colname...)] select.....

把查询到的结果插入到指定数据表中

UPDATE

update <表名>
set <列名>=<表达式>,[,<列名>=<表达式>]...
[where <条件>];

DELETE

1、删除记录DELETE:分为单表删除和多表删除
2、单表删除:DELETE FROM tbl_name [WHERE where_conditon]; 删除后再插入,插入的id号从最大的往上加,而不是填补删除的。

SELECT

SELECT select_expr [,select expr2...] 只查找某一个函数或表达式
[
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_name|position} [ASC|DESC],...] 按某个字段进行分组,相同的只显示第一个
[HAVING where_conditon] 分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],...] 排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] 限制返回数量
}

使用[AS] alias_name为其赋予别名

[]都可以省略,如select version();

SELECT * FROM tdb_goods\G; // 网格形式输出查询结果

条件:

条件

说明

WHERE

在WHERE表达式中,可以使用MySQL支持的函数或运算符

GROUP BY

查询结果分组:
[group by{col_name|position} [ASC|DESC],...]
select * from users group by sex;
select * from users group by 1;(这里的一表示查询的第一个字段,这里查询所有,第一个字段就是id,也就是会按照字段进行分组)
ASC 升序默认 desc 降序
可以有多个分组,用“,”隔开

HAVING

利用GROUP BY 分组 添加分组条件 [HAVING where_condition],HAVING的字段要么在select中出现,要么是聚合函数(只有一个结果),如count(id) > 1;

SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;

SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;

 

ORDER BY

对查询结果进行排序,默认是升序
order by{col_name}
select * from users order by id desc; //对一个字段排序
select * from users order by age,id desc; //两个字段同时排序
desc是降序
1、对查询结果进行排序:[ORDER BY [col_name | expr | position } [ASC|DESC],...]
2、可以同时按多条字段进行排序,规则是先按前面的字段排,在基础上再按后面字段排。
3、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,如果age有重复的,重复的字段里按id排序

LIMIT

1、限制查询结果返回的数量:[LIMIT {[offset,] row_count|row_count OFFSET offset}]
2、默认返回所有结果,通过LIMIT可以限制其返回指定数量的记录
3、如SELECT * FROM users LIMIT 2,3; 偏移量为2,从第三条开始,返回3条结果
4、偏移量不是按照id等字段来排序,而是按照当前查询排序的方式顺序偏移

五,约束

约束名

说明

UNSIGNED

无符号

空值与非空

NULL,字段值可以为空 NOT NULL,字段值禁止为空,不赋值会报错

AUTO_INCREMENT

自动编号,且必须与主键配合使用,保证记录的唯一性,类型必须为整型(可以是FLOAT(5,0)等,小数点后必须为0),默认情况下。起始值为1,每次的增量为1

PRIMARY KEY(KEY)

主键约束
每张数据表只能存在一个主键

主键保证记录的唯一性
主键自动为NOT NULL
auto_increment必须和主键primary key一起使用,但是主键primary key不一定要和auto_increment一块使用

UNIQUE KEY

唯一约束

唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束

DEFAULT

默认约束

默认值

FOREIGN KEY

外键约束
保持数据一致性,完整性;实现一对一或一对多关系。
要求:
父表和子表必须使用相同的存储引擎,而且禁止使用临时表;
数据表的存储引擎只能为InnoDB;
外键列和参照列必须具有类似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;
外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
在 MY.ini 文件中编辑默认的存储引擎:default-storage-engine=INNODB;
外键约束的参照操作:
1. CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。
如:FOREIGN KEY (key_name) REFERENCEES table_name (key_name) ON DELETE CASCADE;
ON DELETE \ ON UPDATE
2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。
3. RESTRICT: 拒绝对父表的删除或者更新操作。
4. NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同。

1.表级约束与列级约束
(1)对一个数据列建立的约束,称为列级约束
(2)对多个数据列建立的约束,称为表级约束
(3)列级约束既可以在列定义时声明,也可以在列定以后声明
(4)表级约束只能在列定义后声明
2.主键、外键、非空、唯一、check,default都是约束条件。主键、外键、既可以作为表级约束,也可作为列级约束
而像非空、唯一等( not null, default )只有列级约束

六、数据的导入导出

从本地文件load数据到表(LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符)

LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet

LINES TERMINATED BY '\r\n';

1,mysqldump的几种常用方法

(1)导出整个数据库(包括数据库中的数据)

    mysqldump -u username -p dbname > dbname.sql    

(2)导出数据库结构(不含数据)

    mysqldump -u username -p -d dbname > dbname.sql    

(3)导出数据库中的某张数据表(包含数据)

    mysqldump -u username -p dbname tablename > tablename.sql    

(4)导出数据库中的某张数据表的表结构(不含数据)

    mysqldump -u username -p -d dbname tablename > tablename.sql   

2,导入数据库

1、首先建空数据库
mysql>create database abc;

2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:

mysqldump -u username -p -d dbname tablename > tablename.sql   

#mysql -uroot -p123456 ps_se_sample_platform < experiment.sql

七,权限设置

设置用户独有的使用权限,your_mysql_name用户名,your_client_host主机名

GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';

八,mysql常用维护命令

1、show global status;列出MySQL服务器运行各种状态值

2、show variables;查询MySQL服务器配置信息语句

3、查看慢查询

  show variables like '%slow%';

  show global status like '%slow%';

4、最大连接数

  show variables like 'max_connections';MySQL服务器最大连接数

  show global status like 'Max_used_connections'; 服务器响应的最大连接数

5、查看表结构

  desc Tablename;

  describe Tablename;

  show columns from Tablename;

  show create table Tablename;

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3152390/blog/810731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值