mysql常用命令总结
- 格式:docx
- 大小:20.39 KB
- 文档页数:7
mysql数据库常用语句SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ’disk’, ’testBack’, ’c:mssql7backupMyNwind_1.dat’--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
mysql命令参数MySQL是一个开源的关系型数据库管理系统,提供了丰富的命令和参数供用户进行数据库管理和操作。
下面是一些常用的MySQL命令参数的介绍,总字数超过1200字:1. -h或--host:指定MySQL服务器的主机名或IP地址。
例如,可以使用-h localhost连接到本地的MySQL服务器。
2. -u或--user:指定连接MySQL服务器时使用的用户名。
3. -p或--password:指定连接MySQL服务器时使用的密码。
使用该参数会提示用户输入密码。
4. -P或--port:指定连接MySQL服务器时使用的端口号。
默认情况下,MySQL服务器使用3306端口。
5. -D或--database:指定要使用的数据库。
可以在连接MySQL服务器后使用use命令来切换数据库,也可以使用该参数在连接时直接指定要使用的数据库。
6. -e或--execute:指定要执行的SQL语句。
该参数可用于在命令行中直接执行一条SQL语句。
7. -r或--result-file:指定查询结果的输出文件。
可以使用该参数将查询结果保存到文件中,而不是在命令行中显示。
8. --skip-column-names:在查询结果中不显示列名。
使用该参数可以只显示查询结果的数据部分,而不包含列名。
9. -s或--silent:使命令行工具在执行命令时不输出任何信息。
使用该参数可以使输出更加简洁。
10. -i或--ignore-errors:在执行SQL语句时忽略错误。
默认情况下,如果SQL语句执行出错,命令行工具会停止执行并显示错误信息。
使用该参数可以忽略错误继续执行后续语句。
11. -v或--verbose:显示详细的执行信息。
使用该参数可以在执行命令时显示更多的调试信息,帮助用户进行故障排查。
12. --show-warnings:在执行命令时显示警告信息。
警告信息是一些非致命性的问题,可以使用该参数查看这些警告信息。
mysql命令参数MySQL命令参数详解MySQL作为一种流行的关系型数据库管理系统,其常用的命令参数也是必须掌握的技能之一。
在本文中,我们将详细介绍MySQL的常用命令参数,包括参数的含义、用法以及实际应用场景。
1. -h, --host该参数用于指定MySQL服务器的主机名或IP地址。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,localhost表示本地主机,username表示用户名,password表示密码。
2. -P, --port该参数用于指定MySQL服务器的端口号。
默认情况下,MySQL服务器的端口号为3306。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -P 3306 -u username -p password其中,3306表示MySQL服务器的端口号。
3. -u, --user该参数用于指定MySQL服务器的用户名。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,username表示MySQL服务器的用户名。
4. -p, --password该参数用于指定MySQL服务器的密码。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password其中,password表示MySQL服务器的密码。
5. -D, --database该参数用于指定要连接的MySQL数据库名称。
例如,可以使用以下命令连接到MySQL服务器:mysql -h localhost -u username -p password -D dbname其中,dbname表示要连接的MySQL数据库名称。
6. -e, --execute该参数用于指定要在MySQL服务器上执行的SQL语句。
mysql基本用法MySQL是一种开源的关系型数据库管理系统,它是最流行的数据库之一,被广泛应用于Web应用程序的开发中。
MySQL具有高性能、可靠性、易用性和可扩展性等优点,因此备受开发者的青睐。
本文将介绍MySQL的基本用法,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等操作。
1. 创建数据库在MySQL中,可以使用CREATE DATABASE语句来创建一个新的数据库。
例如,要创建一个名为mydb的数据库,可以使用以下命令:CREATE DATABASE mydb;2. 创建表在MySQL中,可以使用CREATE TABLE语句来创建一个新的表。
例如,要创建一个名为users的表,其中包含id、name和email三个字段,可以使用以下命令:CREATE TABLE users (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,PRIMARY KEY (id));3. 插入数据在MySQL中,可以使用INSERT INTO语句来向表中插入数据。
例如,要向users表中插入一条记录,可以使用以下命令:INSERT INTO users (name, email) VALUES ('John Doe', '****************');4. 查询数据在MySQL中,可以使用SELECT语句来查询表中的数据。
例如,要查询users表中的所有记录,可以使用以下命令:SELECT * FROM users;5. 更新数据在MySQL中,可以使用UPDATE语句来更新表中的数据。
例如,要将users表中id为1的记录的name字段更新为Jane Doe,可以使用以下命令:UPDATE users SET name='Jane Doe' WHERE id=1;6. 删除数据在MySQL中,可以使用DELETE语句来删除表中的数据。
MYSQL命令大全常见的MySQL命令大全一、连接MySQL格式:mysql -h主机地址-u用户名-p用户密码1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>。
2、例2:连接到远程主机上的MYSQL。
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。
则键入以下命令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不用加空格,其它也一样)3、退出MYSQL命令:exit (回车)。
二、修改密码格式:mysqladmin -u用户名-p旧密码password 新密码1、例1:给root加个密码ab12。
首先在DOS下进入目录mysqlbin,然后键入以下命令:mysqladmin -uroot -password ab12注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345三、增加新用户。
(注意:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号作为命令结束符)格式:grant select on 数据库.* to 用户名@登录主机identified by \"密码\"例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
首先用以root用户连入MySQL,然后键入以下命令:grant select,insert,update,delete on *.* to test2@localhost identified by \"abc\";如果你不想test2有密码,可以再打一个命令将密码消掉。
mysql客户端常⽤命令⼀mysqldump这个命令是逻辑导出,导出的内容⽅便查看和编辑,如果要备份⼤量数据,最好选择物理导出命令mysqldump的命令⾏参数也可以在配置⽂件的[mysqldump][client]组使⽤,和mysql命令⾏参数⼀样的就不列举了mysqldump -u username -p dbname table1 table2 ...-> BackupName.sqldbname参数表⽰数据库的名称;table1和table2参数表⽰需要备份的表的名称,为空则整个数据库备份;BackupName.sql参数表设计备份⽂件的名称,⽂件名前⾯可以加上⼀个绝对路径。
通常将数据库备份成⼀个后缀名为sql的⽂件;mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql加上了--databases选项,然后后⾯跟多个数据库mysqldump -u username -p -all-databases > BackupName.sql备份所有数据库mysqldump -u ⽤户名 -p -d –add-drop-table 数据库名 > 导出的⽂件名备份创建表语句包含删表语句mysqldump -u username -p dbname < filename.sql//导⼊数据库--add-drop-database //添加删除数据库语句在创建数据库之前--add-drop-table--add-drop-trigger-n // 不导出创建数据库语句--no-create-db-t // 不导出创建表语句--no-create-info--replace //⽤replace语句替换insert语句--allow-keywords //在列名前添加表名,作为关键字-i //添加版本等信息--comments,--skip-comments--dump-date //包含⽇期 --skip-dump-date--log-error //记录警告和错误到指定⽂件--set-charset //输出设置字符集语句 --skip-set-charset,--no-set-names -N--compact //产⽣更紧凑的输出--skip-compact--compatible //产⽣的输出尽可能兼容其它数据库服务器-c //insert语句包含列名 --complete-insert--create-options //包含所有创建表选项--hex-blob //⽤16进制输出⼆进制列数据-Q //数据库,表,列名⽤单引号或双引号括起来 --quote-names-r //输出到指定的⽂件 --result-file-T //输出数据到tab分割的⽂本格式txt⽂件--tab--tz-utc //即使两个服务器在不同的时区,TIMESTAMP列的值也不会有问题--skip-tz-utc-A //导出所有数据库--all-databases-B //导出⼏个数据库--databases-E //导出定时事件--event导出时不包含创建和修改的时间,所以恢复时创建时间就是恢复的时间,可以到处mysql.event表包含所有信息--ignore-error //忽略指定的错误--ignore-table //不导出指定的表-d //不导出表数据,只导出表结构–-no-data-R //导出存储过程和⾃定义函数–-routines导出时不包含创建和修改的时间,所以恢复时创建时间就是恢复的时间,可以到处mysql.proc表包含所有信息--tables //导出的表名--triggers //导出的触发器名字-w //导出时的where条件 --where--add-locks //导出的表保护lock tables和unlock tables语句-F //开始导出前刷新服务器⽇志⽂件--flush-logs-x //导出前锁所有表--lock-all-tables-l //导出前锁表 --lock-tables --skip-lock-tables--no-autocommit //是否包含SET autocommit = 0 和 COMMIT--order-by-primary //导出时是否按主键排序--single-transaction //导出前发送START TRANSACTION语句到服务器,设置数据库事务级别是REPEATABLE READ-q //⼀次从服务器检索⼀⾏数据--quick--opt //使导出更快--skip-opt-K //数据插⼊后再创建索引--disable-keys-e //⽤多⾏语法写insert语句--extended-insert--insert-ignore //⽤insert ignore语句替换insert语句⼆mysqlmysql命令⾏参数,也可以在配置⽂件的[client][mysql]组使⽤。
mysql数据库常用语句大全1.连接数据库:连接本地数据库:mysql -u root -p连接远程数据库:mysql -h 192.169.22.199 -u root -p退出数据库:exit2.创建数据库:create database payment;使用 mysqladmin 创建数据库mysqladmin -u root -p create abc_db; 3.显示所有数据库:show databases;4.删除数据库:drop database payment;使用 mysqladmin 删除数据库mysqladmin -u root -p drop abc_db5.选择数据库:use home_db;6.数据类型:数值类型:TINYINT:SMALLINT:MEDIUMINT:INT(INTEGER):BIGINT:FLOAT:DOUBLE:DECIMAL:日期和时间类型:DATE:TIEM:DATETIME:YEAR:TIMESTAMP:字符串类型:CHAR:VARCHAR:TINYBLOB:TINYTEXT:BLOB:TEXT:MEDIUMBLOB:MEDIUMTEXT:LONGBLOB:LONGTEXT:7.创建数据表:CREATE TABLE IF NOT EXISTS `t_order`( `id` INT(10) UNSIGNED AUTO_INCREMENT,`title` VARCHAR(100) NOT NULL,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;8.删除数据表:DROP TABLE t_order;9.insert 插入:插入一条数据:INSERT INTO t_order(title)VALUES('手机');INSERT 插入多条数据:INSERT INTO t_order(title)VALUES('笔记本'),('平板电脑');10.select 查询:所有字段查询:SELECT * FROM t_order;某些字段查询:SELECT t_order.id, t_order.title FROM t_order;分页查询:SELECT t_order.title FROM t_order WHERE id LIMIT 1,10 11.where 条件:OR,AND的应用:SELECT * FROM t_order WHERE title ='手机' OR title='笔记本';SELECT * FROM t_order WHERE title ='手机' AND id=2;12.update 更新:UPDATE t_order SET title='苹果手机' WHERE id =2;13.delete 删除:DELETE FROM t_order WHERE id=2;14.like 查询SELECT * FROM t_order WHERE title LIKE '%手机%';SELECT * FROM t_order WHERE title LIKE '_机';14.union 联合查询:连接两个以上的 SELECT 语句合并成一个结果集合SELECT * FROM t_order UNION SELECT * FROM t_user; SELECT * FROM t_order UNION ALL SELECT * FROM t_user;15.order by 排序:升序排序:SELECT * FROM t_order ORDER BY id ASC;降序排序:SELECT * FROM t_order ORDER BY id DESC;16.group by 分组:SELECT title, count(*) as total FROM t_order GROUP BY title;17.join 连接:inner join(内连接) on:获取两个表中字段匹配关系的记录SELECT * FROM t_order o INNER JOIN t_user u ON o.id =u.id;left join(左连接)on:获取左表所有记录,即使右表没有对应匹配的记录SELECT * FROM t_order o LEFT JOIN t_user u ON o.id =u.id;right join(右连接)on:获取右表所有记录,即使左表没有对应匹配的记录SELECT * FROM t_order o RIGHT JOIN t_user u ON o.id =u.id;18.null的处理:null值的判断:SELECT * FROM t_user WHERE name IS NULL;非null值的判断:SELECT * FROM t_user WHERE name IS NOT NULL;19.REGEXP 正则表达式:SELECT * FROM t_order WHERE title REGEXP('手机$'); SELECT * FROM t_order WHERE title REGEXP('^笔');。
一.衔接MySQL格局: mysql -h主机地址-u用户名-p用户暗码1.例1:衔接到本机上的MYSQL.起首在打开DOS窗口,然落后入目次mysqlbin,再键入敕令mysql -uroot -p,回车后提示你输暗码,假如刚装配好MYSQL,超等用户root是没有暗码的,故直接回车即可进入到MYSQL中了,MYSQL 的提示符是: mysql>.2.例2:衔接到长途主机上的MYSQL.假设长途主机的IP为:110.110.110.110,用户名为root,暗码为abcd123.则键入以下敕令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不必加空格,其它也一样)3.退出MYSQL敕令: exit (回车).二.修正暗码格局:mysqladmin -u用户名 -p旧暗码 password 新暗码1.例1:给root加个暗码ab12.起首在DOS下进入目次mysqlbin,然后键入以下敕令:mysqladmin -uroot -password ab12注:因为开端时root没有暗码,所以-p旧暗码一项就可以省略了.2.例2:再将root的暗码改为djg345.mysqladmin -uroot -pab12 password djg345三.增长新用户.(留意:和上面不合,下面的因为是MySQL情形中的敕令,所今后面都带一个分号作为敕令停止符)格局:grant select on 数据库.* to 用户名@登录主机 identified by \"暗码\"例1.增长一个用户test1暗码为abc,让他可以在任何主机上登录,并对所稀有据库有查询.拔出.修正.删除的权限.起首用以root用户连入MySQL,然后键入以下敕令:grant select,insert,update,delete on *.* to test2@localhost identified by \"abc\";假如你不想test2有暗码,可以再打一个敕令将暗码消失落.grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";在上面讲了登录.增长用户.暗码更改等问题.下面我们来看看MySQL中有关数据库方面的操纵.留意:你必须起首登录到MySQL中,以下操纵都是在MySQL的提示符下进行的,并且每个敕令以分号停止.1.MySQL 经常应用敕令create database name; 创建数据库use databasename; 选择数据库drop database name 直接删除数据库,不提示show tables; 显示表describe tablename; 表的具体描写select 中加上distinct去除反复字段mysqladmin drop database name 删除数据库前,有提示.显示当前mysql版本和当前日期select version(),current_date;2.修正mysql中root 的暗码:shell>mysql -u root -pmysql> update user set password=password(”xueok654123″) where user=’root’;mysql> flush privileges //刷新数据库mysql>use dbname; 打开数据库:mysql>show databases; 显示所稀有据库mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后mysql>describe user; 显示表mysql数据库中user表的列信息);3.grant创建一个可以从任何地方衔接办事器的一个完全的超等用户,但是必须应用一个口令something做这个mysql> grant all privileges on *.* to user@localhost identified by ’something’ with增长新用户格局:grant select on 数据库.* to 用户名@登录主机identified by “暗码”GRANT ALL PRI VILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;删除授权:mysql> revoke all privileges on *.* from root@”%”;mysql> delete from user where user=”root” and host=”%”;mysql> flush privileges;创建一个用户custom在特定客户端登录,可拜访特定命据库fangchandbmysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ identified by ‘ passwd’重定名表:mysql > alter table t1 rename t2;4.mysqldump10.操纵数据#拔出表departmentinsert into department(name,description) values('体系部','体系部');insert into department(name,description) values('公关部','公关部');insert into department(name,description) values('客服部','客服部');insert into department(name,description) values('财务部','财务部');insert into department(name,description) values('测试部','测试部');#拔出表s_positioninsert into s_position(name,description) values('总监','总监');insert into s_position(name,description) values('司理','司理');insert into s_position(name,description) values('通俗员工','通俗员工');#拔出表depart_posinsert into depart_pos(department_id,position_id)select a.id department_id,b.id postion_idfrom department a,s_position b;#拔出表stafferinsert into staffer(name,department_id,position_id) values('陈达治',1,1);insert into staffer(name,department_id,position_id) values('李文宾',1,2);insert into staffer(name,department_id,position_id) values('马佳',1,3);insert into staffer(name,department_id,position_id) values('亢志强',5,1);insert into staffer(name,department_id,position_id) values('杨玉茹',4,1);11.查询及删除操纵#显示体系部的人员和职位select , department_name, position_namefrom staffer a,department b,s_position cwherea.department_id=b.id and a.position_id=c.id and ='体系部';#显示体系部的人数select count(*) from staffer a,department bwhere a.department_id=b.id and ='体系部'#显示各部分的人数select count(*) cou,from staffer a,department bwhere a.department_id=b.idgroup by ;#删除客服部delete from department where name='客服部';#将财务部修正为财务一部update department set name='财务一部' where name='财务部';12.备份和恢复备份数据库stafferc:\mysql\bin\mysqldump -uroot -proot staffer>e:\staffer.sql得到的staffer.sql是一个sql剧本,不包含建库的语句,所以你须要手工创建数据库才可以导入恢复数据库staffer,须要创建一个空库stafferc:\mysql\bin\mysql -uroot -proot staffer<staffer.sql假如不愿望后来手工创建staffer,可以c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sqlmysql -uroot -proot >e:\staffer.sql但如许的话体系种就不克不及消失staffer库,且无法导入其他名字的数据库,当然你可以手工修正staffer.sql文件13.从文本向数据库导入数据1)应用对象c:\mysql\bin\mysqlimport这个对象的感化是将文件导入到和去失落文件扩大名名字雷同的表里,如staffer.txt,staffer都是导入到staffer表中经常应用选项及功效如下-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息-f or --force不管是否碰到错误,mysqlimport将强迫持续拔出数据-i or --ignore mysqlimport跳过或者疏忽那些有雷同独一症结字的行, 导入文件中的数据将被疏忽.-l or -lock-tables 数据被拔出之前锁住表,如许就防止了,你在更新数据库时,用户的查询和更新受到影响.-r or -WordStr 这个选项与-i选项的感化相反;此选项将替代表中有雷同独一症结字的记载.--fields-enclosed- by= char指定文本文件中数据的记载时以什么括起的, 许多情形下数据以双引号括起. 默认的情形下数据是没有被字符括起的.--fields-terminated- by=char指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号.您可以用此选项指定命据之间的分隔符.默认的分隔符是跳格符(Tab)--lines-terminated- by=str此选项指定文本文件中行与行之间数据的分隔字符串或者字符. 默认的情形下mysqlimport以newline为行分隔符.您可以选择用一个字符串来替代一个单个的字符:一个新行或者一个回车.mysqlimport敕令经常应用的选项还有-v 显示版本(version),-p 提示输入暗码(password)等.这个对象有个问题,无法疏忽某些列,如许对我们的数据导入有很大的麻烦,固然可以手工设置这个字段,但会消失莫名其妙的成果,我们做一个简略的示例我们界说如下的depart_no.txt,保管在e盘,距离为制表符\t10 1011 1112 24履行如下敕令c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt在这里没有应用列的包抄符号,朋分采取默认的\t,因为采取此外符号会有问题,不知道是不是windows的原因2)Load Data INFILE file_name into table_name(column1_name,column2_name)这个敕令在mysql>提示符下应用,长处是可以指定列导入,示例如下c:\mysql\bin\mysql -uroot -proot staffermysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);这两个对象在Windows 下应用都有问题,不知道是Windows的原因照样中文的问题,并且不指定的列它产生了空值,这显然不是我们想要的,所以谨严应用这些对象进入MySQL:mysql -uuser -ppassword --port=33071:应用SHOW语句找出在办事器受骗前消失什么数据库:mysql> SHOW DATABASES;2:2.创建一个数据库MYSQLDATAmysql> Create DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键消失Database changed 时解释操纵成功!)4:检讨如今的数据库中消失什么表mysql> SHOW TABLES;5:创建一个数据库表mysql> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));6:显示表的构造:mysql> DESCRIBE MYTABLE;7:往表中参加记载mysql> insert into MYTABLE values ("hyq","M");8:用文本方法将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;9:导入.sql文件敕令(例如D:/mysql.sql)mysql>use database;mysql>source d:/mysql.sql;10:删除表mysql>drop TABLE MYTABLE;11:清空表mysql>delete from MYTABLE;12:更新表中数据mysql>update MYTABLE set sex="f" where name='hyq';UPDATE [LOW_PRIORITY] [IGNORE] tbl_nameSET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition][ORDER BY ...][LIMIT rows]orUPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]SET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition]UPDATE 以新的值更新现存表中行的列.SET 子句指出要修正哪个列和他们应当给定的值.WHERE子句假如被给出,指定哪个记载行应当被更新.不然,所有的记载行被更新.假如 ORDER BY 子句被指定,记载行将被以指定的次序更新.假如你指定症结词 LOW_PRIORITY,UPDATE 的履行将被延迟,直到没有其它的客户正直在读取表.假如你指定症结词 IGNORE,该更新语句将不会平常中断,即使在更新进程中消失反复键错误.导致冲突的记载行将不会被更新.假如在一个表达式中从 tbl_name 中拜访一个列,UPDATE 应用列的当前值.举例来说,下面的语句设置 age 列值为它的当前值加 1 :mysql> UPDATE persondata SET age=age+1;UPDATE 赋值是从左到右盘算的.举例来说,下列语句将 age 列设置为它的两倍,然后再加 1 :mysql> UPDATE persondata SET age=age*2, age=age+1;假如你设置列为其当前的值,MySQL 留意到这点,其实不更新它.UPDATE 返回现实被转变的记载行数量.在 MySQL 3.22 或更新的版本中,C API 函数 mysql_info()返回被匹配并更新的记载行数量,以及在 UPDATE时代产生的警告的数量.在 MySQL 3.23 中,你可以应用 LIMIT # 来确保只有给定的记载行数量被更改.假如一个 ORDER BY 子句被应用(从 MySQL 4.0.0 开端支撑),记载行将以指定的次序被更新.这现实上只有连同 LIMIT一路才有效.从 MySQL 4.0.4 开端,你也可以履行一个包含多个表的UPDATE 的操纵:UPDATE items,month SET items.price=month.priceWHERE items.id=month.id;留意:多表 UPDATE 不成以应用 ORDER BY 或 LIMIT.症结字: mysql启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库:show databases; 选择数据库:use databaseName; 列出表格:show tables; 显示表格列的属性:show columns from tableName; 树立数据库:source fileName.txt; 匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; 增长一个字段:alter table tabelName add column fieldName dateType;增长多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 多行敕令输入:留意不克不及将单词断开;当拔出或更改数据时,不克不及将字段的字符串睁开到多行里,不然硬回车将被储存到数据中; 增长一个治理员帐户:grant all on *.* to user@localhost identified by "password"; 每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以; 查询时光:select now();查询当前用户:select user(); 查询数据库版本:select version(); 查询当前应用的数据库:select database();1.删除student_course数据库中的students数据表:rm -f student_course/students.*2.备份数据库:(将数据库test 备份) mysqldump -u root -p test>c:\test.txt 备份表格:(备份test数据库下的mytable表格) mysqldump -u root -p test mytable>c:\test.txt 将备份数据导入到数据库:(导回test数据库) mysql -u root -p test3.创建暂时表:(树立暂时表zengchao) create temporary table zengchao(name varchar(10));4.创建表是先断定表是否消失create table if not exists students(……);5.从已经有的表中复制表的构造create table table2 select * from table1 where 1<>1;6.复制表create table table2 select * from table1;7.对表从新定名alter table table1 rename as table2;8.修正列的类型alter table table1 modify id int unsigned;//修正列id的类型为int unsigned alter table table1 change id sid int unsigned;//修正列id的名字为sid,并且把属性修正为int unsigned9.创建索引alter table table1 add index ind_id (id);create index ind_id on table1 (id); create unique index ind_id on table1 (id);//树立独一性索引10.删除索引drop index idx_id on table1;alter table table1 drop index ind_id; 11.结合字符或者多个列(将列id与":"和列name和"="衔接)select concat(id,':',name,'=') from students; 12.limit(选出10到20条)<第一个记载集的编号是0> select * from students order by id limit 9,10; 13.MySQL不支撑的功效事务,视图,外键和引用完全性,存储进程和触发器14.MySQL会应用索引的操纵符号<,<=,>=,>,=,between,in,不带%或者_开首的like 15.应用索引的缺陷1)减慢增删改数据的速度; 2)占用磁盘空间; 3)增长查询优化器的累赘; 当查询优化器生成履行筹划时,会斟酌索引,太多的索引会给查询优化器增长工作量,导致无法选择最优的查询筹划; 16.剖析索引效力办法:在一般的SQL语句前加上explain; 剖析成果的寄义:1)table:表名; 2)type:衔接的类型,(ALL/Range/Ref).个中ref是最幻想的; 3)possible_keys:查询可以应用的索引名; 4)key:现实应用的索引; 5)key_len:索引中被应用部分的长度(字节); 6)ref:显示列名字或者"const"(不明确什么意思); 7)rows:显示MySQL以为在找到准确成果之前必须扫描的行数; 8)extra:MySQL的建议; 17.应用较短的定长列1)尽可能应用较短的数据类型; 2)尽可能应用定长数据类型; a)用char代替varchar,固定长度的数据处理比变长的快些; b)对于频仍修正的表,磁盘轻易形成碎片,从而影响数据库的整体机能; c)万一消失数据表解体,应用固定长度数据行的表更轻易从新构造.应用固定长度的数据行,每个记载的开端地位都是固定记载长度的倍数,可以很轻易被检测到,但是应用可变长度的数据行就不一定了; d)对于MyISAM 类型的数据表,固然转换成固定长度的数据列可以进步机能,但是占领的空间也大; 18.应用not null和enum 尽量将列界说为not null,如许可使数据的出来更快,所需的空间更少,并且在查询时,MySQL不须要检讨是否消失特例,即null值,从而优化查询; 假如一列只含有有限数量标特定值,如性别,是否有效或者入学年份等,在这种情形下应当斟酌将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在体系内都是以标识数值来暗示的; 19.应用optimize table 对于经常修正的表,轻易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询机能.具有可变长的表都消失磁盘碎片问题,这个问题对blob数据类型更为凸起,因为其尺寸变更平常大.可以经由过程应用optimize table来整顿碎片,包管数据库机能不降低,优化那些受碎片影响的数据表. optimize table可以用于MyISAM和BDB类型的数据表.现实上任何碎片整顿办法都是用mysqldump来转存数据表,然后应用转存后的文件着从新建数据表;20.应用procedure analyse() 可以应用procedure analyse()显示最佳类型的建议,应用很简略,在select语句后面加上procedure analyse()就可以了;例如:select * from students procedure analyse(); select * from students procedureanalyse(16,256); 第二条语句请求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,假如没有限制,输出可能会很长; 21.应用查询缓存1)查询缓存的工作方法:第一次履行某条select语句时,办事器记住该查询的文本内容和查询成果,存储在缓存中,下次碰着这个语句时,直接从缓存中返回成果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃. 2)设置装备摆设缓存参数:变量:query_cache _type,查询缓存的操纵模式.有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开首;2:依据须要只缓存那些以select sql_cache开首的查询; query_cache_size:设置查询缓存的最大成果集的大小,比这个值大的不会被缓存. 22.调剂硬件1)在机械上装更多的内存; 2)增长更快的硬盘以削减I/O等待时光; 寻道时光是决议机能的重要身分,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快; 3)在不合的物理硬盘装备上从新分派磁盘运动; 假如可能,应将最忙碌的数据库存放在不合的物理装备上,这跟应用统一物理装备的不合分区是不合的,因为它们将争用雷同的物理资本(磁头).。
mysql常用命令总结(2012-07-04 17:33:53)转载▼分类:Database标签:mysqlit作为一名合格的Linux运维mysql数据库是必须掌握的技能,原来自己也断断续续的学习过mysql,只是在比较大的互联网公司都有专业的DBA,需要运维做的事情很少,所以掌握的东西还是不多,下面是在运维里比较常见的一些操作命令,原来工作里多多少少都用到过,不过每次可能也就用到几个命令,所以一直没有做个总结,隔一段时间就忘的差不多了,等到要用的时候又只能去百度谷歌了,很浪费时间,今天有点时间,归纳一下做个备忘吧~~ 以下的命令都经过测试,暂还没有写完,后续如果接触到其他有用的命令也会更新到这。
1、启停mysql系统默认mysql启停:[root@localhost ~]# /etc/init.d/mysqld start[root@localhost ~]# /etc/init.d/mysqld stop编译安装mysql启停:[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &[root@localhost ~]# /usr/local/mysql/bin/mysqladmin shutdown如果编译安装后将源码包下的开机启动文件拷贝到了/etc/init.d下,也可以使用以上的启动方式。
[root@localhost mysql-5.5.23]cp support-files/mysql.server /etc/init.d/mysqldmysqld启动脚本还有其他的功能参数:Usage: /etc/init.d/mysqld {start|stop|status|condrestart|restart}注:以下所有的操作默认是系统本机mysql2、密码设置设置初始密码:[root@localhost ~]# mysqladmin -uroot password '111111'清除密码:[root@localhost ~]# mysqladmin -uroot password '' #密码为空重置密码:[root@localhost ~]# mysqladmin -uroot -p111111 password '222222'登陆到mysql后修改密码:[root@localhost ~]# mysql -uroot -p222222 #登陆mysql> update er set password=password('333333') where user='root'; mysql> flush privileges; #刷新权限忘记密码后重置:1)停止mysql[root@localhost ~]# /etc/init.d/mysqld stop或kill进程[root@localhost ~]# kill -9 `ps -ef|grep mysql|grep -v grep|awk '{print $2}'`2)使用--skip-grant参数启动mysql[root@localhost ~]# mysqld_safe --skip-grant &3)登陆mysql修改密码[root@localhost ~]# mysqlmysql> update er set password=password('111111') where user='root'; mysql> flush privileges;4)重启mysql[root@localhost ~]# /etc/init.d/mysqld restart3、连接mysql本地连接:[root@localhost ~]# mysql -u root -p111111远程连接:[root@localhost ~]# mysql -h192.168.128.10 -uroot -p111111 #-h参数后跟IP 本机也可以加-h参数:[root@localhost ~]# mysql -h127.0.0.1 -uroot -p1111114、用户管理查看用户权限:mysql> show grants for root@localhost;授权:mysql权限分全局级别、数据库级别、表级别、列级别,根据需要指定相应级别。
赋予root超级用户权利权限:mysql> grant all privileges on *.* to root@'%' identified by '111111';创建test全局权限并有授予别人的权限:mysql> grant all privileges on *.* to test@'%' identified by '222222' with grant option;创建test用户并赋予cacti库所有权限:mysql> grant all privileges on cacti.* to test@'%' identified by '222222';创建test用户并赋予cacti库某些权限:mysql> grant select,delete,update,create,drop on cacti.* to test@'%' identified by '222222';创建test用户并赋予cacti库host表权限:mysql> grant all privileges on cacti.host to test@'%' identified by '222222';撤销用户权限:mysql> revoke all on *.* from test;REVOKE语句只是取消用户的权限,没有彻底删除用户,如果需要,可以用delete语句删除用户。
mysql> delete from er where user='test';mysql> flush privileges;多条件匹配删除:mysql> delete from er where user='test' and host='localhost';5、备份恢复mysqldump备份库:[root@localhost ~]# mysqldump -u root -p111111 mysql >backup.sql建议备份时加上参数:--lock-tables、--lock-all-tables、--single-transaction--lock-all-tables, -x:在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。
这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
--lock-tables:它和--lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。
本选项只适用于MyISAM 表,如果是Innodb 表可以用--single-transaction 选项。
--single-transaction:该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。
它只适用于事务表,例如InnoDB 和BDB。
本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用--quick 选项。
备份多个库:[root@localhost ~]# mysqldump -u root -p111111 mysql test >backup.sql备份所有库:[root@localhost ~]# mysqldump -u root -p111111 --all-databases >all.sql备份单库结构:[root@localhost ~]# mysqldump -u root -p111111 -d mysql >backup.sql压缩备份库:[root@localhost ~]# mysqldump -u root -p111111 mysql | gzip >backup.sql.gz备份表:[root@localhost ~]# mysqldump -u root -p111111 mysql user >backup.sql备份表结构:[root@localhost ~]# mysqldump -u root -p111111 -d mysql user >user.sql还原数据库:[root@localhost ~]# mysql -u root -p111111 <backup.sql还原压缩的数据库:[root@localhost ~]# gunzip <backup.sql.gz |mysql -uroot -p111111 mysql将本机mysql库拷贝至其他服务器的newdata库中:[root@localhost ~]# mysqldump -uroot -p111111 mysql|mysql -h192.168.128.10 -uroot -p222222 -C newdatamysqldump创建数据库的命令:[root@Master ~]# mysqladmin create newdata2013.3.29 添加:6、计数、查询、排序mysql> select count(*) from er; #统计表总行数mysql> select user,host,password from er order by host; #按某列顺序mysql> select user,host,password from er order by host desc; #按某列逆序mysql> select user,host,password from er order by host limit 10; #顺序排,取前10行mysql> select user,host,password,count(*) from er group by host; #去重、计数+------+-----------+----------+----------+| user | host | password | count(*) |+------+-----------+----------+----------+| root | 127.0.0.1 | | 1 || root | localhost | | 2 |+------+-----------+----------+----------+7、安全删除binlog日志mysql> show binary logs;+------------------+-----------+| Log_name | File_size |+------------------+-----------+| mysql-bin.000005 | 10000 |+------------------+-----------+| mysql-bin.000006 | 98 |+------------------+-----------+1 row in set (0.00 sec)mysql> purge binary logs to 'mysql-bin.000006'; #删除mysql-bin.000006之前的日志Query OK, 0 rows affected (0.01 sec)mysql> show binary logs;+------------------+-----------+| Log_name | File_size |+------------------+-----------+| mysql-bin.000006 | 98 |+------------------+-----------+8、mysql查看表结构:desc 表名;show columns from 表名;describe 表名;show create table 表名;use information_schemaselect * from columns where table_name='表名';9、查询按某列值条件查询:mysql> select * from userinfo where name='cowboy';取某列最大值:select max(level) as level from userinfo;+-------+| level |+-------+| 14 |+-------+取某列最大值并输出整行:mysql> select * from userinfo order by level desc limit 1;+-------+--------+-------+-----------+------------+------+| id | name | level | vip_level | experience | icon |+-------+--------+-------+-----------+------------+------+| 10003 | lisi | 14 | 0 | 5572 | 0 |+-------+--------+-------+-----------+------------+------+更新上面查询行中的某列值:mysql> update userinfo set name='zhangsan' order by id level limit 1;按某列从大到小排序,显示前10行:mysql> select * from userinfo order by level desc limit 10;另一种查询如果最大值有多行则都显示,如果只有一条数据则个上面一样:mysql> select * from userinfo where level=(select max(level) from userinfo);10、删除数据操作mysql> delete from tables;。