mysql基本操作

一.数据库的相关操作
a.查询库
mysql> show databases;
b.创建库
mysql> create database 数据库名;
c.切换库
mysql> use 数据库名;
d.删除库
mysql> drop database 库名;

user函数获取当前登录到mysql的用户
mysql> select user();
database函数查看当前所在的库
mysql> select database();
简单小操作
mysql> /# 敲完此命令之后可以补全大部分库和表名
mysql> \q 退出mysql,等价于exit和quit
mysql> \c 结束一条sql语句

二.表的相关操作
a.创建表
mysql> create table 表名(字段 数据类型 约束条件,字段 数据类型,字段 数据类型…); 约束条件可不设置
b.查询有哪些表
mysql> show tables ;

数据类型
tinyint类型 8位 范围 -128~127 默认有符号
tinyint unsigned 无符号类型 8位范围 0~255
smallint类型 16位 范围0~65535
int 类型 32位 范围 0~4294967295
浮点数类型float(M,D),表示一共显示M位数字(整数位+小数位),其中D表示小数点后面的位数
M的范围为1~65,M 的默认值是10;D的范围是0~30,但不得超过M
float 有效数字为6~7位
例如 float(10,4) 一共10位小数点战4位
double 有效数字为15~16位
decimal类型 比浮点数更精确,适合用来表示货币等精度高的数据
date 类型 用法 例如 20110205 或者 ‘2012-02-05’
time 类型 用法 例如 ‘12:11’
year 类型 用法 例如 ‘2011’
datetime 一般用于注册时间 员工的入职时间 不可变
timestamp 一般用于上次登陆时间
char:定长字符串,范围是0-255
varchar:变长字符串,范围是0-65535
enum类型:一般用于性别,二选一 例如enum (‘F’,’M’)
set类型:可以多选

约束条件
UNSIGNED 无符号
ZEROFILL 使用0填充
例如 001 011 111
NOT NULL 不为空
DEFAULT 默认
UNIQUE KEY 唯一索引,可以为空,一个表中可以有多个
PRIMARY KEY 唯一主键
AUTO_INCREMENT 自动增长,只能用于主键,而且是整数类型

c.修改表alter table
1. 修改表名
ALTER TABLE 表名 RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
3. 修改字段
修改数据类型和约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
修改字段名,但不更新数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
修改字段名同时更新字段的数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
4.添加复合主键
ALTER TABLE 表名 ADD primary key(字段名,字段名…);
5. 删除字段
ALTER TABLE 表名 DROP 字段名;
()具体例子 new17为表名
修改存储引擎
mysql> alter table 表名 engine=myisam;
3. 添加字段
mysql> alter table new17 add age int(3) not null default 22,add sex enum(‘M’,’W’);
添加到字段id前面
mysql> alter table new17 add num varchar(10) not null after id;
添加到第一行
mysql> alter table new17 add aaa int first;
3. 删除字段
mysql> alter table new17 drop aaa;
4. 修改字段类型modify
mysql> alter table new17 modify id smallint;
mysql> alter table new17 change id uid smallint;
mysql> alter table new17 change num nnum char(10);
mysql> alter table new17 modify age int(10) not null primary key auto_increment;

5.增加约束(针对已有的主键增加auto_increment)
mysql> alter table new17 modify uid smallint not null auto_increment;
6. 对已经存在的表增加复合主键
mysql> alter table service2 add primary key(host_ip,port);
7. 增加主键
mysql> alter table new17 modify name varchar(10) not null primary key;
8 增加主键和自动增长
mysql> alter table new17 modify id int not null primary key auto_increment;
9. 删除主键
mysql> desc new17;
+——-+—————+——+—–+———+—————-+
| Field | Type
| Null | Key | Default | Extra
|
+——-+—————+——+—–+———+—————-+
| id | int(11)
| NO | PRI | NULL | auto_increment |
+——-+—————+——+—–+———+—————-+
因为有依赖关系,所以要先删除自增约束条件,然后再删除主键
a. 删除自增约束
mysql> alter table new17 modify id int(11) not null;
b. 删除主键
mysql> alter table new17 drop primary key;
d. 描述表结构
mysql> desc 表名; //简写查看表结构
mysql> describe 表名; //查看表结构
mysql> show create table 表名; //查看表详细结构
e.向表中插入数据
mysql> insert into 表名 values(每个字段对应的数据); 表名后面没有指定字段默认为所有字段
mysql> insert into 表名(1个或多个字段) values(每个字段对应的数据);
f.查询表中的数据
mysql> select * from mysql.user; \G文本方式显示
或者
[root@mysql ~]# mysql -u root -p’密码’ -e “select * from mysql.user” |grep expired

三.设置index普通索引
a、建表时添加索引
mysql> create table 表名(字段 数据类型,字段 数据类型 index(所需添加索引的字段));
index(字段)表示为该字段添加索引
b、向已存在的表添加索引(2种方法)
方法1
mysql> create index 索引名 on 表名 (所需添加索引的字段);
例如:
mysql> create index t16_name on t16 (name);
方法2
mysql> alter table 表名 add index(所需添加索引的字段);
例如:
mysql> alter table t16 add index(id);
c、查询索引
mysql> show index from 表名;
mysql> show index from 表名\G
d、删除索引
mysql> drop index 索引名 on 表名;
例如:
mysql> drop index t16_id on t16;
==UNIQUE索引==(允许空值)
唯一索引要求创建的索引中不允许有重复的,但是空值和空值之间是不算作重复
表company.department2
可以为unique索引起名字,但是索引名和字段名需不同
例如:
mysql> create table 表名( dept_id int, dept_name varchar(30), unique(dept_name));
查询索引
mysql> show index from 表名;
例如:
mysql> show index from department2;
mysql> show create table department2\G
删除索引
mysql> drop index 索引名 on 表名;
例如
mysql> drop index dept_name on department2;
向已存在的表中添加索引
mysql> create unique index dept_name on department2(dept_name);

四.主键primary key(字段)
创建主键
mysql> create table 表名 (id int,name char(10),primary key(id));
删除主键
mysql> alter table 表名 drop primary key;
向已存在的表添加主键
mysql> alter table 表名 add primary key(字段);

==AUTO_INCREMENT修饰符==
自动增长从表中最大的数值开始,只适用于int字段,必须要有key,一般用于主键,
一个表只能有一个
mysql> create table autoadd(id int auto_increment primary key,name char(10) not null);
mysql> insert into autoadd values (10,’alice’);
mysql> insert into autoadd(name) values(‘john’);
mysql> select * from autoadd;
+—-+——-+
| id | name |
+—-+——-+
| 10 | alice |
| 11 | john |
+—-+——-+

五、复制表
复制表结构+记录 (主键、外键和索引这些key是不会复制的)
mysql> create table 表名1 select * from 表名2;
只复制表结构
mysql> select * from 表名 where 1=2;//条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table 表名1 select * from 表名2 where 1=2;
连同key都会复制
mysql> create table new2 like new17;

六、删除表
DROP TABLE 表名,表名,表名;
drop table IF EXISTS 表名; //如果存在就删除,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值