- 创建数据库
- 选择数据库
- 直接删除数据库
- 直接删除表
- 创建表
- 显示当前所有数据库信息
- 显示所有表信息
- 表操作
- select version(), current_date
- flush privileges
- mysql实现修改用户密码
- 创建帐号
- 重命名表
- 备份数据库
- 将表记录清空1
- 将表记录清空2
- 显示表中的记录
- 一个创建数据库和创建表以及插入数据库的实例
- revoke all on database from user
- 连接mysql
- 登陆数据库
- 更改用户密码
- 新增用户
- 对常用权限的解释
1: create database db_name;
mysql> create database class_yzh;2: use db_name;
mysql> use class_yzh;
3: drop database db_name;
mysql> drop database class_yzh;
4: drop table tb_name;
mysql> drop table class_yzh;
5: create table tb_name;
mysql> create table class;
6: show databases;
mysql> show databases;
7: show tables;
mysql> show tables;
// 前提是:先mysql>use 数据库名;
8: describe tb_name;
mysql> describe tb_name;
8.1: insert into
mysql> insert into tb_name values("hyq","M");
8.2: 导入.sql文件命令
mysql> use db_name;
mysql> source d:/mysql.sql;
8.3: update
mysql> update tb_name set sex='f' where name='hyq';
8.4: 当表中有重复的字段时,去重:
mysql> select distinct * from tb_name; //无意义, 所有字段都相同?
8.5: 根据字段查询表中重复的数据(单一字段):
select * from tb_name where 字段名 in (select 字段名 from tb_name group by 字段名 having count(字段名)>1 );
8.6: 删除表中多余的重复记录, 重复记录是根据单个字段(peopleid)来判断,只留有rowid最小的记录
delete from tb_name where 字段名 in(select 字段名 from tb_name group by 字段名 having count(字段名)>1) and rowid not in(select min(rowid) from 表名 group by 字段名 having count(字段名)>1);
8.7: 根据字段查表里面重复的多字段数据,并显示重读次数:
select 字段名1, 字段名2, count(*) from tb_name group by 字段名 1,字段名 2 having count(*)>1
8.8: 指定查询表中前N行数据:
select * from tb_name limit N;
8.9: 指定查询表中第N行后的M行数据:
select * from tb_name limit N,M;
8.10: 复制表结构及数据到新表:
create table 新表 select * from 旧表; // 不能复制所有内容
8.11: 只复制表结构到新表
create table 新表 select * from 旧表 where 1=2 或者
create table 新表 like 旧表;
8.12: 复制旧表的数据到新表(假设两个表结构一样)
insert into 新表 select * from 旧表
8.13: 复制旧表的数据到新表(假设两个表结构不一样)
insert into 新表(字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 旧表
8.14: 可以将表1的内容全部复制到表2
select * into 表2 from 表1
8.15: show create table 旧表
这样会将旧表的创建命令列出,我们只需要将该命令拷贝出来, 更改table的名字, 就可以建立一个完全一个的表
8.16: 将时间改成系统当前时间
update tb_name set 时间字段 = now();
9: select version(),current_date;
mysql> select version(),current_date;
mysql> select version(),
-> current_date;
// select 内部命令;
10: mysql>flush privileges;
11: mysql实现修改用户密码:
11.1 update
shell> mysql -uroot -p
mysql> update mysql.user set password = PASSWORD('new_password') where User ='root';
11.2 修改用户密码
shell> mysqladmin -uroot password new_password
11.3 自己测试未通过
shell> mysql -u root -p
mysql>set password for root = PASSWORD("root");
12: 创建账号
mysql> grant all(delete,update,create,drop,insert) privileges
on *.* to user_name@localhost identified by 'password';
13: 重命名表
mysql> alter table tb_name rename tb_name_new;
14: 备份数据库
14.1 导出整个数据库
mysql> mysqldump -u root -p db_name >file_name
mysql> mysqldump -u root -p asb >d:\asb.sql;
14.2 导出一个表
mysql> mysqldump -u root -p db_name tb_name> file_name
mysql> mysqldump -u root -p asb yg>d:\yg.sql;
14.3 导出一个数据库表结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql;
14.4 导入数据库
mysql -u root -p
mysql> create db_name;
mysql> use dn_name;
mysql> source d:\file_name
mysql> source d:\asd.sqsl;
14.5 导入表
mysql> use db_name;
mysql> source d:\tb_name.sql;
15:将表记录清空
mysql> delete from tb_name;
16: 将表中记录清空
mysql> truncate tb_name;
17. 显示表中的记录
mysql> select * from tb_name;
18. 一个创建数据库和创建表以及插入数据库的实例
drop database school if exists school;
create database scholl;
use school;
create table teacher(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) deault 'Guangzhou';
year date
); // 建表结束
insert into teacher values('','glchangang','guangzhouyizhong','1976-10-10');
insert into teacher values('','jack','guangzhou erzhong','1975-10-12');
// 注解:
(1) 将ID设为长度为3的数字字段:int(3),并且让它每个记录自动加一:auto_increment,并不能为空:not null, 而且让它成为主字段 primary key
(2) 将name设置为长度为10的字符字段
(3) 将address设为长度为50的字符字段, 而且缺省值Guangzhou,
(4) 将year字段设置为日期字段
mysql -uroot -p password < c:school.sql
将文本数据转到数据库中
文本字段应符合的格式:字段数据之间用tabl键隔开,null值用来代替
数据传入命令:
load data local infile "文件名" into table 表名;
19. revoke all on database from user
// 移除user用户在database数据库上的所有权限
20. 连接mysql
mysql> mysql -h 主机地址 -u user_name -p password
21. 登陆数据库
mysql> mysql -uroot -p;
mysql> use db_name;
22. 刚刚装好的mysql包含一个含空密码的root账户和一个匿名账户, 这是很大的安全隐患
对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名账户删除,root账户设置密码,可用
如下命令进行操作:
mysql> use mysql;
mysql> delete from User where User="';
mysql> update User set Password = PASSWORD('new_password') where User='root';
23. 新增用户
格式: grant select on 数据库.* to 用户名@登陆主机 identified by '密码'
例1:增加一个用户test 为abc,让它可以在任何主机上登陆,并对所有数据库有查询、插入、修改删除的权限,首先用以root用户连入mysql,然后键入一下命令:
mysql> grant select,insert,update,delete on *.* to test1@"%" identified by "abc";
但是例1增加的用户是十分危险的,你想如果某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登陆你的mysql数据库并对你的数据可以为所欲为了,解决的办法见例2
例2:增加一个用户test2密码为abc,让它只可以在localhost上登陆,并可以对数据mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即mysql数据库所在的那台主机),这样用户即使知道test2的密码,他也无法从internet上直接访问数据库,只能通过mysql主机上的web页来访问
mysql> grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打开一个命令将密码消除掉
mysql> grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
下面我们来看看mysql中有关数据库方面的操作,注意:你必须首先登陆到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。
在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大的安全隐患,也不利于管理技术的提高。我们给一个应用中的用户赋予最恰当的数据库权限。如一个只进行数据库插入的用户不应赋予其删除数据的权限,mysql的用户管理是通过user表来实现的,添加新用户常用的方法有两个,一是在user表插入相应的数据行,同时设置相应的权限;二是通过grant命令创建具有某种权限的用户。其中grant的常用用法如下:
mysql> grant all on mydb.* to newusername@hostname identifed by "password";
mysql> grant usage on *.* to newusername@hostname identified by "password";
mysql> grant select,insert,update on mydb.* to newusername@hostname identified by "password";
mysql> grant select,insert,update on mydb.TestTable to newusername@hostname identified by "password";
24. 对常用权限的解释:
24.1 全局管理的权限:
file: 在mysql服务器上读写文件
process:显示或杀死属于其他用户的服务线程
reload:重载访问控制表,刷新日志等
shutdown:关闭mysql服务
24.2 数据库/数据表/数据列权限
alter: 修改已存在的数据表(例如增加/删除列)和索引
create: 建立新的数据库或数据表
delete: 删除表的记录
drop:删除数据库或者数据表
index: 建立或者删除索引
insert:增加表的记录
select:显示/搜索表的记录
update: 修改表中已存在的记录
24.3 特别的权限
all:允许做任何事
usage:只允许登录,其他什么也不允许做