一、SQL定义
SQL(Structure Query Language)结构化查询语言。
是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统(来源:百度百科)
结构化查询语言分为DDL、DML、DQL、DCL四种:
1.DDL(Data Definition Language)数据库定义语言:
用来定义数据库对象(库、表、列)的语言。
2.DML(Data Manipulation Language)数据库数据库操作语言:
用来定义表的数据,比如增加、删除、修改。
3.DQL(Data Query Language)数据库查询语言:
用来查询表的数据,做查询操作。
4.DCL(Data Control Language)数据库控制语言:
用来定义数据库的访问权限和安全级别。
我们在开发过程中最常用到的是DDL、DML、DQL。
二、DDL
1.新建数据库:CREATE DATABASE `DATABASE_NAME`;
2.删除数据库:DROP DATABASE `DATABASE_NAME`;
3.修改数据库编码格式:ALTER DATABASE `DATABASE_NAME` CHARACTER SET `CHARACTER_SET`
例子:
ALTER DATABASE `school` CHARACTER SET utf8
4.新建表:CREATE TABLE `TABLE_NAME` (
`COLUMN_NAME` `COLUMN_TYPE`(SIZE) `CONSTRAINT`
)
例子: create table if not exists student(
sid int(8) unsigned NOT NULL AUTO_INCREMENT UNIQUE COMMENT '学号',
s_name varchar(255) DEFAULT NULL COMMENT '姓名',
s_id_card varchar(255) DEFAULT NULL COMMENT '身份证号',
s_sex boolean DEFAULT FALSE COMMENT '性别,true-男,false-女',
s_create_time datetime DEFAULT NULL COMMENT '入学时间',
PRIMARY KEY(`sid`)
)ENGINE=InnoDB DEFAULT CHARSET utf8 COMMENT '学生表';
外键约束写法:FOREIGN KEY(`COLUMN_NAME`) REFRENCES `TABLE_NAME`(`COLUMN_NAME`) ON DELETE RESTRICT | | NO ACTION | SET DEFAULT ON UPDATE RESTRICT | NO ACTION | SET DEFAULT | CASCADE;
注意:外键使用必须满足以下条件
(1)两张表必须是InnoDB存储引擎的表,并且它们没有临时表;
(2)建立外键的对应列必须具有相同的InnoDB数据类型;
(3)建立外键关系的对应列必须建立索引;
5.查看表结构:DESCRIBE `TABLE_NAME`
6.查看表详细结构: SHOW CREATE TABLE `TABLE_NAME`
5.修改表
(1)修改表名:ALTER TABLE `TABLE_NAME` RENAME `NEW_TABLE_NAME`
例子:alter table student rename new_student
(2)修改列的数据类型:ALTER TABLE `TABLE_NAME` MODIFY `COLUMN_NAME` `COLUMN_TYPE`
例子:alter table student modify s_sex int(8)
(3)修改列名:ALTER TABLE `TABLE_NAME` CHANGE `COLUMN_NAME` `NEW_COLUMN_NAME` `COLUMN_TYPE`
例子:alter table student change s_sex sex int(4);
(4)增加列:ALTER TABLE `TABLE_NAME` ADD `COLUMN_NAME` `COLUMN_TYPE`(SIZE) `CONSTRAINT`
例子:alter table student add address varchart(255) default null comment '地址'
(5)删除列:ALTER TABLE `TABLE_NAME` DROP `COLUMN_NAME`
例子: alter table student drop address;
(6)更改表存储引擎:ALTER TABLE `TABLE_NAME` ENFINE=`ENGINE_NAME`
例子:alter table student engine=innoDB;
(7)删除表外键约束:ALTER TABLE `TABLE_NAME` DROP FOREIGN KEY `FOREIGN KEY NAME`
(8)添加列的外键约束:ALTER TABLE `TABLE_NAME` ADD CONSTRAINT FK_ID FOREIGN KEY(`COLUMN_NAME`) REFERENCES `FOREIGN_TABLE`(`FOREIGN_COLUMN_NAME`)
(9)删除表:DROP TABLE `TABLE_NAME`
(10)添加索引:
a.添加主键索引(设置主键之后,主键自动添加索引): ALTER TABLE `TABLE_NAME` ADD PRIMARY KEY(`COLUMN_NAME`);
b.添加唯一索引:ALTER TABLE `TABLE_NAME` ADD UNIQUE(`COLUMN_NAME`);
c.添加普通索引: ALTER TABLE `TABLE_NAME` ADD INDEX(`COLUMN_NAME`) | `INDEX_NAME(`COLUMN_NAME`)`;
例子:alter table student add index(`class_id`);
d.添加全文索引:ALTER TABLE `TABLE_NAME` ADD FULLTEXT(`COLUMN_NAME`);
e.添加多列索引 ALTER TABLE `TABLE_NAME` ADD INDEX(`COLUMN1`,`COLUMN2`...) | `INDEX_NAME`(`COLUMN1`,`COLUMN2`...);
第一次写博客,有哪里不足请大家多多包涵。一枚渴望高新的程序员