美文网首页
Mysql常用命令(1)

Mysql常用命令(1)

作者: 白练Draft | 来源:发表于2018-07-03 00:22 被阅读6次
1、启动/停止mysql服务(管理员身份)
启动:net start mysql
停止:net stop mysql
2、登录/退出mysql(以root用户为例)
登录:mysql -u root -p # 随后输入密码
      mysql -h localhost -P 3306 -u root -p # host和端口号
退出:ctrl+C
      exit
3、其他sql命令
查看数据库版本:select version(); 或 status;
查看当前数据库:select database();
查看当前用户:select user();
设置终端编码:set names gbk;
查看编码:show variables like '%character_set%';
4、库操作
查看库列表:SHOW DATABASES;
访问库:USE 库名;
添加库:CREATE DATABASE 库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
        CREATE DATABASE IF NOT EXISTS 库名; # 先检查库是否存在,不存在再创建
修改库编码:ALTER DATABASE 库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
删除库:DROP DATABASE 库名;
        DROP DATABASE IF EXISTS 库名; # 先检查是否存在,存在再删除

5、表操作

查看表列表:SHOW TABLES;
查看表结构:DESC 表名;
          DESCRIBE 表名;
查看索引:SHOW INDEX FROM 表名;
修改表名:ALTER TALBE 原名 RENAME TO 新名;
          RENAME TABLE 原名 新名;
清空表:TRUNCATE 表名;
删除表:DROP TABLE 表名;
修改存储引擎:ALTER TABLE 表名 ENGINE=MyISAM; 
              ALTER TABLE 表名 ENGINE=INNODB;

建表范例:

CREATE TABLE 表名(
    列名 数据类型 约束条件,
    …
)engine myisam charset utf8;

其中engine后写存储引擎,如果不写则使用默认引擎,在my.ini中配置。
定义自增id的例子:id int PRIMARY KEY AUTO_INCREAMENT
定义时间戳的例子:ts timestamp DEFAULT CURRENT_TIMESTAMP

复制表结构:CREATE TABLE 新表名 LIKE 旧表名;
复制表结构及数据:CREATE TABLE 新表名 SELECT * FROM 旧表名;
6、列操作
添加列:ALTER TABLE 表名 ADD COLUMN 列名 数据类型 NOT NULL DEFAULT 默认值; 
        # 其中COLUMN可以省略,下同。
        # NOT NULL和DEFAULT 默认值为约束条件,非必填 
删除列:ALTER TABLE 表名 DROP COLUMN 列名;
修改列名:ALTER TABLE 表名 CHANGE COLUMN 原名 新名 数据类型 NOT NULL DEFAULT 默认值; 
        # 如果不填写约束条件,则会将约束条件清空,而非保留原有约束条件,下同。
修改数据类型:ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型 NOT NULL DEFAULT 默认值; 
修改排序:ALTER TABLE 表名 MODIFY COLUMN 列名1 数据类型 NOT NULL DEFAULT 默认值 AFTER 列名2; 
        # 将列1排到列2的后面
        ALTER TABLE 表名 MODIFY  COLUMN 列名1 数据类型 NOT NULL DEFAULT 默认值 FIRST; 
        # 将列1排序为第一列
添加默认值:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;
删除默认值:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
添加主键:ALTER TABLE 表名 ADD PRIMARY KEY(列名);
添加复合主键:ALTER TABLE 表名 ADD PRIMARY KEY(列1,列2);
删除主键:ALTER TABLE 表名 DROP PRIMARY KEY; 
        # 如果删除自增的主键会报错,要先去掉自增属性(用MODIFY)
添加外键:ALTER TABLE 表名 ADD FOREIGN KEY(列名) REFERENCES 外表(外表主键)
删除外键:ALTER TABLE 表名 DROP FOREIGN KEY 索引名;
添加唯一性:ALTER TABLE 表名 ADD UNIQUE(列名);
        ALTER TABLE 表名 ADD UNIQUE 索引名(列名);
        # 如果不写索引名则索引名Key_name将等于列名Column_name 
添加复合唯一:ALTER TABLE 表名 ADD UNIQUE(列1,列2);
        ALTER TABLE 表名 ADD UNIQUE 索引名(列1,列2);
        # 如果不写索引名,则索引名将等于列1的名称
添加普通索引:ALTER TABLE 表名 ADD INDEX(列名)
        ALTER TABLE 表名 ADD INDEX 索引名(列名);
添加全文索引:ALTER TABLE 表名 ADD FULLTEXT(列名)
添加多列索引:ALTER TABLE 表名 ADD FULLTEXT(列1,列2,列3)
删除唯一性/索引:ALTER TABLE 表名 DROP INDEX 索引名;
        ALTER TABLE 表名 DROP KEY 索引名;
添加约束的通常写法:ALTER TABLE 表名 ADD 【CONSTRAIN 索引名】约束类型(字段名)  【外键的引用】
7、约束条件&标识符

1)约束类型

NOT NULL:非空
DEFAULT:默认值,text和blob数据类型不能添加默认值
PRIMARY KEY:主键,非空,唯一
UNIQUE:唯一,可空
FOREIGN KEY:外键

2)添加方式(两种)
列级约束:直接写在列名、字段类型后面(除了外键)

id int PRIMARY KEY AUTO_INCREAMENT,
sname varchar(20) NOT NULL,
seatno int UNIQUE,
age int DEFAULT 18

表级约束:在定义过列后,单独开一行定义(除了非空和默认)

id int AUTO_INCREAMENT,
seatno int,
majorid int,
CONSTRAIN pk PRIMARY KEY(id),
CONSTRAIN  uq UNIQUE(seatno),
CONSTRAIN  fk_stuinfo_major FOREIGN KEY(major) REFERENCES major(id)
# 可以省略索引名,则默认的索引名为列名
PRIMARY KEY(id),
UNIQUE(seatno),
FOREIGN KEY(major) REFERENCES major(id)

3)自增标识符AUTO_INCREMENT
需要与KEY搭配使用,但不一定是主键,也可以是UNIQUE等。
一个表中至多一个自增标识符。
必须是数值型数据类型,整型或浮点数都可以,一边是整型。

8、数据操作(增删改)

1)插入数据
方法一:

INSERT INTO 表名 (col1,col2,col3,col4) 
VALUES 
(1,'xx','xx','xx'),
(2,'yy','yy','yy'),
(3,'zz','zz','zz');

表头可以省略。当表头省略时,则表项需要填写全部列,无内容的用null占位。支持多条插入,支持子查询

INSERT INTO girls(id, name, phone)
SELECT id,name,phone FROM students WHERE gender = '女';

方法二:

INSERT INTO 表名 SET 列名=值,列名=值;

只能添加单行

2)修改数据

# 单表
UPDATA 表名 
SET col1='xx', col2='yy' 
WHERE id=1;
# 多表
UPDATE 表1 别名1 连接类型 
JOIN 表2 别名2 
ON 连接条件 
SET col1='xx', col2='yy' 
WHERE 筛选条件

筛选条件非必填,不填或始终为true则影响全表。(下同)
SET后的赋值语句可以直接用等号赋值或salary=salary+2000之类的写法。

3)删除数据
删除特定的行
DELETE FROM 表名 WHERE id=1;
删除所有行(不加WHERE条件)
DELETE FROM 表名
清空数据(自增列重新开始)
TRUNCATE 表名
TRUNCATE删除没有返回值,DELETE有返回值
TRUNCATE删除不能回滚,DELETE可以回滚

相关文章

网友评论

      本文标题:Mysql常用命令(1)

      本文链接:https://www.haomeiwen.com/subject/dkwruftx.html