- 打开数据库 use 数据库 ---- use mydata
- 查看数据库 show databases
- 显示当前用户打开的数据库 SELECT DATABASE();
- 创建数据表
语法:CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type
)
例子:创建student数据表
CREATE TABLE student(
id int,
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED
); - 数据表更名
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
例子:ALTER TABLE student RENAME stu; - 查看当前数据库下的数据表SHOW TABLES
查看其他数据库下的数据表SHOW TABLES FROM data_name; - 查看数据表 SHOW COLUMNS FROM table_name;
- 查看索引SHOW INDEX FROM tbl_name [FROM db_name];
- 查看表中的内容SHOW CREATE TABLE tbl_nameG;
- NOT NULL 与NULL
例子:username VARCHAR(20) NOT NULL 表明username不能为空,每次插入数据的时候必须插 - 主键约束 PRIMARY KEY
1. 添加主键约束
语法: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
[CONSTRAIN [symbol]]给主键起名字
例子:给student表中的uid设置为主键
ALTER TABLE student ADD PRIMARY KEY(uid);
注:每张表只能有一个主键,主键保证记录的唯一性,主键自动保存为NOT NULL
例子:将学生的id定义为student表的主键
id int PRIMARY KEY
2. 删除主键约束
语法:ALTER TABLE tbl_name DROP PRIMARY KEY; - 外键约束
外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。引擎必须为InnoDB。
语法:[CONSTRAINT<外键名>] FOREIGN 字段名1,[字段名2...] REFERENCES<主表名> 主键列1[,主键链2...]
"外键名"为定义的外键约束的名称,一个表中不能有相同名称的外键,"字段名"表示子表需要添加外键约束的字段列:"主表名"表子表外键所一来的表的名称;''主键列"表主表中定义的主键列或组合.
例子:
1.建立主表
CREATE TABLE GRADE(
gid int PRIMARY KEY,
gname VARCHER(20)
);
2.建立子表
CREATE TABLE student(
sid int PRIMARY KEY,
sname VARCHAR(20)
FOREIGN KEY(sid) REFERENCES GRADE(gid) student表的sid参照grade表的gid
)
添加外键约束
语法:
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...) reference_definition
例子:student表中的sid参照grape表中的gid添加外键:
ALTER TABLE student ADD FOREIGN KEY (sid) REFERENCE group(gid);
删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
外键约束的参照操作
1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行(ON DELETE CASCADE)
2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。
如果使用该选项,必须保证子表列没有指定NOT NULL
3.RESTRICT:拒绝对父表的删除或更新操作 - 表级约束对一个数据列建立的约束(既可以在列定义时声明,也可以在列定义之后声明)
列级约束对多个数据列建立的约束(只能在列定义后声明) - 唯一约束 UNIQUE KEY
1.添加唯一约束
语法:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
例子:给student表中username设置为唯一约束
ALTER TABLE student ADD UNIQUE (username);
唯一约束可以保证记录的唯一性
唯一约束的值可以为空值(但是只能有一个空值)
每张表可以存放多个唯一约束
2.删除唯一约束
语法:ALTER TABLE tbl_name DROP {INDEX|KEY} index_name;
例子:
首先通过SHOW INDEX FROM tbl_nameG;找出要删除索引的名字
ALTER TABLE student DROP KEY age; - 默认约束 DEFAULT
age TINYINT UNSIGNED DEFAULT '18'默认年龄为18岁 - 添加/删除默认约束
语法:ALTER TABLE tbl_name ALTER [COLUMN] col_name
{SET DEFAULT literal | DROP DEFAULT}
例子:为student表中添加一个age的列
ALTER TABLE student ADD age int NOT NULL;
例子:为age添加默认值15
ALTER TABLE student ALTER age SET DEFAULT 15;
例子:删除age的默认值
ALTER TABLE student ALTER age DROP DEFAULT; - 自动编号 AUTO_INCREMENT
id int KEY PRIMARY AUTO_INCREMENT 没增加一个记录id就自己增加1,不用人为的赋值了 - 添加单列
语法: ALTER TABLE table_name ADD [COLUMN] col_name
column_definition [FIRST | AFTER col_name]
若写FIRST表明加在最前面,AFTER表明加在哪一列的后面,若都不写则在最后面
例子:ALTER TABLE student ADD age int; - 删除某列
例子:ALTER TABLE student DROP age; - 修改列定义
语法:ALTER TABLE tbl_name MODIFY [COLUMN] col_name
column_definition [FIRST|AFTER col_name]
例子:ALTER TABLE student MODIFY uid int unsigned; - 修改列名称
语法:ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name
new_col_ame column_definition [FIRST|AFTER col_name]
例子:ALTER TABLE student CHANGE sid ssid INT UNSIGNED NOT NULL; - 插入记录
语法:INSERT [INTO] table [col_name,...] VALUES(val,...) ---(INTO可以省略)
例子:INSERT table VALUES('1','TOM',12);给student表的所有列赋值
INSERT table (username) VALUES ('john');给student的uername赋值 - 查询记录
语法:SELECT expr,... FROM student
例子:SELECT * FROM student;查询student表中的所有的记录