MySQL常用语句
MySQL常用指令
修改表结构
启动mysql服务
#启动mysql服务,mysql55是安装MySQL服务器时指定的服务器名称
net start mysql55
#停止mysql服务
net stop mysql55
创建数据库
#创建数据库 设置字符集 设置排序规则
create database 数据库名 character set gb2312 collate gb2312_chinese_ci;
#查看数据库服务器中存在的数据库
show databases;
#指定查看某个数据库信息
show create database 数据库名;
修改数据库
#修改数据库字符集和排序规则
alert database 数据库名 character set utf8 collate utf8_bin;
删除数据库
drop database 数据库名;
创建和查看数据表
#使用use语句设置当前数据库
use 数据库名;
#查看数据表
show tables;
#创建数据表
create table 表名 (
字段定义1,
字段定义2,
。。。。。。
字段定义n
);
#例如
#primary key:主键 auto_increment:主键名称 comment:自增 用户ID:注释
create table user (
uID int(11) primary key auto_increment comment '用户ID',
uName varchar(30) not null,
uPwd varchar(30) not null,
uSex enum('男','女') default '男' #注意最后一行没有逗号
);
#查看表结构(方式一)
desc 数据库名.表名;
#查看表结构(方式二)
desc 数据库名.表名\G;
修改表
#修改表名
alert table 原表名 rename 新表名;
#修改字段
alert table 表名 change 原字段名 新字段名 新数据类型;
#只修改字段类型
alert table 表名 modify 字段名 新数据类型;
#修改字段的排列位置
alert table 表名 modify 字段名1 数据类型 first|after 字段名2;
#添加新字段
alert table 表名 add 字段名 数据类型;
#删除字段
alert table 表名 drop 字段名;
#修改表的存储引擎
alert table 表名 engine=存储引擎名;
复制表
#复制表结构及数据到新表
create table 新表名 select * from 原表名;
#只复制表结构到新表
create table 新表名 select * from 原表名 where false;
#mysql 5.0后实现表结构复制还可以用like
create table 新表名 like 原表名;
#复制表的部分字段及数据到新表
create table 新表名 as (select 字段1,字段2,.....from 原表名);
删除表
#删除表
drop table 表名;
#删除多张表
drop table 表名1,表名2;
修改表数据
使用insert语句插入单条数据
insert into 表名 [(字段列表)] values(值列表);
insert into user values(1,'hello world');
#向指定字段插入数据
INSERT into user(uName,uPwd) values('张三','admin');
使用REPLACE语句插入单条数据
REPLACE INTO 表名[(字段列表)] values(值列表);
REPLACE INTO user(uId,uName,uPwd) values(3,'张三','admin');
使用INSERT语句插入多条语句
INSERT INTO 表名[(字段列表)] values(值列表1)[(值列表2),...(值列表n)];
#注意 插入的值必须对应前面的字段
INSERT INTO user(uName,uSex,uPwd) values
('张三','男','admin'),
('李四','男','admin1'),
('法外狂徒','男','admin2');
使用REPLACE语句插入多条语句
REPLACE INTO user(uID,uName,uSex,uPwd) values
(5,'张一','admin1'),
(6,'张二','admin2'),
(7,'张五','admin3');
插入其它表数据
INSERT INTO 目标数据表(字段列表一)
SELECT 字段列表二 FROM 源数据表 WHERE 条件表达式;
INSERT语句的其他语法格式
INSERT INTO 表名
SET 字段名1=值1 [字段名2=值2,....]
#字段顺序可以调整
INSERT INTO user
SET uName='admin',
uPwd='123',
uSex='男';
修改数据
UPDATE语句用于更新数据表中的数据
UPDATE 表名
SET 字段名1=值1,字段名2=值2 ...,字段名n=值n
[where 条件表达式];
#修改admin的密码
UPDATE user
SET uPwd = '456'
where uName='admin';
#修改数据表中所有的密码
UPDATE user
SET uPwd = '123';
删除数据
使用delete删除数据
DELETE FROM 表名 [WHERE 条件表达式];
#删除id为4的记录
DELETE FROM user
WHERE uID=4;
#删除表中所有数据
DELETE FROM user;
使用TRUNCATE语句删除数据
TRUNCATE [TABLE] 表名;
#删除user表所有数据
TRUNCATE user;
DELETE和TRUNCATE语句都能删除表中所有数据,它们的区别:
- DELETE语句可以实现带条件的数据删除,TRUNCATE只能清除表中记录
- TRUNCATE语句清除表中数据后,再向表中插入数据时,自动增加的字段默认初始值从新从1开始;使用DELETE语句清除表中数据后,再向表中添加记录时,自增字段的值会从记录中该字段最大值加1开始编号。
- 使用DELETE语句每删除一行记录都会记录在系统操作日志中,TRUNCATE语句清空数据时,不会在日志中记录删除内容,如要删除表中所有数据,TRUNCATE语句效率要高于DELETE语句。