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

1、链接MySQL

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

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

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

二、例2:链接到远程主机上的MYSQL。( mysql -h10.20.0.88-uroot-p12344 )数据库

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

  mysql -h110.110.110.110 -uroot -pabcd123ide

  (注:u与root能够不用加空格,其它也同样)函数

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

二,服务命令

1.linux下启动mysql的命令:编码

  mysqladmin startspa

  /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 &

3、有关mysql数据库和表操做

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

一、显示数据库列表。

  show databases;

二、建数据库:

  create database 库名;

三、建表:

       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;

十、显示库中的数据表

  show tables;

十一、显示数据表的结构

  describe 表名;(desc)

       SHOW COLUMNS FROM 表名;

十二、删库和删表

  drop database 库名;

  drop table 表名;

13,显示所属的数据库

        SELECT DATABASE();

1四、编码的修改

  若是要改变整个mysql的编码格式:

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

  --default-character-set=gbk

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

  alter database db_name default character set gbk;

4、有关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

一、删除记录DELETE:分为单表删除和多表删除
二、单表删除: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是降序
一、对查询结果进行排序:[ORDER BY [col_name | expr | position } [ASC|DESC],...]
二、能够同时按多条字段进行排序,规则是先按前面的字段排,在基础上再按后面字段排。
三、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,若是age有重复的,重复的字段里按id排序

LIMIT

一、限制查询结果返回的数量:[LIMIT {[offset,] row_count|row_count OFFSET offset}]
二、默认返回全部结果,经过LIMIT能够限制其返回指定数量的记录
三、如SELECT * FROM users LIMIT 2,3; 偏移量为2,从第三条开始,返回3条结果
四、偏移量不是按照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.主键、外键、非空、惟1、check,default都是约束条件。主键、外键、既能够做为表级约束,也可做为列级约束
而像非空、惟一等( not null, default )只有列级约束

6、数据的导入导出

从本地文件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,导入数据库

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

二、导入数据库
方法一:
(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经常使用维护命令

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

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

三、查看慢查询

  show variables like '%slow%';

  show global status like '%slow%';

四、最大链接数

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

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

五、查看表结构

  desc Tablename;

  describe Tablename;

  show columns from Tablename;

  show create table Tablename;

相关文章
相关标签/搜索