标签:not 0.00 方便 区分 proc art 1.5 sql数据类型 整数
最经常使用的显示命令:
连接MySQL
格式: mysql -h 主机地址 -uusername -p用户password
例 1:连接到本机上的 MySQL。
mysql -uroot -pmysql;
连接到远程主机上的 MYSQL。
mysql -h 127.0.0.1 -uroot -pmysql;
2、连接到远程主机上的MYSQL。如果远程主机的IP为:110.110.110.110,username为root,password为abcd123。则键入下面命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间能够不用加空格,其他也一样)
3、退出MYSQL命令: exit (回车)
> use mysql;
> update user set password=PASSWORD(‘新密码‘) where user=‘username‘;
> flush privileges; #更新权限
> quit; #退出
二、改动password。
格式:mysqladmin -uusername -p旧password password 新password
1、给root加个passwordab12。
首先在DOS下进入文件夹mysql\bin,然后键入下面命令
mysqladmin -u root -password ab12
注:由于開始时root没有password。所以-p旧password一项就能够省略了。
2、再将root的password改为djg345。
mysqladmin -u root -p ab12 password djg345
(注意:和上面不同。以下的由于是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
3、命令行改动rootpassword:
mysql> UPDATE mysql.user SET password=PASSWORD(’新密码’) WHERE User=’root’;
mysql> FLUSH PRIVILEGES;
4、显示当前的user:
mysql> SELECT USER();
格式:grant select on 数据库.* to username@登录主机 identified by “password”
1、添加一个用户test1password为abc,让他能够在不论什么主机上登录,并对全部数据库有查询、插入、改动、删除的权限。
首先用root用户连入
MYSQL,然后键入下面命令:
grant select,insert,update,delete on *.* to test1”%" Identified by “abc”;
但添加的用户是十分危急的,你想如某个人知道test1的password,那么他就能够在internet上的不论什么一台电脑上登录你的mysql数据库并对你的数据能够为所欲为了,解决的方法见2。
2、添加一个用户test2password为abc,让他仅仅能够在localhost上登录,并能够对数据库mydb进行查询、插入、改动、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机)。
这样用户即使用知道test2的password,他也无法从internet上直接訪问数据库,仅仅能通过MYSQL主机上的web页来訪问了。
grant select,insert,update,delete on mydb.* to test2@localhost identifiedby “abc”;
假设你不想test2有password。能够再打一个命令将password消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;
建表
命令:create table <表名> (<字段名 1> <类型 1> [,..<字段名 n> <类型 n>]);
样例:
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ‘0‘,
> degree double(16,2));
获取表结构
命令: desc 表名。或者show columns from 表名
样例:
mysql> describe MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
删除表
命令:drop table <表名>
比如:删除表名为 MyClass 的表
mysql> drop table MyClass;
插入数据
命令:insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )]
样例:
mysql> insert into MyClass values(1,‘Tom‘,96.45),(2,‘Joan‘,82.99), (2,‘Wang‘, 96.59);
查询表中的数据
查询全部行
mysql> select * from MyClass;
查询前几行数据
比如:查看表 MyClass 中前 2 行数据
mysql> select * from MyClass order by id limit 0,2;
或者
mysql> select * from MyClass limit 0,2;
删除表中数据
命令:delete from 表名 where 表达式
比如:删除表 MyClass 中编号为 1 的记录
mysql> delete from MyClass where id=1;
改动表中数据
命令:update 表名 set 字段=新值,... where 条件
mysql> update MyClass set name=‘Mary‘ where id=1;
在表中添加字段
命令:alter table 表名 add 字段 类型 其它;
比如:在表 MyClass 中加入了一个字段 passtest,类型为 int(4),默认值为 0
mysql> alter table MyClass add passtest int(4) default ‘0‘
更改表名
命令:rename table 原表名 to 新表名;
比如:在表 MyClass 名字更改为 YouClass
mysql> rename table MyClass to YouClass;
更新字段内容
命令:update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名, ‘旧内容‘, ‘新内容‘);
比如:文章前面增加 4 个空格
update article set content=concat(‘ ‘, content);
数据库导入导出
从数据库导出数据库文件
使用“mysqldump”命令
首先进入 DOS 界面,然后进行以下操作。
1)导出全部数据库
格式:mysqldump -u [数据库username] -p -A>[备份文件的保存路径]
2)导出数据和数据结构
格式:mysqldump -u [数据库username] -p [要备份的数据库名称]>[备份文件的保存路径]
举例:
例 1:将数据库 mydb 导出到 e:\MySQL\mydb.sql 文件里。
打开開始->执行->输入“cmd”,进入命令行模式。
c:\> mysqldump -h localhost -u root -p mydb >e:\MySQL\mydb.sql
然后输入password,等待一会导出就成功了,能够到目标文件里检查是否成功。
例 2:将数据库 mydb 中的 mytable 导出到 e:\MySQL\mytable.sql 文件里。
c:\> mysqldump -h localhost -u root -p mydb mytable>e:\MySQL\mytable.sql
例 3:将数据库 mydb 的结构导出到 e:\MySQL\mydb_stru.sql 文件里。
c:\> mysqldump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_stru.sql
备注:-h localhost 能够省略,其一般在虚拟主机上用。
3)仅仅导出数据不导出数据结构
格式:
mysqldump -u [数据库username] -p -t [要备份的数据库名称]>[备份文件的保存路径]
4)导出数据库中的Events
格式:mysqldump -u [数据库username] -p -E [数据库username]>[备份文件的保存路径]
5)导出数据库中的存储过程和函数
格式:mysqldump -u [数据库username] -p -R [数据库username]>[备份文件的保存路径]
从外部文件导入数据库中
1)使用“source”命令
首先进入“mysql”命令控制台,然后创建数据库,然后使用该数据库。最后运行以下操作。
mysql>source [备份文件的保存路径]
2)使用“<”符号
首先进入“mysql”命令控制台,然后创建数据库,然后退出 MySQL,进入 DOS 界面。最后运行以下操作。
mysql -u root –p < [备份文件的保存路径]
六、备份数据库:
注意,mysqldump命令在DOS的 mysql\bin 文件夹下运行,不能在mysql环境下运行,因此,不能以分号“;”结尾。若已登陆mysql。请运行退出命令mysql> exit
1.导出整个数据库
导出文件默认是存在mysql\bin文件夹下
mysqldump -uusername -p数据库名 > 导出的文件名称
mysqldump -uroot -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u username -p 数据库名 表名> 导出的文件名称
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每一个create语句之前添加一个drop table
4.带语言參数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
七、将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来取代.例:
3 rose 大连二中 1976-10-10
4 mike 大连一中 1975-12-23
如果你把这两组数据存为school.txt文件。放在c盘根文件夹下。
2、数据传入命令
mysql> load data local infile "c:\school.txt" into table 表名;
注意:你最好将文件拷贝到mysql\bin文件夹下,而且要先用use命令打表所在的库。
八、对表的操作
1、显示数据表的结构:
mysql> DESCRIBE 表名; (DESC 表名)
2、建立数据表:
mysql> USE 库名; //进入数据库
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
3、删除数据表:
mysql> DROP TABLE 表名;
4、重命名数据表
alter table t1 rename t2;
5、显示表中的记录:
mysql> SELECT * FROM 表名;
6、往表中插入记录:
mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
7、更新表中数据:
mysql-> UPDATE 表名 SET 字段名1=’a‘,字段名2=’b’ WHERE 字段名3=’c‘;
8、将表中记录清空:
mysql> DELETE FROM 表名;
9、用文本方式将数据装入数据表中:
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
10、 显示表的定义,还能够看到表的约束,比如外键
mysql> SHOW CREATE TABLE yourtablename ;
还能够通过 mysqldump 将表的完整定义转储到文件里,当然包含外键定义。
还能够通过以下的指令列出表 T 的外键约束:
mysql> SHOW TABLE STATUS FROM yourdatabasename LIKE ‘T‘
外键约束将会在表凝视中列出。
存储过程
11、创建存储过程
CREATE PROCEDURE procedureName (in paramentName type, in paramentName type,……)
BEGIN
SQL sentences;
END
12、调用存储过程
mysql> CALL procedureName(paramentList);
例:mysql> CALL addMoney(12, 500);
13、查看特定数据库的存储过程
方法一:mysql> SELECT `name` FROM mysql.proc WHERE db = ‘your_db_name‘ AND `type` = ‘PROCEDURE‘;
方法二:mysql> show procedure status;
14、删除存储过程
mysql> DROP PROCEDURE procedure_name;
mysql> DROP PROCEDURE IF EXISTS procedure_name;
15、查看指定的存储过程定义
mysql> SHOW CREATE PROCEDURE proc_name;
mysql> SHOW CREATE FUNCTION func_name;
---------- 演示样例一-----------
mysql> DELIMITER $$
mysql> USE `db_name`$$ //选择数据库
mysql> DROP PROCEDURE IF EXISTS `addMoney`$$ //假设存在同名存储过程。则删除之
mysql> CREATE DEFINER= `root`@`localhost` PROCEDURE `addMoney`(IN xid INT(5),IN xmoney INT(6))
mysql> BEGIN
mysql> UPDATE USER u SET u.money = u.money + xmoney WHERE u.id = xid; //分号";"不会导致语句运行。由于当前的切割符被定义为$$
mysql> END$$ //终止
mysql> DELIMITER ; //把切割符改回分号";"
mysql> call addMoney(5,1000); //运行存储过程
---------- 演示样例二-----------
mysql> delimiter //
mysql> create procedure proc_name (in parameter integer)
mysql> begin
mysql> if parameter=0 then
mysql> select * from user order by id asc;
mysql> else
mysql> select * from user order by id desc;
mysql> end if;
mysql> end;
mysql> // //此处“//”为终止符
mysql> delimiter ;
mysql> show warnings;
mysql> call proc_name(1);
mysql> call proc_name(0);
九、改动表的列属性的操作
1、为了改变列a。从INTEGER改为TINYINT NOT NULL(名字一样),
而且改变列b,从CHAR(10)改为CHAR(20),同一时候重命名它,从b改为c:
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
2、添加一个新TIMESTAMP列。名为d:
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
3、在列d上添加一个索引,而且使列a为主键:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
4、删除列c:
mysql> ALTER TABLE t2 DROP COLUMN c;
5、添加一个新的AUTO_INCREMENT整数列。命名为c:
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);
注意。我们索引了c,由于AUTO_INCREMENT柱必须被索引。而且另外我们声明c为NOT NULL。
由于索引了的列不能是NULL
十、一个建库和建表以及插入数据的实例
drop database if exists school; //假设存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘深圳’,
year date
); //建表结束
//下面为插入字段
insert into teacher values(‘‘,‘allen‘,‘大连一中‘,‘1976-10-10‘);
insert into teacher values(‘‘,‘jack‘,‘大连二中‘,‘1975-12-23‘);
假设你在mysql提示符键入上面的命令也能够,但不方便调试。
(1)你能够将以上命令原样写入一个文本文件里,如果为school.sql,然后拷贝到c:\下。并在DOS状态进入文件夹\mysql\bin,然后键入下面命令:
mysql -uroot -ppassword < c:\school.sql
假设成功,空出一行无不论什么显示;如有错误。会有提示。(以上命令已经调试。你仅仅要将//的凝视去掉就可以使用)。
(2)或者进入命令行后使用 mysql> source c:\school.sql; 也能够将school.sql文件导入数据库中。
MySQL 为关系型数据库(Relational Database Management System), 这样的所谓的"关系型"能够理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所看到的的一个表格:
与常规的脚本语言类似, MySQL 也具有一套对字符、单词以及特殊符号的使用规定, MySQL 通过运行 SQL 脚本来完毕对数据库的操作, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为 .sql。
在控制台下, MySQL client也能够对语句进行单句的运行而不用保存为.sql文件。
标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其它地方引用。
MySQL标识符命名规则略微有点繁琐, 这里我们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。
对于标识符是否区分大写和小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大写和小写是敏感的。
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更仔细的划分了很多子类型:
具体介绍參见: 《MySQL数据类型》 : http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
当 MySQL 服务已经执行时, 我们能够通过MySQL自带的client工具登录到MySQL数据库中, 首先打开命令提示符, 输入下面格式的命名:
mysql -h 主机名 -u username -p
以登录刚刚安装在本机的MySQL数据库为例, 在命令行下输入 mysql -u root -p 按回车确认, 假设安装正确且MySQL正在执行, 会得到下面响应:
Enter password:
若password存在, 输入password登录, 不存在则直接按回车登录, 依照本文中的安装方法, 默认 root 账号是无password的。登录成功后你将会看到 Welecome to the MySQL monitor... 的提示语。
然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。
使用 create database 语句可完毕对数据库的创建, 创建命令的格式例如以下:
create database 数据库名 [其它选项];
比如我们须要创建一个名为 samp_db 的数据库, 在命令行下运行下面命令:
create database samp_db character set gbk;
为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk。创建成功时会得到 Query OK, 1 row affected(0.02 sec) 的响应。
注意: MySQL语句以分号(;)作为语句的结束, 若在语句结尾不加入分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, 但加分号是一定不会错的);
提示: 能够使用 show databases; 命令查看已经创建了哪些数据库。
要对一个数据库进行操作, 必须先选择该数据库, 否则会提示错误:
ERROR 1046(3D000): No database selected
两种方式对数据库进行使用的选择:
一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u username -p
比如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p
二: 在登录后使用 use 语句指定, 命令: use 数据库名;
use 语句能够不加分号, 运行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed
使用 create table 语句可完毕对表的创建, create table 的常见形式:
create table 表名称(列声明);
以创建 students 表为例, 表中将存放 学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel) 这些内容:
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);
对于一些较长的语句在命令提示符下可能easy输错, 因此我们能够通过不论什么文本编辑器将语句输入好后保存为 createtable.sql 的文件里, 通过命令提示符下的文件重定向运行运行该脚本。
打开命令提示符, 输入: mysql -D samp_db -u root -p < createtable.sql
(提示: 1.假设连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作文件夹下需指定文件的完整路径。)
语句讲解:
create table tablename(columns) 为创建数据库表的命令, 列的名称以及该列的数据类型将在括号内完毕;
括号内声明了5列内容, id、name、sex、age、tel为每列的名称, 后面跟的是数据类型描写叙述, 列与列的描写叙述之间用逗号(,)隔开;
以 "id int unsigned not null auto_increment primary key" 行进行介绍:
以下的 char(8) 表示存储的字符长度为8, tinyint的取值范围为 -127到128, default 属性指定当该列值为空时的默认值。
很多其它的数据类型请參阅 《MySQL数据类型》 : http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
提示: 1. 使用 show tables; 命令可查看已创建了表的名称; 2. 使用 describe 表名; 命令可查看已创建的表的具体信息。
insert 语句能够用来将一行或多行数据插到数据库表中, 使用的一般形式例如以下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
当中 [] 内的内容是可选的, 比如, 要给 samp_db 数据库中的 students 表插入一条记录, 运行语句:
insert into students values(NULL, "王刚", "男", 20, "13811371377");
按回车键确认后若提示 Query Ok, 1 row affected (0.05 sec) 表示数据插入成功。 若插入失败请检查是否已选择须要操作的数据库。
有时我们仅仅须要插入部分数据, 或者不依照列的顺序进行插入, 能够使用这种形式进行插入:
insert into students (name, sex, age) values("孙丽华", "女", 21);
select 语句经常使用来依据一定的查询规则到数据库中获取数据, 其主要的使用方法为:
select 列名称 from 表名称 [查询条件];
比如要查询 students 表中全部学生的名字和年龄, 输入语句 select name, age from students; 运行结果例如以下:
mysql> select name, age from students;
+--------+-----+
| name | age |
+--------+-----+
| 王刚 | 20 |
| 孙丽华 | 21 |
| 王永恒 | 23 |
| 郑俊杰 | 19 |
| 陈芳 | 22 |
| 张伟朋 | 21 |
+--------+-----+
6 rows in set (0.00 sec)
mysql>
也能够使用通配符 * 查询表中全部的内容, 语句: select * from students;
where 关键词用于指定查询条件, 使用方法形式为: select 列名称 from 表名称 where 条件;
以查询全部性别为女的信息为例, 输入查询语句: select * from students where sex="女";
where 子句不只支持 "where 列名 = 值" 这样的名等于值的查询形式, 对一般的比較运算的运算符都是支持的, 比如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。 还能够对查询条件使用 or 和 and 进行组合查询, 以后还会学到更加高级的条件查询方式, 这里不再多做介绍。
演示样例:
查询年龄在21岁以上的全部人信息: select * from students where age > 21;
查询名字中带有 "王" 字的全部人信息: select * from students where name like "%王%";
查询id小于5且年龄大于20的全部人信息: select * from students where id<5 and age>20;
update 语句可用来改动表中的数据, 主要的使用形式为:
update 表名称 set 列名称=新值 where 更新条件;
使用演示样例:
将id为5的手机号改为默认的"-": update students set tel=default where id=5;
将全部人的年龄添加1: update students set age=age+1;
将手机号为 13288097888 的姓名改为 "张伟鹏", 年龄改为 19: update students set name="张伟鹏", age=19 where tel="13288097888";
delete 语句用于删除表中的数据, 基本使用方法为:
delete from 表名称 where 删除条件;
使用演示样例:
删除id为2的行: delete from students where id=2;
删除全部年龄小于21岁的数据: delete from students where age<20;
删除表中的全部数据: delete from students;
alter table 语句用于创建后对表的改动, 基础使用方法例如以下:
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
演示样例:
在表的最后追加列 address: alter table students add address char(60);
在名为 age 的列后插入列 birthday: alter table students add birthday date after age;
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
演示样例:
将表 tel 列改名为 telphone: alter table students change tel telphone char(13) default "-";
将 name 列的数据类型改为 char(16): alter table students change name name char(16) not null;
基本形式: alter table 表名 drop 列名称;
演示样例:
删除 birthday 列: alter table students drop birthday;
基本形式: alter table 表名 rename 新表名;
演示样例:
重命名 students 表为 workmates: alter table students rename workmates;
基本形式: drop table 表名;
演示样例: 删除 workmates 表: drop table workmates;
基本形式: drop database 数据库名;
演示样例: 删除 samp_db 数据库: drop database samp_db;
依照本文的安装方式, root 用户默认是没有password的, 重设 root password的方式也较多, 这里仅介绍一种较经常使用的方式。
使用 mysqladmin 方式:
打开命令提示符界面, 运行命令: mysqladmin -u root -p password 新密码
运行后提示输入旧password完毕password改动, 当旧password为空时直接按回车键确认就可以。
虽然我们能够在命令提示符下通过一行行的输入或者通过重定向文件来运行mysql语句, 但该方式效率较低, 因为没有运行前的语法自己主动检查, 输入失误造成的一些错误的可能性会大大添加, 这时最好还是试试一些可视化的MySQL数据库管理工具, MySQL Workbench 就是 MySQL 官方 为 MySQL 提供的一款可视化管理工具, 你能够在里面通过可视化的方式直接管理数据库中的内容, 而且 MySQL Workbench 的 SQL 脚本编辑器支持语法高亮以及输入时的语法检查, 当然, 它的功能强大, 绝不仅限于这两点。
MySQL Workbench官方介绍: http://www.mysql.com/products/workbench/
MySQL Workbench 下载页: http://dev.mysql.com/downloads/tools/workbench/
以下是在linux下的经常使用指令:
Mysql安装文件夹
数据库文件夹
/var/lib/mysql/
配置文件
/usr/share/mysql(mysql.server命令及配置文件)
相关命令
/usr/bin(mysqladmin mysqldump等命令)
启动脚本
/etc/init.d/mysql(启动脚本文件mysql的文件夹)
系统管理
标签:not 0.00 方便 区分 proc art 1.5 sql数据类型 整数
原文地址:http://www.cnblogs.com/slgkaifa/p/6928499.html