musql -u user -p userpassword [-P port -H serverLocation]
在mysql中DATABASE与SCHEMA是一样的 CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
语法说明:花括号代表必须要有的 竖线代表选项(or) 中括号为可选项. CREATE DATABASE t1; //创建一个t1的数据库
如果当数据库存在的话再次添加相同的数据库将会报错.但是加上IF NOT EXISTS将会屏蔽掉这个错误信息 CREATE DATABASE IF NOT EXISTS t1;
CREATE DATABASE study CHARACTER SET utf8;
SHOW {DATABASES|SCHEMAS} [LIKE "pattern" | WHERE expr]
SHOW WARNINGS;
SHOW CREATE DATABASE db_name;
ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
ALTER DATABASE study CHARACTER SET = gbk;
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
它决定了数据的存储格式,代表了不同的信息类型.
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 分别是存储的数据长度不同.一般用INT即可.
FLOAT[(M,D)] M是数字总位数,D是小数点后面的位数,如果M与D被省略,根据硬件允许的限制允许保存精度浮点数精确到大约7位小数位
DOUBLE[(M,D)]
FLOAT[(7,2)] 小数点之前的数字+小数点之后的数字总数为7为
YEAR 年
TIME 时间类型 范围是’-838:59:59’到’838:59:59’。
DATE(日期类型) 年月日
DATETIME(日期时间类型) 年月日时分秒
TIMESTAMP(时间戳)
真正时间类型会采用数字类型来存储,利用时间戳的形式 这样做的目的是为了考虑跨时区问题
CHAR(定长类型) 0~255 如果字符设置为4,如果字符达不到4,后面以空格来补齐.
VARCHAR(变长) 不会自动补齐
TINYTEXT 2^8
TEXT 2^16
MEDIUMTEXT 2^24
LONGTEXT 2^32
ENUM("value1","value2") 枚举值(选项值) 比如性别 男,女,保密
SET("value1","value2") 1,2,3,4,8 取决于set成员数目 最多64个成员
打开数据库 USE db_name;
SELECT DATABASE();
``` CREATE TABLE [IF ONT EXISTS] table_name( column_name data_type, )
```
mysql> CREATE TABLE tb1( -> username VARCHAR(20), -> age TINYINT UNSIGNED, -> salary FLOAT(8,2) UNSIGNED -> );
UNSIGNED(无符号位 从0开始)
SHOW TABLES [FROM db_name] [LIKE "pattern" | WHERE expr ]
SHOW COLUMNS FROM tbl_name
SHOW COLUMNS FROM tb1;
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)
省略掉列名称则为所有的字段赋值
INSERT tb1 VALUES("Tom",25,7865.32);
如果少写了一个列值 则会出现 Column count doesnt value count at row 1 列不匹配
INSERT tb1(username,salary) VALUES ("John",4500.69);
SELECT expr,...FROM tbl_name
SELECT * FROM tb1;
*指的是字段过滤而不是记录过滤.
NULL,字段值可以为空 NOT NULL ,字段值禁止为空
CREATE TABLE tb2( username VARCHAR(20) NOT NULL, age TINYINT UNSIGNED NULL );
INSERT tb2 VALUES(NULL,25);
这段代码是错误的.会报错 Column username cannot be null;
AUTO_INCREMENT 自动编号,且必须与主键组合使用 默认情况下,起始值为1,每次的增量为1
字段必须为数值型.FLOAT小数位数必须为0
CREATE TABLE tb3( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL );
PRIMARY KEY 主键约束 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL
主键可以不必与AUTO_INCREMENT一起使用
CREATE TABLE tb3( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL );
只需要加一个PRIMARY KEY.
INSERT tb3(username) VALUES("Tom"); INSERT tb3(username) VALUES("John"); INSERT tb3(username) VALUES("Rose"); INSERT tb3(username) VALUES("Soul");
因为设置了主键,这样得使用字段对应添加
CREATE TABLE tb4( id SMALLINT PRIMARY KEY, username VARCHAR(20) NOT NULL );
主键的字段可以赋值,但是不允许存在两个相同的值
UNIQUE KEY 唯一约束可以保证记录的唯一性 唯一约束的字段可以为空值(NULL) 每张数据表可以存在多个唯一的约束
索引的原理,全NULL值不被记录在索引上 也就是这个字段中的不能存在相同的记录,但是可以存在相同的NULL值
CREATE TABLE tb5( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, age TINYINT UNSIGNED );
写几条记录 INSERT tb5(username,age) VALUES('Tom',22); INSERT tb5(username,age) VALUES('Tom',25);
第二条语句只会报错
DEFAULT 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
``` CREATE TABLE tb6( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM("1","2","3") DEFAULT "3" );
INSERT tb6(username) VALUES("TOM") ```