来自 首页 2019-10-05 08:01 的文章
当前位置: 澳门太阳娱乐手机登录 > 首页 > 正文

MySQL常用命令

(1)库的底蕴操作

1.user表
        假设供给从任何机器连接 mysql 服务器
报这一个错“EXC90RO本田CR-V 1130: Host 'root' is not allowed to connect to this MySQL server”
大家必要为接二连三客商设置权限

  • 翻看已有库: show databases;
  • 成立库(制定暗许字符集): ccreate database 库名 default charset=utf8;
  • 查阅创制库的言辞: show create database 库名;
  • 翻看当前所在库: select database();
  • 切换库: use 库名;
  • 查看库中已有表: show tables;
  • 删除库: drop database 库名;

在mysql库 user表中

(2)表的处理

图片 1

  • 创设表(拟订字符集)

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

    create table tablename(

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

    字段名 数据类型,

information_schema 库:
information_schema那张数据表封存了MySQL服务器全体数据库的新闻。如数据库名,数据库的表,表栏的数据类型与拜望权限等。再不难点,那台MySQL服务器上,到底有何样数据库、各样数据库有怎么样表,每张表的字段类型是如何,各样数据库要哪些权限技艺访谈,等等新闻都保留在information_schema表里面。

    字段名 数据类型,

mysql 库:
mysql数据库是mysql的参数数据库,那个是mysql的基本数据库,类似于sql server中的master表,首要担当累积数据库的顾客、权限设置、关键字等mysql本人索要利用的垄断和保管音讯。不可能去除

    ... ...

performance_schema 库:
5.5 版本起 新扩充了三个属性优化的引擎: PERFORMANCE_SCHEMA。注重用于搜罗数据库服务器品质参数。MySQL顾客是无法创立存款和储蓄引擎为PE福睿斯FORMANCE_SCHEMA的表,那么些成效暗中认可是停业的:
内需设置参数: performance_schema  才得以启动该效能,这些参数是静态参数,只可以写在my.cnf 中
不能够动态修改。
Performance的开启很简短,在my.cnf中[mysqld]加入performanc_schema,检查品质数据库是或不是运维的指令:
SHOW VARIABLES LIKE ‘performance_schema’;
举例重回的 值为ON,则证实质量数据库平时张开状态。

    );

 

  • 查阅创制表的言辞(字符集)

test 库:
做测验使用的。

    show create table tablename;

 

  • 查看表结构

3..显得查看命令
翻看mysql的此时此刻登入客户 
select user();

    desc tablename;

查看当前版本
select  @@version ;

  • 删除表

1、展现当前数据库服务器中的数据库列表:

    drop table tablename;

mysql> SHOW DATABASES;

(3)表记录处理

留心:mysqlCurry面有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奥迪Q5等说话。
※ 数据操作语言(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 数据库名

 

 

 

5.表结构操作

1.创建表
**
create table
**mysql> create table yuangong(
    -> id int unsigned not null auto_increment,
    -> firstname varchar(25) not null,
    -> lastname varchar(25) not null,
    -> email varchar(45) not null,
    -> phone varchar(10) not null,
    -> primary key(id));
Query OK, 0 rows affected (0.03 sec)

 

create table(
字段1名 数据类型  约束标准,
字段2名 数据类型   约束原则,
字段3名 数据类型   约束原则,
[index(字段名)]**

**);

 

任凭当前是否在利用对象数据库,都得以创制表,只要在表名前面加上目的数据库就可以。譬如:
mysql>create table 数据库名. 表名(
)

在sql语句中注意“约束的概念":

1.实体完整性约束(主键``--唯一且非空)`` primary key``()

``违约处理:``No action``(拒绝执行)

 

2.参照完整性约束(外键约束)foregin ``key``() ``references tableName(filedName) [``on delete``|``update casecade | ``no action``]

``违约处理:级联更新或拒绝执行

 

3.用户自定义完整性约束 非空、唯一、核对(``not null``,``unique``,``check``短语)

``违约处理:拒绝执行

 

4.默认值   default "默认值"

 

CREATE TABLE Person
(
 EmployeeEducationTypeID int NOT NULL PRIMARY KEY,
 EmployeeID int NOT NULL,
 EducationTypeID int NULL,
 GPA numeric(4,3) NOT NULL CHECK (GPA>2.5 AND GPA<=4.0)
)
-----------在列上直接定义CHECK约束

 

2.复制表 复制三个表命名称叫yuangong2
mysql> *create 新表  select from   库 . 表;

**

3.查看表
3.1表
mysql>show tables;
3.2表结构
mysql> describe 表名;
也可以
mysql> show columns in 表名;

mysql>show create table 表名;
 mysql>show full columns from 表名;
 

4.删除表
drop
[temporary] table [if exists] 表名 [, tbl_name, ...]

 

5.改表结构

修改表名: mysql> alter table 原表名 rename 新表名
日增二个字段:
mysql>alter table  表名 add  字段名 数据类型 约束 [first|after 列名];

去除贰个字段:
mysql>**alter table  表名 drop 字段名;

修改字段的名称及项目:(不论是还是不是退换字段类型,必定要双重内定该字段的花色)
mysql>alter table 表名 change  原字段名  字段新名 新数据类型 新约束原则;**

修改字段类型: mysql>alter table 表名  modify  原字段名 新数据类型 新约束原则;

修改字段排序: mysql>alter table 表名  modify   原字段名 新数据类型 first | after  字段名2;

6.创造有的时候表      一时,当职业在比异常的大的表上时,大概有的时候候须要周转相当多查询获得一个大气数据的小的子集,不是对全体表运营那些查询,而是让MySQL每回寻找所需的个别笔录,将记录封存到二个临时表可能更加快一些,然后对这几个偶然表实行询问操作。能够经过利用temporary关键字和create table语句来落到实处。

 mysql> create temporary table 不时表名 select firstname, lastname from 表名;

不常表的始建与别的表同样,只是它们存款和储蓄在操作系统钦定的一时目录中。一时表将在你总是MySQL期间存在,当您断开时,MySQL将自动删除表并释放具有的内部存款和储蓄器空间;当然了,你也足以手动的采用drop table命令删除有时表。

 
增:create  
删:drop
改:alter
查:select     show     describe

 

 

6.表内容操作
1.充实多少(插入)

**insert 语句三次插入整条数据:
   insert 表名 values('字段1值' , '字段2值' , '字段3值' , '字段n值');

insert 语句插入多少个字段数据:
   insert 表名('字段2' , '字段3' )  values('字段2值' , '字段3值' );**

insert 语句一遍插入多条数据:
   insert 表名 values('字段1值' , '字段2值' ),('字段1值' , '字段2值' );

行使insert…select语句插入从别的表选拔的行
   insert 表名(col1,col2) select col3,col4 from tbl_name2;

2.剔除数据
     删除全部表记录
       delete from 表名    (慎用!慎用!一定看了然)

     删除一条数据
       delete from 表名 where 字段名=值;    (
二次最少剔除一行记录,不能够只删除一行的三个字段记录)

 

3.立异数据
     改换五个字段的全数值
       update 表名 set  字段=值                  (一定!一定!看明白!改变该字段的具有记录值)

     改变单条记录的三个字段值
       update 表名  set  字段=值 where  字段=值 

     更动单条记录的八个字段值
       update 表名 set 字段1=值1, 字段2=值2  where 字段=值

 

4.询问数据
       =  !=  >=   <=   in()     between 值and值    or      and           like  _   %

     输出表全部记录
       select * from 表名

     输出某多少个字段值
       select   字段1,字段2,字段3  from 表名 

     查询不另行的笔录
       select  distinct 字段1,字段2,字段3 from 表名

 

标准查询        select * from 表名 where  字段名 (条件运算符)  值          规格运算符:=   !=   >=   <=     in()在列表内的值        between  值and值  范围内的值
        select * from TableName where id=2;
        select * from TableName where id>2;
        select * from TableName where id<2;     
        select * from TableName where id in(2,5,8);   
        select * from TableName where id between  2 and 8;
           以上运算符条件查询只好用在 数值匹配上

 

逻辑运算符
       or    and
        select * from TableName where id<2  or  gz=100;        (适合贰个尺度就可以)
        select * from TableName where id<2  and  gz=100;     (要相符五个规格)

 

张冠李戴查询
       通配符    like     _  相配单个字符       %相称n个字符
       select  * from yuangong  where 字段名  like '_b_';
       select * from yuangong   where 字段名 like 'b__';
       select * from yuangong   where 字段名 like '%b';

正则表明式
   regexp    ^   $  
.

        包罗有些字符组(在那之中包涵hello就可以)
                      select * from yuangong where 字段名 regexp 'hello';
       ^  以什么样最初
                      select * from yuangong where 字段名 regexp '^b';

       **$  以什么最终
                      *select from yuangong where 字段名  regexp 'b$';        .   相称大肆个字符                       select * from yuangong where 字段名 regexp 'b.';  查询以b开头的
       [0~9]  相配全体数字                       select * from yuangong where 字段名 regexp '1[1-2]';  查询第二个数字为1  第1个数字为1到2
      [a~z] 相称全体字幕
**
                      select * from yuangong where 字段名 regexp '1[a-e]';**查第两个为1 次之个数字为a到e的字符串

 

四则运算
          +   -    *    /

                select  name,字段1 * 字段2   from 表名;
                    select  字段1*12   from  表名  where  name="mike";
                    select 字段1*字段2  as  别名 from 表名 where name="mike";

 

嵌入聚合函数 算数函数
             min()      max()    avg()     sum()     count()

           select  min(money)  from  people;  字段最小值
           select  max(money) from people;   字段最大值
           select  avg(money)  from people;   字段平均值
           select  sum(money) from people;    获得字段的和
            select count(*) from people;              总行数
            select count(字段名) from people;      字段行数

 

排序操作 order by            order by    暗许从低到高,desc从高到低
          select *from 表名 order by 字段1,字段2 [desc];

limit展现设置         limit        select *from 表名 order by 字段1 limit 4;     展现前四行
       **select *from 表名 order by 字段1 limit 2,4;    ** 展现3到5行(从0开端计数)

 

 

分组查询 group by
         group by
              select子句中的列名必得为分组列或列函数
                  select 后边的全部列中,未有接纳聚合函数的列,必得出现在 group by前面
         select 部门,avg(工资) from 员工表 group by 部门; 各类单位平均报酬
           SELECT DEPT, MAX(SALARY) AS MAXIMUM FROM STAFF GROUP BY DEPT; 各样部门最高薪资
           select 部门,count(*) from 员工表 group by 部门; 各类机构人数

 

having结果筛选         having              从已经查询出的结果缓存中,再度查询
                    把 HAVING 加入 SQL 的来头是,WHERE 不可能运用于左券函数,而若无 HAVING,
                         就不也许测验结果条件。
          select name,sum(工资)  from table_name GROUP BY name  HAVING sum(工资)>1000 ;
         select  地区, SUM(人口), SUM(面积) FROM 表 GROUP BY 地区 having  sum(面积)>1000;

  

增:insert   
删:delete
改:update 查:select

 

 

7.索引操作

         MySQL索引都是B-树的花样保留。若无索引,施行查询时MySQL必需从第三个记录最初扫描整个表的有所记录,直至找到切合需求的笔录。表里面包车型客车笔录数据越来越多,这么些操作的代价就越高。假设作为寻找条件的列中元经创建了目录,MySQL不供给扫描任何记录就可以快捷赢得指标识录所在的地点。要是表有一千个记录,通过索引查找记录起码要比顺序扫描记录快100倍。
         独一性索引,这种索引和前边的“普通索引”基本同样,但有一个界别:索引列的装有值都只好出现叁回,即必得独一。
         主键是一种独一非空性索引,但它必得钦定为“P巴博斯 SLS级IMA纳瓦拉Y KEY”。主键常常在创设表的时候钦命

 

1.创办索引
      **
   create index 索引名 on 表名(字段名(数据类型));                   普通索引          create unique index 索引名 on 表名(字段名(数据类型));    ** 独一索引

2.在表结构中增多索引
         alter table 表名 add INDEX [索引名] (字段名);
         alter table 表名 add UNIQUE [索引名] (字段名);
        altertable 表名 add  primary key(字段名);  

3.创建表时增加索引
       **
create table 表名(
              id int,
              name varchar(),
              age int,
             index (id),
              );
       **create table 表名(
            id int,
            name varchar(),
            age int,
            UNIQUE [索引名] (字段名)
             );     
create table 表名(
            id int,
           name varchar(),
           age int,
           primary key  (字段名)
           );**

4.查询表中索引
        show  index  from 表名;

5.删除索引
        drop index 索引名 on 表名;

 

 

 

 

 

本文由澳门太阳娱乐手机登录发布于首页,转载请注明出处:MySQL常用命令

关键词: