引用

http://c.biancheng.net/mysql/10/
https://www.runoob.com/mysql/mysql-create-tables.html
https://www.runoob.com/sql/sql-autoincrement.html
https://blog.csdn.net/u014044812/article/details/51004754

数据类型

数值类型

  • TINYINT(1 byte):微小整数值
  • SMALLINT(2 bytes):小整数值
  • MEDIUMINT(3 bytes):中整数值
  • INT/INTEGER(4 bytes):大整数值
  • BIGINT(8 bytes):极大整数值
  • FLOAT(4 bytes):单精度浮点数值
  • DOUBLE(8 bytes):双精度浮点数值
  • DECIMAL:小数值 ,DECIMAL(P,D):
    P是表示有效数字数的精度。 P范围为1〜65
    D是表示小数点后的位数。 D的范围是0~30
    MySQL要求D<=P,默认P=10,D=0

日期和时间类型

  • DATE(3 bytes):日期 YYYY-MM-DD
  • TIME(3 bytes):时间 HH:MM:SS
  • YEAR(1 byte):年份 YYYY
  • DATETIME(8 bytes):日期和时间值 YYYY-MM-DD HH:MM:SS
  • TIMESTAMP(4 bytes):日期和时间值 时间戳

字符串类型

  • CHAR(0-255 bytes):定长字符串
  • VARCHAR(0-65535 bytes):变长字符串
  • TINYTEXT(0-255 bytes):短文本数据
  • TEXT(0-65535 bytes):文本数据
  • MEDIUMTEXT(0-16777215 bytes):中等文本数据
  • LONGTEXT(0-4294967295 bytes):极大数据文本
  • ENUM(1-2 bytes):枚举 <字段名>ENUM ('value1','value2','value3')可通过名称和索引使用,索引从1开
  • SET (0-8 bytes):组 ,与ENUM相似,可以使用多个

二进制类型

  • BIT(0-64 位):位字段类型
  • BINARY(M bytes):固定长度二进制字节
  • VARBINARY(M bytes):可变长度二进制字节
  • TINYBLOB(0-255 bytes):二进制微字符串
  • BLOB(0-65535 bytes):二进制小字符串
  • MEDIUMBLOB(0-16777215 bytes):二进制中等字符串
  • LONGBLOB(0-4294967295 bytes):二进制长字符串

Spatial

JSON

创建,删除相关

创建

CREATE TABLE table_name (column_name column_type(size));
约束字段 在列名后部分加或做方法 常用如下

  • NOT NULL:非空- 指示某列不能存储 NULL 值
ID int NOT NULL
  • UNIQUE:唯一 - 保证某列的每行必须有唯一的值
ID int UNIQUE
  • PRIMARY KEY:主键 - NOT NULL 和 UNIQUE 的结合,每个表一个主键
ID int PRIMARY KEY

FOREIGN KEY:外键- 指向另一个表的UNIQUE

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

CHECK:检查- 保证列中的值符合指定的条件。

CHECK (P_Id>0)

DEFAULT:默认- 规定没有给列赋值时的默认值。

City varchar(255) DEFAULT 'JS'

AUTO_INCREMENT:自动增长- 在新记录插入表中时生成一个唯一的数字

ID int AUTO_INCREMENT

删除

清空表内数据

TRUNCATE TABLE table_name

删除表

DROP TABLE table_name

删除数据库

DROP DATABASE database_name

删除索引

ALTER TABLE table_name DROP INDEX index_name

索引

索引使数据库应用程序可以更快地查找数据,但更新更耗时,其中唯一索引效率更高。

CREATE INDEX index_name
ON table_name (column_name)

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

SQL 查询顺序

  1. from
  2. join
  3. on
  4. where
  5. group by(开始使用select中的别名,后面的语句中都可以使用)
  6. avg,sum....
  7. having
  8. select
  9. distinct
  10. order by
  11. limit
    详见
    https://blog.csdn.net/u014044812/article/details/51004754
select 考生姓名, max(总成绩) as max总成绩 
 
from tb_Grade 
 
where 考生姓名 is not null 
 
group by 考生姓名 
 
having max(总成绩) > 600 
 
order by max总成绩