MySQL常用命令整理,MySQL常用命令

(1)库的功底操作

1.user表
        假使急需从任何机器连接 mysql 服务器
报那个错“E奥迪Q5RO宝马7系 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>

例:mysql> create database mystudent charset uft8;

    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 暗中认可值

#SQL语句报错:只会告诉用户报错的大意地方不会注解从头到尾的经过(静默形式)

    字段名 数据类型,

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>

图片 2

    字段名 数据类型,

mysql 库:
mysql数据库是mysql的参数数据库,这些是mysql的主干数据库,类似于sql server中的master表,主要担任积攒数据库的顾客、权限设置、关键字等mysql本人需求动用的支配和治本消息。不得以去除

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

例:mysql> create database `databases` charset utf8;

    ... ...

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,则申明品质数据库符合规律打开状态。

删除数据:
  1. 去除部分数据
  2. 删去全部数量(不使用where语句)
    Delete from 表名 [where 条件表明式];
    多学一招:
    运用首要字truncate(截断)删除表中数据:
    Truncate [table] 表名;
    计算:delete删除部分数据,truncate删除全数多少。

图片 3

    );

 

单表查询:

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

#数据库名称不可能使用首要字借使非要使用需前后加上暗记 ' (esc 键上面包车型地铁键再西班牙语状态下输出)

  • 查阅创制表的话语(字符集)

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

轻松询问:

询问全数字段:

  1. 在select语句中钦点全部字段:
    Select 字段名1,字段名2,... From 表名;
  2. 在select语句中动用“*”通配符取代全体字段
    Select * from 表名;

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

1.创办中文数据库

    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两侧的规格表明式。

例:mysql> set names gbk;

  • 查看表结构

3..体现查看命令
翻看mysql的此时此刻登入顾客 
select user();

例:mysql> create database 中文 charset utf8;

    desc tablename;

查看当前版本
select  @@version ;

图片 4

  • 删除表

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

#MySQL也能选拔普通话数据库.但需告诉服务器当前华语的字符集(不建议使用)

    drop table tablename;

mysql> SHOW DATABASES;

#创办数据库成功会再daya目录下创制与数据库对应名字的文件夹

(3)表记录管理

留意:mysqlCurry面有MYSQL的体系音信,大家改密码和新扩张客户,实际上尽管用那一个库开展操作。

(二)查看数据库

  • 在表中插入记录

2、展现数据库中的数据表:

1.查看全数数据库

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

mysql> USE 库名;
mysql> SHOW TABLES;

mysql> show databases;

  • 查询表记录

3、呈现数据表的组织:

图片 5

    select * from tablename;

mysql> DESCRIBE 表名;

2.查看内定部分的多少库

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

4、呈现当前时光
mysql>select now();

mysql> show database like [数量库名];

(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)

3.翻看数据库的创造语句

      alter table tablename 实施动作;

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

mysql> show create database [数量库名]; #即使涉嫌重大字或粤语需加反引号

  • 增添字段
    •   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 新表明;

 

mysql> alter database [数码库名] charset utf8;

(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)'起了个字母。

mysql> drop database [数量库名];

(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 次只怕屡屡

 

-- 表操作

 

(一)**创建表**

 

例:mysql>use [数量库名]

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

mysql> create table [if not exists] [表名] charset utf8;

查询和翻新指令构成了 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 -修改索引

mysql> create table if not exists student(name varchar(10),gender varchar(10),number varchar(10),age int ) charset utf8;

 

# if not exists:借使表名不设有,那么创造,不然不实行代码

4.库操作

表选项:字符集:chart 具体字符集;有限支撑表中数量存款和储蓄的字符集

4.1 创立数据库
瞩目:成立数据库从前要先一而再Mysql服务器
命令:
create database <数据库名>
例1:建构三个名字为xhkdb的数据库
   mysql> create database xhkdb;

查对集:collate 具体育高核查集;

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

存款和储蓄引擎:engine 具体的积存引擎(innodb 和myisam)

梯次实践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() 设置的字符集。

1.翻看全体表

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)

例:mysql> show tables;

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 别的数据库名字
就足以了。

2.翻看部分表:模糊相配:mysql> show tables like 'pattern';

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 修改数据库

3.查看表创设语句

alter database  数据库名 用来转移数据库的大局性情。那么些特色积存在数据库目录中的db.opt文件中

例:mysql> show create table student;

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

select database();
use 数据库名

例:mysql> show create table student g #g 等同于;

 

图片 6

 

例:mysql> show create table student G #将查到的布局旋转90度

 

图片 7

5.表结构操作

4.查看表结构:查看表中的字段消息

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)

mysql> desc [表名]; mysql> describe [表名]; show columns from [表名];

 

图片 8

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

**);

图片 9

 

5.改换数据表

不论是当前是或不是在利用对象数据库,都足以创制表,只要在表名前面加上指标数据库就可以。举个例子:
mysql>create table 数据库名. 表名(
)

表本人存在,还带有字段:表的修改分为三个部分;修改表本人和改造字段,表自个儿可以修改;表名和表选项

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

5-1.修改表名:

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

mysql> rename table [老表名] to [新表名];

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

图片 10

 

5-2.修改表选项:字符集

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

mysql> alter table [表名] charset = utf8;

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

图片 11

 

6.更动字段

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

字段操作非常多;新扩大,修改,重名,删除

``违约处理:拒绝执行

6-1.新扩充字段

 

例:mysql> alter table [表名]add [字段名] [数据类型列属性] [位置];

4.默认值   default "默认值"

# 地点:字段名可以存放表中的自由地点

 

# first :第八个地点,after :在哪些字段之后:alter 字段名;暗中同意的是在最后三个字段之后

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约束

例:mysql> alter table my_student add colum id int first;

 

图片 12

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

#注:可分为多行,mysql会自动搜索分号:只认分号为语句结束符。

**

6-2 修改字段

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

alter table [表名] modify [字段名] [数据类型] [属性] [位置];

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

例:mysql> alter table my_student modify number char(10) after id;

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

图片 13

 

6-3 重命名字段

5.改表结构

alter table [表名] change [旧字段] [新字段名] 数据类型 [属性] [位置]

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

例:修改学生表中的gender 字段为 sex

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

mysql> alter table my_student change gender sex varchar(10);

修改字段的名目及项目:(不论是或不是改动字段类型,必得求再度钦点该字段的类型)
mysql>alter table 表名 change  原字段名  字段新名 新数据类型 新约束标准;**

图片 14

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

  1. 去除字段

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

alter table [表名] drop [字段名];

6.创制不时表      临时,当工作在丰硕大的表上时,或然不经常候供给周转相当多询问获得二个气势恢宏数目标小的子集,不是对任何表运转这个查询,而是让MySQL每一趟寻觅所需的个别笔录,将记录封存到一个有时表或者更加快一些,然后对这几个有时表进行询问操作。能够通过使用temporary关键字和create table语句来兑现。

例:mysql> alter table my_student drop age;

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

#只要表中设有数据,删除表会删除字段中的全体数码,且删除不可逆需备份幸亏做去除

有时表的始建与任何表同样,只是它们存款和储蓄在操作系统钦定的一时目录中。有的时候表就要您总是MySQL时期存在,当你断开时,MySQL将电动删除表并释放具备的内部存款和储蓄器空间;当然了,你也能够手动的利用drop table命令删除有时表。

图片 15

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

8.去除数据表

 

drop table [表名 1] ,[表名2] ..; #能够叁遍性删除多张表,数据库不可能四个删除

 

例:mysql> drop table class; #剔除数据表也会去除数据库对应的公文夹下的公文(与仓库储存引擎有关),且删除不可逆需审慎

6.表内容操作
1.日增数据(插入)

图片 16

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

-- 数据操作

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

1.1 新扩张数据

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

方案1.给权标字段插入数据,无需钦点字段列表;须要数据的值出现的逐一必需与表中设计的字段出现的依次一致;凡是非数值数据,都亟需利用引号(提议单引号)包裹

运用insert…select语句插入从其余表选取的行
   insert 表名(col1,col2) select col3,col4 from tbl_name2;

insert into [表名] values[(值列表1),(值列表2)]; #能够一遍性插入多条记录

2.去除数据
     删除全部表记录
       delete from 表名    (慎用!慎用!一定看明白)

例:mysql> insert into my_student values(1,'itcast0001','jim','male'), (2,'itcast0002','hanmeimei','famale');

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

图片 17

 

方案2.给一些字段插入数据,需选定字段列表;字段列表出现的依次与字段的依次非亲非故,但值列表的次第必得与选定的字段的次第一致。

3.翻新数据
     更动一个字段的全部值
       update 表名 set  字段=值                  (一定!一定!看掌握!退换该字段的兼具记录值)

insert into [表名] [字段列表] values[(值列表1),(列表2)];

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

例:mysql> insert into my_student (number,sex,name,id) values('itcast0003','male','tom',3),('itcast0004','female','lily',4);

     改换单条记录的多少个字段值
       update 表名 set 字段1=值1, 字段2=值2  where 字段=值

图片 18

 

1.2 查看数据

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

select */字段列表 from 表名 where [条件]; #星号代表全体也可选定字段列表,也可不跟条件

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

例1:mysql> select * from my_student; #查看全部数据

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

图片 19

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

例子2:mysql> select id,number,sex,name from my_student where id = 1; #查看my_student id为1的数据

 

图片 20

标准查询        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;
           以上运算符条件查询只可以用在 数值相称上

1.3 更新数据

 

update [表名] set [字段] = [值] where [条件]; #where 可有可无,但建议都有where 要不就更新任何

逻辑运算符
       or    and
        select * from TableName where id<2  or  gz=100;        (符合一个尺码即可)
        select * from TableName where id<2  and  gz=100;     (要适合四个规范)

mysql> update my_student set sex = 'female' where name = 'jim';

 

图片 21

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

# 若无真的的数量更新不会中标。

正则表达式
   regexp    ^   $  
.

图片 22

        包涵有些字符组(在那之中含有hello就可以)
                      select * from yuangong where 字段名 regexp 'hello';
       ^  以怎么样开端
                      select * from yuangong where 字段名 regexp '^b';

1.4 删除数据

       **$  以什么最终
                      *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到2
      [a~z] 相称全数字幕
**
                      select * from yuangong where 字段名 regexp '1[a-e]';**查第叁个为1 次之个数字为a到e的字符串

delete from [表名] where [条件]; #建议加条件以卫戍全部刨除

 

mysql> delete from my_student where sex = 'male'; #除去需谨严

四则运算
             -    *    /

图片 23

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

-- 国语数据难点

 

华语数据难题本质是字符集难点,Computer只辨认二进制,而人类更四只识别符号,必要有个二进制与字符的对应关系(字符集)

置于聚合函数 算数函数
             min()      max()    avg()     sum()     count()

案例:mysql> insert into my_student values(5,'itcast0005','张越','男'); #插入粤语数据

           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;      字段行数

图片 24

 

如上顾客端向服务器插入中文数据不成事

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

原因:xD5xC5xD4xBD 代表的是汉语'张越' 在脚下编码(字符集)下相应的二进制编码变换到的十六进制:八个汉字等于多个字节(JBK)。报错的原因是服务器并未识别对应的多个字节,服务器以为数额是utf8(二个汉字有四个字节),读取八个字节调换来汉字(失利),剩余的再读多个字节(相当不足),最后促成战败.

limit呈现设置         limit        select *from 表名 order by 字段1 limit 4;     显示前四行
       **select *from 表名 order by 字段1 limit 2,4;    ** 突显3到5行(从0初始计数)

有着的数据库服务器认为的一部分特色都是经过劳动器端的变量来保存;系统先读取自个儿的变量,看看应该怎么样表现。

 

查看服务器度和胆识别哪些字符集

 

mysql> show character set; #翻看全体字符集

分组查询 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 部门; 每个单位人数

图片 25

 

mysql> show variables like 'character_set%'; #翻看服务器默许的对外管理的字符集

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;

图片 26

  

难题深入分析:客商端数据智能是GBK ,而服务器以为是UTF8,告诉服务器暗中同意的接受字符集为JBK。

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

mysql> set character_set_client = gbk; #修改服务器以为的客商端的字符集为GBK

 

图片 27

 

插入汉语效果:

7.索引操作

图片 28

         MySQL索引都是B-树的方式保留。若无索引,施行查询时MySQL必得从第二个记录开始扫描整个表的享有记录,直至找到符合供给的笔录。表里面包车型地铁笔录数据更加多,这一个操作的代价就越高。如若作为寻找条件的列阳春经成立了目录,MySQL无需扫描任何记录就能够火速获得指标识录所在的地方。如果表有一千个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
         独一性索引,这种索引和前面包车型大巴“普通索引”基本一样,但有三个组别:索引列的富有值都只好出现叁遍,即必得独一。
         主键是一种独一非空性索引,但它必得钦赐为“P中华VIMAHavalY KEY”。主键一般在创造表的时候钦定

但翻看数据,依然乱码,原因:数据出自是服务器而分析数据是客户端(顾客端只识别GBK,而客商端给的是utf8 所以乱码)

 

图片 29

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

技术方案:修改服务器给客商端的数码字符集为GBK

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

mysql> set character_set_results = gbk;

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  (字段名)
           );**

图片 30

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

翻看数据效果

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

图片 31

 

set 变量 = 值 ;修改只是会话品级(当前顾客端,当次连接有效,关闭失效)退出登录效果如下

 

图片 32

 

设置服务器对用户端的字符集的认知:能够运用连忙形式:set names [字符集]

 

mysql> set names gbk; #等价于三手续(character_set_client,character_set_results,character_set_connection;)

 

图片 33

connection 连接层:是字符集转换的中间者,假设统一了频率更加高,不统一也没难题。

-- 校队集难点

校队集:数据比较的秘籍

校队集有三种格式:

_bin:binary,二进制比较,收取二进制位,壹位壹个人的可比,区分轻重缓急写

_cs:case sensitive,大小写敏感,区分轻重缓急写

_ci:case insensitice,大小写不灵动,不区分轻重缓急写

mysql> show collation; #翻开数据库所支撑的校队集,查对集的选择:独有当数码产生对比的时候核查集才会一蹴而就,相比:使用utf8 的_bin 和_ci 来评释功效。

创办表使用分裂的校队集

mysql> create table my_collate_bin(name char(1)) charset utf8 collate utf8_bin;

mysql> create table my_collate_ci(name char(1)) charset utf8 collate utf8_general_ci;

1.开立分歧校队集的

图片 34

2.插入数据

mysql> insert into my_collate_bin values('a'),('A'),('B'),('B');

mysql> insert into my_collate_ci values('a'),('A'),('B'),('B');

图片 35

3.相比:根据有个别字段进行排序:order by 字段名 [asc|desc];asc 升序,desc 降序,暗许升序

mysql> select * from my_collate_bin order by name; #排序查找

mysql> select * from my_collate_ci order by name; #排序查找

图片 36

校队集必需再未有数量在此之前宣称好,假使有了多少再开展的话那么修改无效。

mysql> alter table my_collate_ci collate = utf8_bin;

图片 37

-- 乱码难点

web 乱码难题

动态网址有三部分组成:浏览器,apache 服务器(php) 数据库服务器,多少个部分都有和煦的字符集(汉语);数据需求再八个部分之间往来传递:很轻巧产生乱码

技术方案:统一编码(三码合一),但实质上不也许因为浏览器是客户管理(根本不容许决定),但又必得化解此类难点根本靠PHP

图片 38

 

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:MySQL常用命令整理,MySQL常用命令

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。