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可以回滚
网友评论