MySQL基本操作汇总

时间:2022-02-21 06:07:41
MySQL用户账号管理 

以root连接到服务器上后,可以添加新账户。下面的语句使用GRANT来设置四个新账户:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql>  GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

用GRANT语句创建的账户有下面的属性:

·其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。

·一个账户有用户名admin,没有密码。该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin reloadmysqladmin refreshmysqladmin flush-xxx命令,以及mysqladmin processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。

·一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。

1.     从MySQL删除用户账户

要想移除账户,应使用DROP USER语句:

DROP USER user [, user] ...

2.     限制账户资源

要想用GRANT语句设置资源限制,使WITH子句来命名每个要限制的资源和根据每小时记数的限制值。例如,要想只以限制方式创建可以访问customer数据库的新账户,执行该语句:

mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
    ->     IDENTIFIED BY 'frank'
    ->     WITH MAX_QUERIES_PER_HOUR 20
    ->          MAX_UPDATES_PER_HOUR 10
    ->          MAX_CONNECTIONS_PER_HOUR 5
    ->          MAX_USER_CONNECTIONS 2;
 

要想设置或更改已有账户的限制,在全局级别使用GRANT USAGE语句(在*.*)。下面的语句可以将francis的查询限制更改为100:

mysql> GRANT USAGE ON *.* TO 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;

该语句没有改变账户的已有权限,只修改了指定的限制值。

要想取消已有限制,将该值设置为零。例如,要想取消francis每小时可以连接的次数的限制,使用该语句:

mysql> GRANT USAGE ON *.* TO 'francis'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0;

当账户使用资源时如果有非零限制,则对资源使用进行记数。

 

3.     设置账户密码

4.   可以用mysqladmin命令在命令行指定密码:

shell> mysqladmin -u user_name -h host_name password "newpwd"

该命令重设密码的账户为user表内匹配User列的user_name和Host列你发起连接的客户端的记录。

为账户赋予密码的另一种方法是执行SET PASSWORD语句:

mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');

只有root等可以更新mysql数据库的用户可以更改其它用户的密码。如果你没有以匿名用户连接,省略FOR子句便可以更改自己的密码:

mysql> SET PASSWORD = PASSWORD('biscuit');

你还可以在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码而不影响账户当前的权限:

mysql> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';

一般情况下最好使用上述方法来指定密码,你还可以直接修改user表:

·         要想在创建新账户时建立密码,在Password列提供一个值:

·                shell> mysql -u root mysql

·                mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit'));

·                mysql> FLUSH PRIVILEGES;

·                 

·         要想更改已有账户的密码,使用UPDATE来设置Password列值:

·                shell> mysql -u root mysql

·                 mysql> UPDATE user SET Password = PASSWORD('bagel') WHERE Host = '%' AND User = 'francis';

·                mysql> FLUSH PRIVILEGES;

当你使用SET PASSWORD、INSERT或UPDATE指定账户的密码时,必须用PASSWORD()函数对它进行加密。(唯一的特例是如果密码为空,你不需要使用PASSWORD())。需要使用PASSWORD()是因为user表以加密方式保存密码,而不是明文。如果你忘记了,你可能会象这样设置密码:

shell> mysql -u root mysql

mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey','biscuit');

mysql> FLUSH PRIVILEGES;

结果是密码'biscuit'保存到user表后没有加密。当jeffrey使用该密码连接服务器时,值被加密并同保存在user表中的进行比较。但是,保存的值为字符串'biscuit',因此比较将失败,服务器拒绝连接:

shell> mysql -u jeffrey -pbiscuit test

Access denied

如果你使用GRANT ... IDENTIFIED BY语句或mysqladmin password命令设置密码,它们均会加密密码。在这种情况下,不需要使用 PASSWORD()函数。



删除匿名用户


匿名用户可以使用任意字符串用户名无密码登录,所以一定要注意


在MySQL刚刚被安装后,存在用户名、密码为空的用户。这使得数据库服务器有无需密码被登录的可能性。为消除隐患,将匿名用户删除。

[root@sample ~]# mysql -u root -p ← 通过密码用root登录
Enter password: 
← 在这里输入密码

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.20

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select user,host from mysql.user; ← 查看用户信息
+------+----------------------------+
| user | host         |
+------+----------------------------+
|   | localhost       |
| root | localhost       |
|   | sample.centospub.com |
| root | sample.centospub.com  |
+------+----------------------------+
4 rows in set (0.02 sec)

mysql> delete from mysql.user where user=''; ← 删除匿名用户
Query OK, 2 rows affected (0.17 sec)

mysql> select user,host from mysql.user; ← 查看用户信息
+------+----------------------------+
| user | host         |
+------+----------------------------+
| root | localhost      |
| root | sample.centospub.com |
+------+----------------------------+


如何正确重启 mysql服务器

windows如何重启mysql 开始->运行->cmd

停止:net stop mysql

启动:net start mysql

前提MYSQL已经安装为windows服务 

wind 方法二

开始-运行-输入:services.msc-点确定-找到MySQL-在上面右键-重新启动。这样就行了

linux 中

RedHat Linux (Fedora Core/Cent OS)
1.启动:/etc/init.d/mysqld start
2.停止:/etc/init.d/mysqld stop
3.重启:/etc/init.d/mysqld restart
Debian / Ubuntu Linux
1.启动:/etc/init.d/mysql start
2.停止:/etc/init.d/mysql stop
3.重启:/etc/init.d/mysql restart
Windows
1.点击“开始”->“运行”(快捷键Win+R)
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
提示
Redhat Linux 也支持service command,
启动:# service mysqld start
停止:# service mysqld stop
重启:# service mysqld restart
Windows下不能直接重启(restart),只能先停止,再启动。 ......

推荐的安全重启方法

$mysql_dir/bin/mysqladmin -u root -p shutdown
$mysql_dir/bin/mysqld_safe &

mysqladmin和mysqld_safe位于Mysql安装目录的bin目录下


1.远程登录mysql

mysql -h ip -u root -p 密码

2.创建用户

  格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";

   例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql的root用户下进行

    mysql>grant select,insert,update,delete on *.* to test1@"%" identified by "123456";

    mysql>flush privileges;

     例2:增加一个test2用户,密码为123456,只能在192.168.2.12上登录,并对数据库student有查询,增加,修改和删除的功能。需要在mysql的root用户下进行

    mysql>grant select,insert,update,delete on student.* to test2@192.168.2.12 identified by "123456";

     mysql>flush privileges;

      例3:授权用户test3拥有数据库student的所有权限

      mysql>grant all privileges on student.* to test3@localhost identified by '123456';

     mysql>flush privileges;

3.修改用户密码

     mysql>update mysql.user set password=password('123456') where User='test1' and Host='localhost';

     mysql>flush privileges;

4.删除用户

   mysql>delete from user where user='test2' and host='localhost';

  mysql>flush privileges;

5.删除数据库和删除表

  mysql>drop database 数据库名;

 mysql>drop table 表名;

6.删除账户及权限

  drop user 用户名@'%'

  drop user 用户名@localhost


如何给MySql创建连接用户并授权

一般在为MySql创建用户时建议使用GRANT前台命令,最好不要直接去改数据库,以前一直都是习惯于直接去改数据库,现在慢慢学着把这个缺点改掉,开始使用命令授权创建,要不是最近把MySql升级了,还是跟以前一样直接用PHPMYADMIN增加用户出现

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误,

根本也不会用GRANT命令,因为它太容易忘记,本文特别把命令精简一下供以后参考(MYSQL命令行下)。

解决办法:打开my.ini,查找 

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

修改为

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启MYSQL


1、首先登录MYSQL的COMMAND控制台

Mysql安装后都会带CMD命令行控制台,如下图,也可以直接使用CMD命令台,运行mysql安装目录bin下的mysql.exe,输入mysql -u root和密码即可登录到Mysql。

MySQL基本操作汇总

MySQL基本操作汇总


mysql\bin目录下的可执行程序及功能一览如下表(参考官方MYSQL说明):

mysqld MySQL服务器
mysqld_safe、mysql.server和mysqld_multi 服务器启动脚本
mysql_install_db 初始化数据目录和初始数据库
mysql 一个命令行客户程序,用于交互式或以批处理模式执行SQL语句。
mysqladmin 用于管理功能的客户程序。
mysqlcheck 执行表维护操作。
mysqldump和mysqlhotcopy 负责数据库备份。
mysqlimport 导入数据文件。
mysqlshow 显示信息数据库和表的相关信息。
myisamchk 执行表维护操作。
myisampack 产生压缩、只读的表。
mysqlbinlog 是处理二进制日志文件的实用工具。
perror 显示错误代码的含义。

2、选择数据表

语句如下:use mysql;

3、在mysql的user表中增加连接用户帐号:

这里不要直接使用INSERT语句添加user记录,使用INSERT可能出现:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级MYSQL到5.1的时候,发现可能会出现这个错误。

建议使用GRANT语句进行授权,语句如下:

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

上句:

“username”替换为将要授权的用户名,比如clientusr;

“password”替换为clientusr设置的密码;

4、可访问数据表授权

创建好帐户之后,就开始给上面的common user进行数据表授权,步骤3中增加的连接用户默认权限都是“N”的,必须在db表中为该帐户授权,允许其访问专用数据库,当然超级用户就不说了。

使用下面语句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON tablename.*  TO 'username'@'localhost' IDENTIFIED BY 'password';

本语句中的权限根据实际需要确定:

"tablename"替换为授权访问的数据表table名

"username"是步骤2授权用户名

"password"是步骤2授权用户的设置密码

这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。

5、生效授权,创建完毕

一句话即可:FLUSH PRIVILEGES;

with admin option 和with grant option

oracle

当给一个用户授予系统权限时带上with admin option,他可以把此权限授予给其他用户、角色,而在revoke授予给这个用户的系统权限时不会级联回收他授予给其他用户的权限。如授予给A用户p系统权限时带有with admin option参数,此时A把系统权限p授予给用户B,然后revoke收回了授予A用户的p权限,这时A授予给B的p权限不会被级联收回,就是说B还拥有p系统权限。

而对象权限的参数with grant option却会级联收回对象权限。如授予给A用户o对象权限时带有with grant option参数,A把o对象权限grant给用户B,此时如果revoke授予给A的o对象权限,会把B被授予的o对象权限也revoke。


mysql:

mysql中只有with grant option,对A用户进行的授权,A可以授予给其他用户,当收回对A的授权时,A授予给其他用户的权限不会被级联收回。注意with grant option也可以被授予给其他用户。


实践:

给mysql 创建用户过程:
1.进入mysql cmd下
2.输入密码:123
3.选择使用的数据库:use myeshop
4.创建新用户
grant usage on *.* to 'myeshop'@'localhost' identified by 'myeshop' with grant option;
5.给创建的用户授权
GRANT SELECT ,INSERT,UPDATE,DELETE,CREATE,DROP ON tablename.* TO 'myeshop'@'localhost' IDENTIFIED BY 'myeshop';
6.生效授权

FLUSH PRIVILEGES;


使用mysql登录数据库后,如何查看当前数据库   1. 通过函数database()实现
 
    mysql> SELECT database();   2. 通过show tables实现
 
    mysql> show tables;
 
    注:注意查看列头形式, 格式为:Tables_in_[db_name]     www.2cto.com   3. 通过status实现
 
    mysql> status;
 
    注:注意结果中的"Current database"信息

MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限


1.新建用户
 
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:jeecn  密码为:jeecn  的用户。

这里不要直接使用INSERT语句添加user记录,使用INSERT可能出现:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级MYSQL到5.1的时候,发现可能会出现这个错误。

建议使用GRANT语句进行授权,语句如下:

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

上句:

“username”替换为将要授权的用户名,比如clientusr;

“password”替换为clientusr设置的密码;

 


//退出后登录一下
mysql>exit;
@>mysql -u jeecn -p
@>输入密码
mysql>登录成功
 
2.为用户授权
 
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(jeecnDB)
mysql>create database jeecnDB;
//授权jeecn用户拥有jeecn数据库的所有权限
@>grant all privileges on jeecnDB.* tojeecn@localhost identified by ‘jeecn’;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作
 
//如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on jeecnDB.* tojeecn@localhost identified by ‘jeecn’;
//刷新系统权限表。
mysql>flush privileges;
 
mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
 
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,

process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
 
例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee tojee@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户jee分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
 
mysql>grant all privileges on vtdc.* tojee@10.10.10.87 identified by ‘123′;
给来自10.163.225.87的用户jee分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
 
mysql>grant all privileges on *.* tojee@10.10.10.87 identified by ‘123′;
给来自10.163.225.87的用户jee分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
 
mysql>grant all privileges on *.* tojee@localhost identified by ‘123′;
给本机用户jee分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
 
3.删除用户
 
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User=”jeecn” and Host=”localhost”;
mysql>flush privileges;
//删除用户的数据库
mysql>drop database jeecnDB;
 
4.修改指定用户密码
 
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password(‘新密码’) where User=”jeecn” and Host=”localhost”;
mysql>flush privileges;
mysql>quit;


mysql创建数据库命令:1.show databases      //显示数据库
2.create database student(数据库名) //创建数据库student
3.use student //进入student数据库
4.create table studinfo(表名) (sno int primary key,sage int(2))
............ // 创建表studinfo
5.show table //显示表
..............
6.drop database student //删除student数据库

用MySQL创建数据库和数据库表


1、使用SHOW语句找出在服务器上当前存在什么数据库:

mysql> SHOW DATABASES; 
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)

2、创建一个数据库abccs
mysql> CREATE DATABASE abccs;
注意不同操作系统对大小写的敏感。 
3、选择你所创建的数据库
mysql> USE abccs
Database changed
此时你已经进入你刚才所建立的数据库abccs.
4、 创建一个数据库表
首先看现在你的数据库中存在什么表:
mysql> SHOW TABLES;
Empty set (0.00 sec)
说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable:   我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。
mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), 
-> birth DATE, birthaddr VARCHAR(20));
Query OK, 0 rows affected (0.00 sec)

由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。);性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);birth列则使用DATE数据类型。
创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表:
mysql> SHOW TABLES; 
+---------------------+
| Tables in menagerie |
+---------------------+
| mytables |
+---------------------+

5、显示表的结构:
mysql> DESCRIBE mytable; 
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| deathaddr | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

6、 往表中加入记录
我们先用SELECT命令来查看表中的数据:
mysql> select * from mytable;
Empty set (0.00 sec)
这说明刚才创建的表还没有记录。 加入一条新记录:
mysql> insert into mytable 
-> values (′abccs′,′f′,′1977-07-07′,′china′);
Query OK, 1 row affected (0.05 sec)

再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将所有员工的记录加入到表中。
7、用文本方式将数据装入一个数据库表 
如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出,例如:
abccs f 1977-07-07 china   
mary f 1978-12-12 usa
tom m 1970-09-02 usa

使用下面命令将文本文件“mytable.txt”装载到mytable表中:mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE mytable;
再使用如下命令看看是否已将数据输入到数据库表中:mysql> select * from mytable;

命令:load data local infile “filename.txt” into table tbl_name;
说明:MySQl的版本不得低于3.22.15,否则load data local不起作用。


如果你没有给出local,则服务器按如下方法对其进行定位:
1)如果你的filename为绝对路径,则服务器从根目录开始查找该文件.
2)如果你的filename为相对路径,则服务器从数据库的数据目录中开始查找该文件.
如果你给出了local,则文件将按以下方式进行定位:
1)如果你的filename为绝对路径,则客户机从根目录开始查找该文件.
2)如果你的filename为相对路径,则客户机从当前目录开始查找该文件.


服务器或VPS用户如何用命令创建MYSQL数据库

  一、连接MYSQL

  格式: mysql -h主机地址 -u用户名 -p用户密码

  1、 连接到本机上的MYSQL。

  首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.

  如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

MySQL基本操作汇总  

  2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命 令:

  mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

  3、 退出MYSQL命令: exit (回车)

  二、修改密码

  格式:mysqladmin -u用户名 -p旧密码 password 新密码。 例如

  1、 给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命令

  mysqladmin -u root -password ab12

  2、 再将root的密码改为djg345。

  mysqladmin -u root -p ab12 password ******

  三、创建数据库

  1、 CREATE DATABASE 数据库名;

  2、 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';

  3、 SET PASSWORD FOR

  '数据库名'@'localhost' = OLD_PASSWORD('密码');

  依次执行3个命令完成数据库创建。注意:中文 “密码”和“数据库”是户自己需要设置的。

  —————————————————————————————————————————————

  现在介绍一些常用的MYSQL命令

  注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

  一、操作技巧

  1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。

  也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。

  2、你可以使用光标上下键调出以前的命令。

  二、常用命令

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

  mysql> SHOW DATABASES;

  2、建立数据库:

  mysql> CREATE DATABASE 库名;

  3、建立数据表:

  mysql> USE 库名;

  mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));

  4、删除数据库:

  mysql> DROP DATABASE 库名;

  5、删除数据表:

  mysql> DROP TABLE 表名;

  6、将表中记录清空:

  mysql> DELETE FROM 表名;

  7、往表中插入记录:

  mysql> INSERT INTO 表名 VALUES ("hyq","M");

  8、更新表中数据:

  mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';

  9、用文本方式将数据装入数据表中:

  mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE 表名;

  10、导入.sql文件命令:

  mysql> USE 数据库名;

  mysql> SOURCE d:/mysql.sql;

  11、命令行修改root密码:

  mysql> UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';

  mysql> FLUSH PRIVILEGES;

  三、一个建库和建表以及插入数据的实例

  drop database if exists school; //如果存在sudu则删除

  create database sudu; //建立库sudu

  use school; //打开库sudu

  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','飞数科技1','2005-10-10');

  insert into teacher values('','jack','飞数科技2','2005-12-23');如果你在mysql提示符键入上面的命令也可以,但不方便调试。

  (1)你可以将以上命令原样写入一个文本文件中,假设为sudu.sql,然后复制到c:\\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:

  mysql -uroot -p密码 < c:\sudu.sql

  如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

  (2)或者进入命令行后使用 mysql> source c:\sudu.sql; 也可以将sudu.sql文件导入数据库中。

  四、将文本数据转到数据库中

  1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.例:

  3 rose 飞数科技1 1976-10-10

  4 mike 飞数科技2 1975-12-23

  假设你把这两组数据存为速度sudu.txt文件,放在c盘根目录下。

  2、数据传入命令 load data local infile "c:\sudu.txt" into table 表名;

  注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打表所在的库。

  五、备份数据库:(命令在DOS的\mysql\bin目录下执行)

  1.导出整个数据库

  导出文件默认是存在mysql\bin目录下

  mysqldump -u 用户名 -p 数据库名 > 导出的文件名

  mysqldump -u user_name -p123456 database_name > outfile_name.sql

  2.导出一个表

  mysqldump -u 用户名 -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)通过建立临时表来实现

SQL>create table temp_emp as (select distinct * from employee)

SQL> truncate table employee; (清空employee表的数据)

SQL> insert into employee select * from temp_emp; (再将临时表里的内容插回来)

(Winter 这个方法非常方便,好用。)

( 2)通过唯一rowid实现删除重复记录.在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大或最小rowid的就可以了,其余全部删除。

SQL>delete from employee e2 where rowid not in (

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and e1.salary=e2.salary);--这里用min(rowid)也可以。

SQL>delete from employee e2 where rowid <(

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and

e1.salary=e2.salary);

(3)也是通过rowid,但效率更高。

SQL>delete from employee where rowid not in (

select max(t1.rowid) from employee t1 group by

t1.emp_id,t1.emp_name,t1.salary);--这里用min(rowid)也可以。

EMP_ID EMP_NAME SALARY