1:关键字与函数名必须为大写,小写也可以只是。大写为了容易区分。
2:数据库、字段、表名称全部小写。
3:sql语句必须以分号结尾。
创建数据库语法结构
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
CREATE DATABASE t1;//创建数据库名为t1。
[DEFAULT]可写可不写
[IF NOT EXISTS]可加可不加
查看当前服务器下的数据列表
SHOW {DATABASES | SCHEMAS}
[LIKE 'pattern' | WHERE expr]
查看数据创建的时候的编码
SHOW CREATE DATABASE 文件名;
修改数据库编码
ALTER {DATABASE | SCHEMA} [db_name]
[DEFAULT] CHARACTER SET [=] charset_name
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] data_name
查看警告
SHOW WARNINGS;
创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
....
)
创建数据表的同时把查询的结果写入到数据表
CREATE TABLE [IF NOT EXISTS] table_name
[(create_definition,...)]
select_statement
//创建b1数据表
CREATE TABLE b1(
->username VARCHAR(20),
->age TINYINT UNSIGNED,
->salary FLOAT(8,2) UNSIGNED
->);
查看数据表
SHOW TABLE [FROM table_name]
[LIKE 'pattern' | WHERE expr]
查看数据表结构
SHOW COLUMNS FROM table_name
DESC table_name
查看历史
history;
插入记录
INSERT [INTO] table_name [(col_name...)] VALUES(val...);//可一次性插入多条记录
INSERT [INTO] table_name SET col_name [expr | default],...//可以使用子查询
INSERT new_table_name SELECT col_name FROM table_name WHERE condition//可把table_name里面符合条件的数据赋值给new_table_name。
INSERT [INTO] table_name [(col_name...)] SELECT...
查找记录
SELECT * FROM table_name//查找数据表table_name里面的所有记录
SELECT select_expr [,select_expr] FROM table_name
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
删除记录
DELETE FROM table_mane WHERE id = '';
空值和非空值
NULL
NOT NULL
自动编号
AUTO_INCREMENT //自动编号,且必须和主键组合使用。默认情况下,起始值为1,增量为1。
主键
PRIMARY KEY //主键约束,每张数据表只能有一个主键,主键保持数据的唯一性,主键自动设置为 NOT NULL。AUTO_INCREMENT必须跟PRIMARY KEY
一起使用,但是PRIMARY KEY不一定要跟AUTO_INCREMENT使用。
唯一约束
UNIQUE KEY //唯一约束,唯一约束可以保证记录的唯一性,唯一约束的字段可提为空值,每张数据表可以存在多个唯一约束。
默认值
DEFAULT//默认值,当插入记录时,没有明确为字段赋值,则自动赋予默认值
外键
FOREI
GN KEY
保持数据的完整性和一致性,实现一对一或一对多的关系
可查看存储引擎
SHOW CREATE TABLE table_name
外键约束的参照操作
1:CASCADE:从父表中删除或更新且字段删除或更新子表中匹配的的行。
2,SET NULL:从父表删除或更新行,并设置子表中外键列的值为NULL,如果使用该方法,子表列必须没有指定NOT NULL。
3,RESTRICT:拒绝对父表删除或更新操作
3,NO ACTION:标准sql的关键字,在MySQL中和RESTRICT相同。
添加单列
ALTER TABLE table_name ADD[COLUMN] col_name colunm_definition[FRIST | AFTER col_name]
添加多列
ALTER TABLE table_name ADD[COLUMN](col_name colunm_definition,...)
删除列
ALTER TABLE table_name DROP[COLUMN] col_name
删除多列
ALTER TABLE table_name DROP[COLMN] col_name,col_name//操作多个列用逗号隔开
添加主键
ALTER TABLE table_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type](index_col_name,...)
添加唯一约束
ALTER TABLE table_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
添加外键约束
ALTER TABLE table_name ADD[CONSTRAINT[symbol]] FOREIGN KEY [index_name] [index_col_name] REFERENCE_definition
添加/删除默认约束
ALTER TABLE table_name ALTER[COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
删除主键约束
ALTER TABLE table_name DROP PRIMARY KEY
删除唯一约束
ALTER TABLE table_name DROP {INDEX | KEY} index_name
删除外键约束
ALTER TABLE table_name DROP FOREIGN KEY fk_symbol
修改列定义
ALTER TABLE table_name MODIFY [COLUMN] col_name column_definition [first | after col_name]
修改列名称
ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name column_definition [first | after col_name]//既可以修改列名称又可以修改列定义
修改数据表名称
方法一
ALTER TABLE table_name RENAME [TO | AS] new_table_name
方法二
RENAME TABLE table_name TO new_table_name
[,table_name2 TO new_table name2]//可同时操作多个数据表名称
更新记录(单表更新)(多表更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1 = {expr1 | default}[,col_name2 = {expr2 | default}]
[WHERE where_condition]
删除记录 (单表删除)
DELETE FROM table_name [WHERE where_condition]
多表删除
DELETE table_name[.*] [,table_name[.*]]...
FROM table_references
[WHERE where_condition]
SET NAMES gbk;意思是改变客户端的编码格式,而不影响真的数据库中的真实数据