史上最简单的MySQL教程
来源:互联网 发布:母婴用品淘宝店 编辑:程序博客网 时间:2024/04/26 02:56
安装:http://blog.csdn.net/qq_35246620/article/details/71105110
参考:http://blog.csdn.net/qq_35246620/article/details/70823903
SQL语句 - - database
- 创建数据库:
create database walter charset utf8;
- 修改字符集:
alter database walter charset utf8;
- 删除数据库:
drop database walter;
SQL语句 - - table
- 新增表:
use walter;create table if not exists student(--隐式指定表所属的数据库id int,name varchar(10))charset utf8;
create table if not exists walter.student(--显式指定表所属的数据库id int,name varchar(10))charset utf8;
- 查看创建表语句
- show create table student;
+---------+------------------------------------------------------+| Table | Create Table | +---------+------------------------------------------------------+| student | CREATE TABLE `student` ( `id` int(11) NOT NULL COMMENT '学号', `name` varchar(20) DEFAULT NULL COMMENT '姓名') ENGINE=InnoDB DEFAULT CHARSET=utf8 |+---------+------------------------------------------------------+
- 描述表
desc student;
+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | int(11) | YES | | NULL | || name | varchar(20) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+
查询表
查看全部:show tables;
查看部分:show tables like 'student';
更新表
修改表本身- 修改表名:rename table student to stu;
- 修改表选项:alter table student 表选项[=] 值;
新增字段
- alter table + 表名 + add + [column] + 字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置)。
- 示例:
- alter table student add column id int first;
- alter table student add column course after id;
修改字段类型
- alter table + 表名 + modify + 字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).
- 示例:alter table student modify name char(10) after id;
重命名字段
- alter table + 表名 + change + 旧字段名 + 新字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).
- 示例:alter table student change grade class varchar(10);
删除字段
- alter table + 表名 + drop+ 字段名;
- 示例:alter table student drop age;
- 注意:如果表中已经存在数据,那么删除该字段会清空该字段的所有数据,而且不可逆,慎用。
删除表
drop table student1,student2...;
MySQL - - 数据操作
- 新增数据
- 给全表字段插入数据,不需要指定字段列表,但要求数据的值出现顺序必须与表中的字段出现的顺序一致,并且凡是非数值数据,都需要用引号(单)括起来。
- insert into student values(1,’walter’);
- 给部分字段插入数据,需要选定字段列表,字段列表中字段出现的顺序与表中字段的顺序无关,但值列表中字段值的顺序必须与字段列表中的顺序保持一致。
- insert into student(name,id)values(‘walter’,1);
- 查询数据
- select * from student;
- select id from student where name = ‘walter’;
- 更新数据
- update student set id = 2 where name = ‘walter’;
- 删除数据
- delete from student where name = ‘walter’;
MySQL - - 列属性
- 空属性null
create table student(id int not null,name varchar(20) null --显式声明为空,实际上默认就为空)charset utf8;
- 列描述comment
- 没有实际含义,是专门用来描述字段的,其会随着表创建语句自动保存,用来给程序员(数据库管理员)了解数据库使用。
create table student(id name not null comment '学号',name varchar(20) null comment '年龄')charset utf8;
- 默认值default
- 某一数据会经常性出现某个具体的值,因此可以在开始的时候就指定好,而在需要真实数据的时候,用户可以选择性的使用默认值。
create table student(id int not null,name varchar(20),sex enum('男','女')default'男')charset utf8;
desc student;
+-------+-----------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-----------------+------+-----+---------+-------+| id | int(11) | YES | | NULL | || name | varchar(20) | YES | | NULL | || sex | enum('男','女') | YES | | 男 | |+-------+-----------------+------+-----+---------+-------+
insert into student (id,name)values(1,'walter');insert into student(id,name,sex)values(2,'graham','女');insert into student(id,name,sex)values(3,'Jack',default);
select * from stu;
+------+--------+------+| id | name | sex |+------+--------+------+| 1 | walter | 男 || 2 | graham | 女 || 3 | Jack | 男 |+------+--------+------+
MySQL - - 主键
- 增加主键
- 主键的最大特点:
- not null,插入数据时一定要给值,在没有声明自增长前,就要手动赋值
- 不重复,插入数据时不能重复,唯一性unique
- 主键的最大特点:
create table student(id int primary key,--在创建表的时候,直接声明主键,默认not nullname varchar(20)--默认null)charset utf8;
create table student(id int,--此时默认nullcourse int,--此时默认nullname varchar(20),primary key(id,course)-- 增加主键限制,学号和课程编号应该是对应的,具有唯一性,之后id,course为not null)charset utf8;
create table student(id int,--此时默认nullcourse int,--此时默认nullname varchar(20))charset utf8;--追加主键,之后主键为not nullalter table student modify id int primary key;--不推荐,只能声明一个字段,而且再声明报错:ERROR 1068 (42000): Multiple primary key definedalter table student add primary key(id,course);--推荐,一次可以声明多个字段为主键,之后也无法再声明,除非删除主键(所有),再重新声明。
- 删除主键&更新主键
- 对于主键,没有办法直接更新,主键必须先删除然后才能更新。
- alter table stu drop primary key;
- 主键约束
- 主键对应的字符中的数据不允许重复,如果重复,则数据操作(增改)失败。
MySQL - - 自动增长auto_increment
- 自动增长
- 搭配主键使用。
- 自动增长,当插入数据时对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取出已有的最大值再进行+1操作,得到新的字段值。
- 任何字段要做自增长,前提其本身必须是一个索引,即key栏有值。
- 自增长字段必须是数字(整形),
- 每张表最多有一个自增长字段。
create table student(id int primary key auto_increment,--not null、primary key、auto_incrementname varchar(20) )charset utf8;
+-------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || name | varchar(20) | YES | | NULL | |+-------+-------------+------+-----+---------+----------------+
- 使用自增长
- 当自增长不给值、给定的值为null、或者default的时候,就会触发自动增长。
insert into student(name)values('walter');--不给值,自动给id赋值1insert into student values(null,'walter');--null,自动给id赋值2insert into student values(default,'walter');--default,自动给id赋值3
+----+--------+| id | name |+----+--------+| 1 | walter || 3 | walter || 4 | walter || 5 | walter |+----+--------+
- 修改自增长当前值
- 自增长如果是涉及到字段改变,就必须先删除自增长,然后再增加自增长,因为每张表只能有一个自增长字段。
- 如果修改当前自增长字段已经存在的值,则只能修改比当前已有自增长字段中的最大值更大,不能更小,因为更小不生效。
- alter table student auto_increment = 值
- 注意:当修改自增长小于当前自增长字段中的最大值时,虽然显示SQL语句执行成功,但是实际上并没有修改成功。
- 查看自增长
- show variables like ‘auto_increment%’
+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 1 || auto_increment_offset | 1 |+--------------------------+-------+
- 修改自增长初始值
- 会话级别,影响到整个数据库,不止单张表。
- set auto_increment_increment = 每次初始值
- 删除自增长
- alter table student modify id int;
MySQL - - 唯一键unique
- 特点:
- 检测插入的数据是否和表里的重复
- 如果字段没有声明not null,那么default null,而且不算重复。
- 唯一键与主键本质相同,区别在于,唯一键允许字段值为空,并且允许多个空置同时存在。
- 如果字段声明not null,再声明为unique,那么这个字段等效primary key.
- 作用:每张表只能有一个主键,唯一键就是用来解决表中多个字段需要具有唯一性的问题。
- 增加唯一键
create table student(id int unique[key],--default nullname varchar(20))charset utf8;
create table student(id int,name varchar(20),unique key(id) --default null)charset utf8;
create table student(id int,name varchar(20))charset utf8;alter table student add unique key(id); --default null
+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | int(11) | YES | UNI | NULL | || name | varchar(20) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+
create table student(id int not null,name varchar(20))charset utf8;alter table student add unique key(id); --not null
+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | int(11) | NO | PRI | NULL | || name | varchar(20) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+
- 删除唯一键&更新唯一键
- 在更新唯一键的时候,可以不用先删除唯一键,因为表的唯一键允许有多个。
- 删除:alter table student drop index id;
MySQL - - 索引 index
- 主键索引:primary key
- 唯一键索引:unique key
- 全文索引:fulltext index
- 普通索引:index
MySQL - - 关系
- 一对一
- 一张表的一条记录只能与另外一张表的一条记录相对应,反之亦然。
- 一对多/多对一
- 国家 - - 城市
- 城市 - - 国家
- 多对多
-
- *
阅读全文
0 0
- 史上最简单的 MySQL 教程
- 史上最简单的 MySQL 教程
- 史上最简单的MySQL教程
- 史上最简单的 MySQL 教程(三十七)
- 史上最简单的 MySQL 教程(一)「数据库」
- 史上最简单的 MySQL 教程(十七)「索引」
- 史上最简单的 MySQL 教程(十八)「关系」
- 史上最简单的 MySQL 教程(十九)「范式」
- 史上最简单的 MySQL 教程(十八)「关系」
- 史上最简单的 MySQL 教程(十九)「范式」
- qt访问 mysql 数据库的简单教程[
- django+mysql的简单开发教程
- MySQL 使用方法简单教程
- MySQL 使用方法简单教程
- MySQL 使用方法简单教程
- MySQL 使用方法简单教程
- mysql简单教程
- MySQL 使用方法简单教程
- Bagging和Boosting 概念及区别
- 决策树
- 为什么我们需要域?Active Directory系列之一
- 05 用MPI实现计时功能
- linux操作错误集
- 史上最简单的MySQL教程
- 引用传递与指针传递区别
- 使用聊天机器人做客服工作是一种什么体验?
- 函数编程
- ubuntu14.04的error while loading shared libraries: libz.so.1问题
- POJ3123-Ticket to Ride
- 51nod 1358 浮波那契 (类斐波那契数列+矩阵快速幂+构造矩阵)
- star-rating评分插件的使用
- JSP内置对象:request和response