如何安装MySQL
终端输入命令,输入密码登陆
mysql -u root -p
进入mysql>
状态
几个命令(注意都有分号)
//显示所有数据库
SHOW DATABASES;
//打开某个数据库
USE DATABASES_name;
//创建数据库
CREATE DATABASE DATABASES_name;
//删除数据库
DROP DATABASE DATABASES_name;
//显示所有表
SHOW TABLES;
//删除表
DROP TABLE table_name;
//显示表的描述, 字段名称,类型,是否为主键等
DESC table_name;
SHOW COLUMNS from table_name;
语法
CREATE TABLE table_name (column_name column_type);
CREATE TABLE <表名>
(
<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]
…
[,<表级完整性约束条件> ]
);
例
CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE,
Ssex CHAR(1) ,
Sage SMALLINT,
Sdept CHAR(15),
Scholarship CHAR(2));
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><数据类型> ] ;
具体的命令
ALTER TABLE table_name DROP field_name;//删除
ALTER TABLE table_name ADD new_field_name field_type;//添加
//如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
ALTER TABLE table_name MODIFY field_name new_field_type;//MODIFY 修改 数据类型
ALTER TABLE table_name CHANGE field_name new_field_name new_field_type;//CHANGE 修改字段名
ALTER TABLE 对 Null 值和默认值的影响
…
一次插入一条数据(一行)
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
insert into table_name values(value1, value2,...valueN);
多行
INSERT INTO table_name (field1, field2,...fieldN)
VALUES
(valueA1,valueA2,...valueAN),
(valueB1,valueB2,...valueBN),
(valueC1,valueC2,...valueCN),
......;
第一列如果没有设置主键自增(PRINARY KEY AUTO_INCREMENT)的话添加第一列数据比较容易错乱,要不断的查询表看数据。
如果添加过主键自增(PRINARY KEY AUTO_INCREMENT)第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
DELETE FROM table_name [WHERE Clause]
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
DROP INDEX Stusno;
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
禁用外键约束
SET FOREIGN_KEY_CHECKS=0;
go不是Transact-SQL语句,而是osql和isql 实用工具及SQL Server 查询分析器才能识别的命令。
go其实就是个分隔符,将语句分隔开,但go又不仅仅是个分隔符,比如你给的代码,如果没有g0有可能会执行出错,究其原因,主要是因为其前后的语句是两个独立的事务。
go语句分隔的部分会被分别编译为两个执行计划。
https://zhuanlan.zhihu.com/p/449975942
show table status like ‘user’ \G
\G 的作用:是将查到的结构旋转90度变成纵向
Name
表名
Engine
表的存储引擎,在旧版本中,该列的名字叫做 Type,而不是 Engine。
Version
表的 .frm 文件的版本号。
Row_format
行的格式。对于 MyISAM 表,可选的值为 Dynamic、Fixed 或者 Compressed。
Dynamic 的行长度是可变的,一般包含可变长度的字段,如 VARCHAR 或者 BLOB。
Fixed 的行长度则是固定的,值包含固定长度的列,如 CHAR 和 INTEGER。
Compressed 的行则只在压缩表中存在,压缩表是不能够修改的(除非先将表解除压缩,修改数据,然后再次压缩),压缩表可以极大的减少磁盘空间占用,一次也可以减少磁盘 I/O,从而提升查询性能。压缩表也支持索引,但索引也是只读的。
Rows
表中的行数。对于 MyISAM 和其他的一些存储引擎,该值是精确的,但对于 InnoDB,该值是估计值。
Avg_row_length
平均每行包含的字节数。
Data_length
表数据的大小(以字节为单位)。
Max_data_length
表数据的最大容量,该值和存储引擎有关。
Index_length
索引的大小(以字节为单位)。
Data_free
对于 MyISAM 表,表示已分配但目前没有使用的空间。这部分空间包括了之前删除的行,一级后续可以被 insert 利用到的空间。
Auto_increment
下一个 auto_increment 的值。
Create_time
表的创建时间。
Update_time
表数据的最后修改时间。
Check_time
使用 check table 命令货值 myisamchk 工具最后一次检查表的时间。
Collation
表默认字符集和字符列排序规则。
Checksum
如果启用,保存的是整个表的实时校验和。
Create_options
创建表指定的其他选项。
Comment
该列包含了一些其他的额外信息。对于 MyISAM 表,保存的是表在创建时带的注释。对于 InnoDB 表,则保存的是 InnoDB 表空间的剩余空间信息。如果是一个视图,则该列包含 “VIEW” 的文本字样。