MySQL学习笔记
MySQL
1.二进制方式连接到MySQL
在命令提示符窗口输入命令:
mysql -u root -p
参数说明
- -u 参数用于指定用户名。
- -p 参数表示需要输入密码。
2.退出当前命令方法
用 exit 命令退出mysql提示窗口
用 Ctrl +C 退出当前无效命令
3.数据库的数据类型
数值类型
- int int(M)
int(M)中的M表示数据显示的宽度,与实际存储的长度无关。
1、也就是int(3)和int(11)能够存储的数据是一样的,都是从-2147483648到2147483647(或者0-4294967295)。
2、int(M)只有联合zerofill参数才能有意义,否则int(3)和int(11)没有任何区别。
日期和时间类型
字符串类型
枚举、集合、空间数据类型
MySQL 基本命令
一、数据库的基本操作
(1)create 创建库
DATABASE与SCHEMA含义相同,任选
CREATE DATABASE|SCHEMA 数据库名
CHARACTER SET utf8mb4 --指定字符集
COLLATE utfmb4_general_ci; --指定排序规则
或直接
CREATE DATABASE 数据库名;
(2)show 显示数据库
显示所创建数据库的信息:
show create database 数据库名;
显示所有数据库:
SHOW DATABASES;
显示指定数据库:
SHOW DATABASE IN 数据库名;
显示含有“特定字符串”的数据库:
SHOW DATABASES IN 数据库名 like '% 这里写特定字符串 %';
(3)drop 删除数据库
直接删除数据库,不检查是否存在
DROP DATABASE 数据库名;
或
DROP DATABASE [IF EXISTS] 数据库名;
用mysqladmin命令在终端删除数据库
mysqladmin -u root -p drop 数据库名
回车输入密码
(4)use 选择数据库
use 数据库名;
选择要使用的库后,才能在指定库下创建、处理表。
二、表的基本操作
在处理表前必须要指定数据库,
只有在指定的数据库下才能创建或处理表:
use 数据库名;
(1)create 创建表
CREATE DATABASE 表名(
字段名1 数据类型 [NO NULL] comment '字段注释',
字段名2 数据类型 ……
…… ,
最后一行不用英文逗号
)ENGINE = InnoDB CHARACTER SET = utf 8 COMMENT = '注释' ;
注释:
ENGINE = InnoDB
InnoDB 是数据库默认的存储引擎,用来处理大量数据。
在删除表时InnoDB不会出现重新建立表,而是一行一行的删除,会在内存中缓冲数据和索引,但是不支持 fulltext 的索引。fulltext:全文索引
CHARARCTER SET = utf8
设置字符集,数据库的默认编码utf8
字段不为空则设置为***非空约束*** :NO NULL
反之,默认则字段可为空
(2)Desc (Destrible) 查看表的结构信息
Desc 表名;
或
Destrible 表名;
Explan与Desc是同义。
(4)show 查看表
show create 显示所创建表的语句:
show create table 表名;
show table 显示指定库中的所有表:
SHOW TABLES;
或 没指定数据库时:
SHOW TABLES IN 数据库名;
显示含有“特定字符串”的表:
SHOW TABLES IN 数据库名 like '% 这里写特定字符串 %';
(5)delete table删除表中的数据
1.直接删除表中的数据,不检查是否存在
DROP TABLE 表名
[WHERE 条件 ];
或
DROP TABLE [IF EXISTS] 表名
[WHERE 条件 ];
2.删除表中所有行数据:
DELECT FROM orders;
(5.1)drop table删除表
drop table 用于删除一个或多个数据表,会把数据表的定义、在表上定义的触发器和表内的数据一起删除
Drop table 表名;
删除表前,若表有外键约束则需要 先删除子表与主表之间的外键约束,解除后主表才能被删除
删除外键约束:
Alter table 子表名 Drop Foregin Key 外键名;
(6)insert into 、replace 插入数据
insert 和 replace功能相似,若插入数据与表中数据相同: replace会删除原始数据再插入数据
INSERT INTO 表名(字段1,字段2……)
VALUES(value1,value2……),(value11,value12……);
或
INSERT INTO 表名(字段1,字段2……)
VALUES ROW(value1,value2……),ROW(value11,value12……);
字段顺序可变,insert into()则默认为创建表结构时的字段顺序
INSERT INTO 表名()
VALUES(value1,value2……),(value11,value12……);
(7)select 查询数据
查询表的所有信息:
SELECT * FROM 表名;
在表中查询满足条件的信息:
SELECT * FROM 表名 WHERE 条件;
或
SELECT 字段名1,字段名2……
FROM 表名
[WHERE 条件]
[ORDER BY column_name [ASC|DESC] ] --指定结果集的排序顺序,默认是升序ASC
[LIMIT number ] --用于限制返回的行数
(8)update 修改数据
UPDATE 表名
SET 字段名1=new 字段名1,字段名2=new 字段名2……
WHERE 条件;
示例
where将book_info中的‘否’修改为‘是'
update book_info set YorN_key='是' where YorN_key like '%否%';
(9)alter 修改表结构
1.表名的修改
ALTER TABLE 表名 RENAME TO|AS new表名;
或
RENAME TABLE 表名 TO|AS new表名;
2.字段的修改
1.增加字段:
ALTER TABLE 表名
ADD 字段名 字段定义语法 [FIRST | AFTER 字段名]; --First:用于指定把字段添加到第一例
2.删除字段:
ALTER TABLE 表名
DROP [CLOUMN] 字段名;
3.修改字段名、数据类型:
ALTER TABLE 表名
CHANGE [CLOUMN] old字段名 new字段名 [字段定义(即数据类型)];
只修改数据类型还可以用:
ALTER TABLE 表名
MODIFY [CLOUMN] 字段名 数据类型;
ALTER 还可修改引擎、字符集、索引关键字压缩方式,设置自增字段初始值
(9)字段约束
设置主键为自增长
字段名 数据类型 AUTO_INCREMENT
ALTER 在创建表后 添加字段约束
1.添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
ALTER TABLE 表名 ADD PRIMARY KEY (字段名1,字段名2);
2.添加外键约束
ALTER TABLE 表名
ADD
CONSTRAINT 自定义外键约束名 /***自定义***/
FOREIGN KEY 自定义外键名称(字段名)
REFERENCES 主表(主表的主键)
从表的外键关联必须是主表的主键,且主键与外键的数据类型必须一致
3.唯一约束 UNIQUE KEY
ALTER TABLE 表名 ADD CONSTRAINT 自定义唯一约束名
UNIQUE(字段名);
4.检查约束 CHECK
ALTER TABLE 表名 ADD CONSTRAINT 检查约束名
CHECK(检查约束字段);
5.非空约束 NOT NULL
ALTER TABLE 表名
CHANGE COLUMN 字段名
字段名 数据类型 not null;
6.默认约束default
ALTER TABLE 表名
CHANGE COLUMN 字段名
字段名 数据类型 DEFAULT 默认值;
ALTER 删除表的约束
1.删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
2.删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
3.删除唯一约束
ALTER TABLE 表名 DROP INDEX 唯一约束字段名;
3.删除检查约束
ALTER TABLE 表名 DROP CHECK 检查约束名;
5.删除非空约束
ALTER TABLE 表名
CHANGE COLUMN 字段名
字段名 数据类型 null;`
6.删除默认值
ALTER TABLE 表名
CHANGE COLUMN 字段名
字段名 数据类型 DEFAULT NULL;