mysql -u用户名 -p密码 [--tee=d:\mysql.log] 登录mysql客户端
show databases; 查看所有的数据库
use database; 切换到某数据库
show tables; 查看某数据库下面的所有表
\s 或 status 查看数据库的状态
2.数据库操作
show databases; 查看数据库
create database 数据库名; 创建数据库
drop database 数据库名; 删除数据库
show create database 数据库名 查看数据库创建情况
show create table 表名 查看表的创建情况
例:create database test default character set utf8;
create database jdbc default charset=utf8;
3.数据表操作
show tables; 查看数据表
create table 表名(
int 属性,
name 属性,
age 属性
) 创建数据表
drop table 表名 删除数据表
rename table old表名 to new表名 修改数据表表名
desc 表名 查看表结构
forexample:
CREATE TABLE IF NOT EXISTS `member` (
`id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '编号',
`user` varchar(20) NOT NULL,
`passwd` char(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.数据库设计
a)字段类型
数值:int,float
字符:varchar,char,text,logntext
日期:date,datetime,time
b)字段属性
unsigned
zerofill
auto_increment
null
not null
default
alter table 表名 default character set 字符集 //修改表的默认字符集
alter table 表名 CONVERT TO CHARACTER SET charset_name; //修改表的字符集包括列
5.字符集设置
my.ini
[mysqld]服务器
character-set-server = utf8 //服务器、数据库和表字符集
collation-server = utf8_general_ci //服务器、数据库和表校验字符集
[mysql]客户端
default-character-set=utf8 //客户端和连接字符集
6.表字段索引
desc select * from 表名 where field = ''\G;
创建带索引的表:
create table t1(
id int unsigned not null auto_increment,
name varchar(20),
primary key (id),
index in_name(name) || key(name)
)engine=InnoDB default character set utf8;
show index from table_name; //查看索引情况
?[参数] //查看某帮助信息
普通索引:1.添加
alter table 表名 add index in_name(field);
alter table 表名 add key(field);
2.删除
alter table 表名 drop index in_name;
a;ter table 表名 drop key(field)
7.表字段维护
1.添加字段
alter table 表名 add field 属性 after field;
2.修改字段
alter table 表名 modify field 属性
3.删除字段
alter table 表名 drop field
4.修改字段名
alter table 表名 change oldfield newfield 属性
8.mysql操作语句
1.concat()
for: select id,name,concat(id,'--',name) as newfield from table_name;
2.rand()
for: select id,name,rand()*2 as newfield from table_name;
3.sum()
4.avg()
5.max()
6.min()
7.distinct 去重复
select distinct * from table_name;
7.分组聚合
for:
a)select name,count(id) as newfield from table_name group by name order by newfield asc;
b)select name,count(id) as newfield from table_name group by name having newfield>5 order by newfield asc;
8.多表查询
a)普通多表查询
for: select name,count(name) as num from user as u,post as p where u.id=p.u_id group by u.name;
b)嵌套查询-多表
for:select name from user where id in (select distinct u_id from post);
c)左连接查询-多表
for:select a.name,b.title from user as a left join post as b on a.id=b.u_id;
drop table if exists p_user;
create table p_user(
id bigint(20) unsigned not null auto_increment primary key comment '编号',
u_name varchar(20) null comment '姓名',
u_spell text comment '姓名拼音',
key u_name(u_name)
)engine=InnoDB default charset=utf8 comment='人员表';
desc p_user;
show create table p_user;
DROP TABLE IF EXISTS `tdl_workshop_daily_two_config`;
CREATE TABLE IF NOT EXISTS `tdl_workshop_daily_two_config`(
`twt_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' PRIMARY KEY COMMENT '主键',
`twd_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' COMMENT '主表主键',
`did` BIGINT(20) UNSIGNED NULL COMMENT '值班地点'
)ENGINE=MYISAM ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8 COMMENT='车间日报配置主表-值班地点'
mysql更改密码:
1.update mysql.user set password = password('newpasswd') where user = '用户名'; //修改密码
2.flush privileges; //刷新数据库
或
3.grant select,insert,update,delete,show_db on 数据库名.* to 用户名@"主机名" Identified by "密码";
mysqlcheck使用:
1.mysqlcheck -r -u root -p -A 修复所有的表
2.mysqlcheck -r -u root -p db_name table_name 修复某数据库的某表
CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
CREATE DATABASE jdbc DEFAULT CHARACTER SET UTF8 DEFAULT COLLATE utf8_general_ci;
9.数据库事物:
1.原子性:不可分割。
2.一致性:事物必须使数据库从一个一致性状态变换到另一个一致性状态。
3.隔离性:不被其他事物干扰。
4.持久性:一个事物一旦被提交,它对数据库数据的改变就是永久性的。
问题:
1.脏读:
2.不可重复读
3.幻读
alter table customers modify `name` varchar(30) null unique
欢迎转载,请注明出处,谢谢!!!
by秋风醉我心
转载请注明:谷谷点程序 » mysql基础操作——学习笔记之mysql