Mysql 命令 操作

作者:计算机专家

(1)库的功底操作

1.user表
        假使急需从任何机器连接 mysql 服务器
报那几个错“E路虎极光ROHaval 1130: Host 'root' is not allowed to connect to this MySQL server”
我们须要为总是客商设置权限

MySQL常用命令:

启动MySQL:net start mysql
停止MySQL:net stop mysql
登录MySQL:mysql -h hostname -u username -p 或者mysql -u username -ppassword
退出MySQL:exit 或者 quit

数据库:database 表:table

  • 查看已有库: show databases;
  • 创制库(制订暗中认可字符集): ccreate database 库名 default charset=utf8;
  • 翻开创设库的口舌: show create database 库名;
  • 查看当前所在库: select database();
  • 切换库: use 库名;
  • 查看库中已有表: show tables;
  • 删除库: drop database 库名;

在mysql库 user表中

数据库的基本操作:

(2)表的管理

图片 1

创办和查看数据库:

创立数据库:create database 数据库名称;
查看全部数据库:show databases;
查阅有个别已经创办的数据库音信:show create database 数据库名称;
修改数据库编码:alter database 数据库名称 default character set 编码格局;
删去数据库:drop database 数据库名称;

  • 创制表(制订字符集)

 【1】Host——对应的允许访谈域(%表示全域,192.168.%.%意味对应账号对该段均可访谈,
           127.0.0.1意味着对应账号仅那台机器可访问)
【2】User——用户名
【3】Password——密码加密串
【29】xxx_priv——种种权力 

数据表的基本操作:

注意事项:操作数据表从前,须要使用”use 数据库名”钦点操作哪个数据库。

创办数据表:
<code>
Create table 表名
(
字段名1,数据类型 [完整性约束规范],
字段名2,数据类型 [完整性约束原则],
...
字段名n,数据类型 [完整性约束原则],
);
</code>
查阅数据表:
Show create table 表名;
<code>使用describe语句查看数据表:describe 表名;恐怕 desc 表名;</code>
修改数据表:
<code>修改表名:alter table 旧表名 rename [to] 新表名;
修改字段名:alter table 表名 change 旧字段名 新字段名 新数据类型;
正是新字段与旧字段数据类型同样,也不可能轻松,必得重写。
修改字段数据类型:alter table 表名 modify 字段名 数据类型;
增加字段:alter table 表名 add 新字段名 数据类型 [自律原则] [first|after 已存在字段名];
删除字段:alter table 表名 drop 字段名;
修改字段的排列地方:
alter table 表名 modify 字段名1 数据类型 first|after 字段名2;
去除数据表:drop table 表名;
</code>

    create table tablename(

2.mysql默认库
叁个刚建好的mysql数据库 平日有弹指间多少个库
# show database;
'information_schema'
'mysql'
'performance_schema'
'test'

表的自律:

主键约束:primary key;
外键约束:foreign key;
非空约束:not null;
独一性约束:unique;
私下认可值约束,用于安装字段的私下认可值:default;

  1. 主键约束:
    单字段主键:字段名 数据类型 primary key
    多字段主键:primary key(字段名1,字段名2,...,字段名n)
  2. 非空约束:字段名 数据类型 not null
  3. 唯一约束:字段名 数据类型 unique
  4. 暗中认可约束:字段名 数据类型 default 暗中认可值

    字段名 数据类型,

information_schema 库:
information_schema那张数据表保留了MySQL服务器全体数据库的音信。如数据库名,数据库的表,表栏的数据类型与拜候权限等。再简单题,那台MySQL服务器上,到底有啥样数据库、种种数据库有如何表,每张表的字段类型是什么样,种种数据库要怎么着权限技巧访谈,等等消息都保存在information_schema表里面。

设置表的字段值自动扩充:

字段名 数据类型 auto_increment
默许情形下,该字段的值是从1从头自增的。
索引:
创制索引:
创制表的时候创立索引:
<code>
create table 表名(
字段名 数据类型 [完整性约束标准],
字段名 数据类型 [完整性约束典型],
...
字段名 数据类型 [完整性约束原则],
[unique|fulltext|spatial] index|key [别名] (字段名 [(长度)]) [asc|desc]
);
</code>

翻看索引是或不是被选取:explain select * from 表名 where 字段名=值 g

  1. 应用create index 语句在已经存在的表上创设索引
    <code>create [unique|fulltext|spatial] index 索引名 on 表名(字段名 [(长度)]) [asc|desc]
    </code>
  2. 运用alter table 语句在已经存在的表上创立索引:
    <code>
    Alter table 表名 add [unique|fulltext|spatial] index 索引名(字段名 [(长度)]) [asc|desc]
    </code>
    删去索引:
  3. 应用alter table 删除索引:
    Alter table 表名 drop index 索引名;
  4. 选用drop index 删除索引:
    Drop index 索引名 on 表名;

拉长,更新与删除数据:
加上数据:

  1. 为表中具备字段增加数据:
    A.insert语句中钦命全部字段名
    Insert into 表名 (字段名1,字段名2,...)
    Values (值1,值2,...);
    B.insert语句中不点名字段名
    Insert into 表名 values(值1,值2,...)
    注意事项:增添的值得顺序必需和字段在表中的概念的顺序同样
  2. 为表的钦定字段增多数据:
    Insert into 表名 (字段名1,字段名2,...)
    Values(值1,值2,...);
    多学一招:insert语句的任何写法:
    Insert into 表名
    Set 字段名1=值1[,字段名2=值2,...];
  3. 何况加上多条记下:
    <code>
    Insert into 表名 [(字段名1,字段名2,...)]
    Values (值1,值2,...),
    (值1,值2,...),
    ...
    (值1,值2,...);
    </code>

    字段名 数据类型,

mysql 库:
mysql数据库是mysql的参数数据库,这一个是mysql的主干数据库,类似于sql server中的master表,首要担当累积数据库的客商、权限设置、关键字等mysql自身索要利用的主宰和管理音信。无法去除

立异数据:
  1. 更新部分数据
  2. 更新任何数额(不接纳where语句)
    <code>
    Update 表名
    Set 字段名1=值1[,字段名2=值2]
    [where 条件表明式];
    </code>

    ... ...

performance_schema 库:
5.5 版本起 新扩充了三个属性优化的内燃机: PERFORMANCE_SCHEMA。注重用于搜罗数据库服务器品质参数。MySQL客商是无法创设存款和储蓄引擎为PEPanameraFORMANCE_SCHEMA的表,这一个效应私下认可是关闭的:
亟待设置参数: performance_schema  才得以运营该功能,那个参数是静态参数,只可以写在my.cnf 中
不可能动态修改。
Performance的开启比异常的粗略,在my.cnf中[mysqld]加入performanc_schema,检查品质数据库是还是不是运营的吩咐:
SHOW VARIABLES LIKE ‘performance_schema’;
就算重回的 值为ON,则证实性能数据库符合规律张开状态。

删除数据:
  1. 剔除部分数据
  2. 删去全数数量(不应用where语句)
    Delete from 表名 [where 条件表明式];
    多学一招:
    接纳重要字truncate(截断)删除表中数据:
    Truncate [table] 表名;
    总计:delete删除部分数据,truncate删除全体数据。

    );

 

单表查询:

Select语句:
<code>
Select [distinct] *|{字段名1,字段名2,字段名3,...}
From 表名
[where 条件发挥式1]
[group by 字段名 [having 条件发挥式2]]
[order by 字段名 [asc|desc]]
[limit [offset] 记录数];
</code>

  • 翻开创立表的口舌(字符集)

test 库:
做测量试验使用的。

简简单单询问:

查询全部字段:

  1. 在select语句中钦赐全体字段:
    Select 字段名1,字段名2,... From 表名;
  2. 在select语句中应用“*”通配符代替全数字段
    Select * from 表名;

询问钦命字段:
<code>Select 字段名1,字段名2,...from 表名;</code>

    show create table tablename;

 

按原则查询:
  1. 带关系运算符的询问
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 条件表明式;
    </code>
  2. 带in关键字的询问:判定某些字段的值是不是在钦赐的汇集中
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 字段名 [not] in (元素1,元素2,...);
    </code>
  3. 带between and 关键字的询问:推断有些字段的值是或不是在内定的限制内
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 字段名 [not] between 值1 and 值2;
    </code>
  4. 空值查询
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 字段名 is [not] null;
    </code>
  5. 带distinct关键字的查询
    <code>
    Select distinct *|字段名1,字段名2,...]
    From 表名;
    </code>
  6. 带like关键字的查询
    a) 百分号(%)通配符:相配猖狂长度的字符串
    b) 下划线()通配符:相配单个字符
    <code>
    Select
    |字段名1,字段名2,...
    From 表名
    Where 字段名 [not] like ‘相称字符串’;
    </code>
    假设急需相配%依旧*,则应用转义字符’’,如:% 或者 _
  7. 带and关键字的多规格查询
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 条件表明式1 and 标准化表明式2 [...and 条件发挥式3];
    </code>
  8. 带or关键字的多规格查询
    <code>
    Select *|字段名1,字段名2,...
    From 表名
    Where 条件表明式1 or 准绳表明式2 [...or 条件发挥式3];
    </code>
  9. or和and关键字一齐利用的情事:
    And的初期级高于or,由此当相互联手行使时,应该先运算and两侧的尺度表明式,再运算or两侧的标准表明式。
  • 查看表结构

3..来得查看命令
翻开mysql的如今登陆客户 
select user();

    desc tablename;

查阅当前版本
select  @@version ;

  • 删除表

1、彰显当前数据库服务器中的数据库列表:

    drop table tablename;

mysql> SHOW DATABASES;

(3)表记录管理

注意:mysql库里面有MYSQL的系统音讯,我们改密码和新扩张客户,实际上即使用那些库进行操作。

  • 在表中插入记录

2、显示数据库中的数据表:

    insert into tablename values(值1),(值2),...,(值N);

mysql> USE 库名;
mysql> SHOW TABLES;

  • 查询表记录

3、展现数据表的组织:

    select * from tablename;

mysql> DESCRIBE 表名;

    select 字段名1,字段名2,...,字段名N from tablename;

4、彰显当前岁月
mysql>select now();

(4)表字段的操作

5、展现年月日
SELECT DAYOFMONTH(CURRENT_DATE);
+--------------------------+
| dayofmonth(current_date) |
+--------------------------+
|                       24 |
+--------------------------+
1 row in set (0.02 sec)

    语法:

 SELECT MONTH(CURRENT_DATE);
+---------------------+
| MONTH(CURRENT_DATE) |
+---------------------+
| 9 |
+---------------------+
1 row in set (0.00 sec)

      alter table tablename 实施动作;

SELECT YEAR(CURRENT_DATE); +--------------------+
| YEAR(CURRENT_DATE) |
+--------------------+
| 2009 |
+--------------------+
1 row in set (0.00 sec)

  • 增加字段
    •   alter table tablename add 字段名 数据类型 first | after 字段名;
  • 除去字段
    •   alter table tablename drop 字段名;
  • 修改字段数据类型
    •   alter table tablename modify 字段名 新数据类型;

 

      注: 修改数据类型时,会面临表中原有数据的限制!

  1. 当总括器用
    select ((4 * 4) / 10 ) + 25;
    +----------------------+
    | ((4 * 4) / 10 ) + 25 |
    +----------------------+
    | 26.60 |
    +----------------------+
    1 row in set (0.00 sec)
  • 修改字段名
    •   alter table tablename change 旧名 新名 数据类型;
  • 修改申明
    •   alter table tablename rename 新表明;

 

(5)表记录的管制

 显示字符串
mysql> SELECT "welecome to my blog!";
+----------------------+
| welecome to my blog! |
+----------------------+
| welecome to my blog! |
+----------------------+
1 row in set (0.00 sec)

  1. 除去表记录
    1.   delete from tablename where 条件;
  2. 立异表记录
    1.   update tablename set 字段名1=值1, 字段名2=值2,... where 条件;

串接字符串
select CONCAT(f_name, " ", l_name) AS Name
from employee_data
where title = 'Marketing Executive';
+---------------+
| Name |
+---------------+
| Monica Sehgal |
| Hal Simlai |
| Joseph Irvine |
+---------------+
3 rows in set (0.00 sec)
介意:这里用到CONCAT()函数,用来把字符串串接起来。别的,大家还用到此前学到的AS给结果列'CONCAT(f_name, " ", l_name)'起了个假名。

(6)一些至极的协作格局

 

  1. 混淆相称
    1.   where 字段名 like 表达式;
    2.   表达式
      1.   _   :  匹配单个字符
      2.   %  : 相配 0 到三个字符
  2. 正则相称 regexp
    1.   where 字段名 regexp "正则表明式";
    2.   正则表明式符号
      1.   ^ : 以...开头
      2.   $: 以...结尾
      3.   . : 相配率性叁个字符
      4.   []: 包含...内容
        1.         [0-9]:相配带数字的
        2.         [a-z]:相称带小写字母的
        3.         [A-Z]
      5.   * : 星号前边的字符出现 0 次也许一再

 

 

 

能够把 SQL 分为三个部分:
※ 数据定义语言(DDL),比如:CREATE、DROP、ALTE奥迪Q3等说话。
※ 数据操作语言(DML),比如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
※ 数据查询语言(DQL),举个例子:SELECT语句。(日常不会独自归于一类,因为唯有二个言辞)。
※ 数据调节语言(DCL),举例:GRANT、REVOKE等说话。
※ 事务调节语句(TCL),例如:COMMIT、ROLLBACK等说话

询问和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数量
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据

SQL 的数目定义语言 (DDL) 部分使大家有本事成立或删除表格。大家也能够定义索引(键),规定表之间的链接,以至施加表间的封锁。
SQL 中最重大的 DDL 语句:
CREATE DATABASE - 成立新数据库
ALTER DATABASE - 修改数据库
DROP DATABASE - 删除数据库

CREATE TABLE 
- 创设新表
ALTER TABLE - 更改(改变)数据库表
DROP TABLE - 删除表

CREATE INDEX 
- 创设索引(找寻键)
DROP INDEX - 删除索引
ALTER INDEX -修改索引

 

4.库操作

4.1 创立数据库
留心:创立数据库此前要先连续Mysql服务器
命令:
create database <数据库名>
例1:构建多个名称叫xhkdb的数据库
   mysql> create database xhkdb;

例2:创造数据库并分配客户
①CREATE DATABASE 数据库名;
②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数量库名.* TO 多少库名@localhost IDENTIFIED BY '
密码';
③SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');

依次实施3个指令达成数据库创制。注意:中文“密码”和“数据库”是户本身需求安装的。

4.2 突显数据库
命令:show databases   (注意:最后有个s)
mysql> show databases;
只顾:为了不再显得的时候乱码,要修改数据库暗中同意编码。以下以GBK编码页面为例实行表明:
1、修改MYSQL的布署文件:my.ini里面修改default-character-set=gbk
2、代码运营时修改:
   ①Java代码:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
   ②PHP代码:header("Content-Type:text/html;charset=gb2312");
   ③C语言代码:int mysql_set_character_set( MYSQL * mysql, char * csname);
该函数用于为眼下连日装置默许的字符集。字符串csname内定了1个有效的字符集名称。连接查对成为字符集的私下认可核对。该函数的行事措施与SET NAMES语句看似,但它还可以设置mysql- > charset的值,进而影响了由mysql_real_escape_string() 设置的字符集。

4.3 删除数据库
命令:drop database <数据库名> 譬喻:删除名称为 xhkdb的数据库
mysql> drop database xhkdb;
事例1:删除二个早就规定期存款在的数据库
   mysql> drop database drop_database;
   Query OK, 0 rows affected (0.00 sec)
事例2:删除一个不分明期存款在的数据库
   mysql> drop database drop_database;
   ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist
      //爆发错误,无法去除'drop_database'数据库,该数据库不真实。
   mysql> drop database if exists drop_database;
   Query OK, 0 rows affected, 1 warning (0.00 sec)//发生二个告诫表达此数据库一纸空文
   mysql> create database drop_database;
   Query OK, 1 row affected (0.00 sec)
   mysql> drop database if exists drop_database;//if exists 剖断数据库是不是留存,不设有也不产生错误
   Query OK, 0 rows affected (0.00 sec)

4.4 连接数据库
命令: use  <数据库名> 例如:若是xhkdb数据仓库储存在,尝试存取它:
   mysql> use xhkdb;
显示器提醒:Database changed
use 语句能够通知MySQL把db_name数据库作为默许(当前)数据库使用,用于后续语句。该数据库保持为私下认可数据库,直到语段的最后,恐怕直到发表叁个不一的USE语句:
   mysql> USE db1;
   mysql> SELECT COUNT(*) FROM mytable;   # selects from db1.mytable
   mysql> USE db2;
   mysql> SELECT COUNT(*) FROM mytable;   # selects from db2.mytable
利用USE语句为二个特定的此时此刻的数据库做标识,不会堵住你访谈此外数据库中的表。下边包车型地铁事例能够从db1数据库访谈笔者表,并从db2数据库采访编辑表:
   mysql> USE db1;
   mysql> SELECT author_name,editor_name FROM author,db2.editor
       ->        WHERE author.editor_id = db2.editor.editor_id;
USE语句被设置出来,用于与Sybase相宽容。
有一点点网络亲密的朋友问到,连接今后怎么退出。其实,不用退出来,use 数据库后,使用show databases就能够查询全体数据库,假诺想跳到任何数据库,用
   use 别的数据库名字
就能够了。

4.5 当前选拔的数据库
命令:mysql> select database();
MySQL中SELECT命令类似于另外编程语言里的print大概write,你能够用它来显示三个字符串、数字、数学表明式的结果等等。怎么样选拔MySQL中SELECT命令的例外作用?
1.显示MYSQL的版本
mysql> select version(); 
+-----------------------+ 
| version()             | 
+-----------------------+ 
| 6.0.4-alpha-community | 
+-----------------------+ 
1 row in set (0.02 sec) 

4.5 修改数据库

alter database  数据库名 用以转移数据库的全局脾气。那几个特色积累在数据库目录中的db.opt文件中

create database <数据库名>  增
drop database <数据库名>     删
alter <数据库名>                      改
show databases                      查

select database();
use 数据库名

 

本文由杏彩发布,转载请注明来源

关键词: