文章整理自http://c.biancheng.net/cpp/html/1457.html
Ubuntu当中安装MySQL
`sudo apt-get install mysql-server`
- 安装过程会弹出提示框,输入root用户的密码
访问MySQL:
mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码
DOS 窗口直接输入:mysql -u root -p,然后输入密码;
修改root密码:
mysqladmin -u root -p *oldpassword* password *newpassword*
创建数据库:
create database 'databasename' default character set utf8;
分配用户:
grant all privileges on databasename.* to 'username'@'localhost' identified by 'access password';
flush privileges;
显示数据库:
show databasename;
删除数据库:
drop database databasename;
使用数据库:
use databasename;
创建数据表:
create table命令格式: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));
建立一个名为MyClass的表:
字段名 | 数字类型 | 数据宽度 | 是否为空 | 是否主键 | 自动增加 | 默认值 |
---|---|---|---|---|---|---|
id | int | 4 | 否 | primary key | auto_increment | |
name | char | 20 | 否 | |||
sex | int | 4 | 否 | 0 | ||
degree | double | 16 | 是 |
获取数据表:
desc命令用于获取数据表结构。
desc命令格式:desc 表名;
desc MyClass;
删除数据表:
drop table命令用于删除数据表。
drop table命令格式:drop table <表名>;
例如,删除表名为 MyClass 的表:
drop table MyClass;
向表中插入数据:
insert into命令用于向表中插入数据。
insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )];
例如:往表 MyClass中插入两条记录,这两条记录表示:编号为1的名为Tom的成绩为96.45,编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。
查询表中的数据:
select from命令用来查询表中的数据。
1) 查询所有行
命令格式: select <字段1, 字段2, …> from < 表名 > where < 表达式 >;
例如,查看表 MyClass 中所有数据:
select * from MyClass;
2) 查询前几行数据
例如,查看表 MyClass 中前2行数据:
select * from MyClass order by id limit 0,2;
select一般配合where使用,以查询更精确更复杂的数据。
删除记录:
delete from命令用于删除表中的数据。
delete from命令格式:delete from 表名 where 表达式
例如,删除表 MyClass中编号为1 的记录:
delete from MyClass where id=1;
修改表中的数据:
update set命令用来修改表中的数据。
update set命令格式:update 表名 set 字段=新值,… where 条件;
举例如下:
update MyClass set name='Mary' where id=1;
增加表的字段:
alter add命令用来增加表的字段。
alter add命令格式:alter table 表名 add字段 类型 其他;
例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:
alter table MyClass add passtest int(4) default '0';
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
alter table employee add index emp_name (name);
- 加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
mysql> alter table employee add primary key(id);
- 加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
alter table employee add unique emp_name2(cardnumber);
- 删除某个索引
mysql> alter table 表名 drop index 索引名;
alter table employee drop index emp_name;
增加字段
mysql> ALTER TABLE table_name ADD field_name field_type;修改原字段名称及类型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;删除字段
MySQL ALTER TABLE table_name DROP field_name;
修改表名:
rename命令用于修改表名。
rename命令格式:rename table 原表名 to 新表名;
例如,在表MyClass名字更改为YouClass:
rename table MyClass to YouClass;
当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。