1、索引分类
1、普通索引
2、唯一索引
3、主键索引
4、外键索引
2、普通索引(index)
1、使用规则
1、一个表中可以有多个index字段
2、字段的值可以有重复,也可以为NULL值
3、经常把做查询条件的字段设置为index字段
4、index字段的key标志为: MUL
2、创建
1、创建表时创建index
create table t1(
... ...,
... ...,
index(id),
index(name));
2、在已有表中添加索引字段
1、语法格式
create index 索引名 on 表名(字段名);
# 索引名一般和字段名一样
3、查看
1、desc 表名; ->查看KEY标志为 MUL
2、show index from 表名\G;
4、删除
drop index 索引名 on 表名;
注意:
删除普通索引只能一个一个删除
3、唯一索引(unique)
1、使用规则
1、一个表中可以有多个 unique 字段
2、unique字段的值不允许重复,可以为空值NULL
3、unique的KEY标志是 UNI
2、创建(基本等同index创建)
1、创建表时创建
unique(字段名),
unique(字段名)
2、已有表中创建
create unique index 索引名 on 表名(字段名);
3、查看、删除唯一索引
desc 表名;
show index from 表名;
drop index 索引名 on 表名;
4、主键索引(primary key) && 自增长属性(auto_increment)
1、使用规则
1、一个表中只能有一个主键字段
2、对应字段的值不允许重复 且 不能为空值NULL
3、主键字段的KEY标志为 PRI
4、把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
2、创建主键(PRI)
1、创建表时创建
1、字段名 数据类型 primary key auto_increment,
2、
id int auto_increment,
... ..., # 设置自增长起始值
primary key(id))auto_increment=10000;
2、删除主键
1、先删除自增长属性(modify)
alter table 表名 modify id int;
2、删除主键
alter table 表名 drop primary key;
3、在已有表中添加主键
alter table 表名 add primary key(字段名);
5、外键
1、定义
让当前表字段的值在另一个表的范围内选择
2、语法格式
foreign key(参考字段名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作
3、案例
表1、缴费信息表(财务)
学号 姓名 班级 缴费金额
1 唐伯虎 AID01 28000
2 点秋香 AID01 20000 表2、学生信息表(班主任)
学号 姓名 缴费金额
1 唐伯虎 28000
2 点秋香 20000 1、创建缴费信息表
create table jftab(
id int primary key,
name char(15),
class char(5),
money int
)default charset=utf8; insert into jftab values
(1,"唐伯虎","AID01",28000),
(2,"点秋香","AID01",20000),
(3,"祝枝山","AID01",22000);
2、创建学生信息表(从表)
create table bjtab(
stu_id int,
name char(15),
money int,
foreign key(stu_id) references jftab(id)
on delete cascade
on update cascade
);
4、级联动作
1、cascade :数据级联更新
当主表删除记录 或者 更新被参考字段的值时,从表会级联更新
2、restrict 默认
1、当删除主表记录时,如果从表中有相关联记录则不允许主表删除
2、更新同理
3、set null
1、当主表删除记录时,从表中相关联记录的参考字段值自动设置为NULL
2、更新同理
4、no action
on delete no action on update no action
同 restrict,都是立即检查外键限制
5、删除外键
alter table 表名 drop foreign key 外键名;
1、外键名的查看方式
show create table 表名;
6、已有表中添加外键
## 会受到表中原有数据的限制
alter table 表名 add foreign key(参考字段名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作;
7、外键使用规则
1、两张表被参考字段和参考字段数据类型要一致
2、被参考字段必须是 key 的一种,通常是 primary key
6、数据导入
1、作用:把文件系统的内容导入到数据库中
2、语法
load data infile "文件名"
into table 表名
fields terminated by "分隔符"
lines terminated by "\n"
3、示例
把 /etc/passwd 文件中的内容导入到db2库下的userinfo表
tarena : x : 1000 : 1000 :
用户名 密码 UID号 GID号
tarena,,, : /home/tarena : /bin/bash
用户描述 用户主目录 登录权限
/bin/false
/usr/sbin/nologin
4、操作步骤
1、在数据库中创建对应的表
create table userinfo(
username char(20),
password char(1),
uid int,
gid int,
comment varchar(50),
homedir varchar(50),
shell varchar(50)
);
2、将要导入的文件拷贝到数据库的默认搜索路径中
1、查看数据库的默认搜索路径
show variables like "secure_file_priv";
/var/lib/mysql-files
2、Linux命令行输入:
sudo cp /etc/passwd /var/lib/mysql-files/
3、执行数据导入语句
load data infile "/var/lib/mysql-files/passwd"
into table userinfo
fields terminated by ":"
lines terminated by "\n";
5、练习:将AID1709.csv文件导入到数据库中
# csv文件单元格之间以 , 分隔 /var/lib/mysql-files/AID1709.csv
ls -l AID1709.csv
rw-------
chmod 666 AID1709.csv 1、在数据库中创建对应的表
id 姓名 成绩 手机号 班级
create table scoretab(
id int,
name varchar(20),
score float(5,2),
phone char(11),
class char(7)
)default charset=utf8;
2、把导入的文件复制到数据库的默认搜索路径中
cp 源文件 目标路径
cp /home/tarena/AID1709.csv /var/lib/mysql-flies/
######## 用 TAB 键 补齐路径 #######
3、执行数据导入语句
load data infile "/var/lib/mysql-files/AID1709.csv"
into table scoretab
fields terminated by ","
lines terminated by "\n"; # 修改文件权限 chmod 666 AID1709.csv
7、数据导出
1、作用
将数据库表中的记录保存到系统文件里
2、语法格式
select ... from 表名
into outfile "文件名"
fields terminated by "分隔符"
lines terminated by "\n";
3、把userinfo表中的username、password和uid导出到文件user.txt
select username,password,uid from userinfo
into outfile "/var/lib/mysql-files/user.txt"
fields terminated by ","
lines terminated by "\n"; 1、sudo -i
2、cd /var/lib/mysql-files/
3、cat user.txt
4、注意
1、导出的内容由SQL查询语句决定
2、执行导出命令时路径必须指定对应的数据库搜索路径
8、表的复制
1、语法格式
create table 表名 select 查询命令;
2、示例
1、复制userinfo表中的全部记录,userinfo2
create table userinfo2 select * from userinfo;
2、复制userinfo表中username,password,uid三个字段的第2-10条记录,userinfo3
create table userinfo3 select username,password,uid from userinfo limit 1,9;
3、复制表结构
create table 表名 select 查询命令 where false;
4、注意
复制表的时候不会把原有表的 key 属性复制过来
9、嵌套查询(子查询)
1、定义
把内层的查询结果作为外层的查询条件
2、示例
1、把uid的值小于 uid 平均值的用户名和uid号显示出来
select username,uid from userinfo
where uid < (select avg(uid) from userinfo);
10、连接查询
1、内连接
1、定义
从表中删除与其他被连接的表中没有匹配到的行
2、语法格式
select 字段名列表 from 表1
inner join 表2 on 条件 inner join 表3 on 条件;
3、示例
1、显示省市的详细信息
select sheng.s_name,city.c_name from sheng
inner join city on sheng.s_id=city.cfather_id;
2、显示省市县详细信息
select sheng.s_name,city.c_name,xian.x_name from sheng
inner join city on sheng.s_id=city.cfather_id
inner join xian on city.c_id=xian.xfather_id;
2、外连接
1、左连接
1、定义
以左表为主显示查询结果
2、语法格式
select 字段名列表 from 表1
left join 表2 on 条件;
3、示例
1、以省表为主显示省市详细信息
select sheng.s_name,city.c_name from sheng
left join city on sheng.s_id=city.cfather_id;
2、显示省市区详细信息,要求县全部显示
select sheng.s_name,city.c_name,xian.x_name from sheng left join city
on sheng.s_id=city.cfather_id
right join xian on city.c_id=xian.xfather_id;
3、显示省市区详细信息,要求 市 全部显示
select sheng.s_name,city.c_name,xian.x_name from sheng
right join city on sheng.s_id=city.cfather_id
left join xian on city.c_id=xian.xfather_id;
#### 结果集 ####
2、右连接
用法同左连接,以右表为主显示查询结果
11、多表查询
1、select 字段名列表 from 表名列表; # 笛卡尔积
2、select 字段名列表 from 表名列表 where 条件;
等同于 内连接 inner join

MySQL常用命令(二)的更多相关文章

  1. mysql 常用命令(二)

    1.创建数据库,并制定默认的字符集是utf8. CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_g ...

  2. MYSQL常用命令集合(转载)

    文章出处:http://www.cnblogs.com/q1ng/p/4474501.html 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set ...

  3. MYSQL常用命令集合

    1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqld ...

  4. MySQL 常用命令大全

    Mysql常用命令行大全 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键 ...

  5. Mysql常用命令 详细整理版

    Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database na ...

  6. MySql常用命令集Mysql常用命令2

    MYSQL 常用命令 1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的 文件名(数据库默认编码是la ...

  7. MySql常用命令集Mysql常用命令3

    MYSQL常用命令 有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接 MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 有很多朋友虽然安装好了mysql ...

  8. MySql常用命令集Mysql常用命令5

    九. 交叉查询 交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过 两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部. Microsoft Jet SQL 用TRAN ...

  9. MySql常用命令集

    MySql 常用命令集 Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  10. (转)Mysql常用命令行

    原文:http://www.cnblogs.com/TsengYuen/archive/2012/01/11/2319034.html Mysql常用命令行 Mysql经常使用号令行大全 熬头招.my ...

随机推荐

  1. python 加密算法及其相关模块的学习(hashlib,random,string,math)

    加密算法介绍 一,HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种 ...

  2. python 闯关之路二(模块的应用)

    1.有如下字符串:n = "路飞学城"(编程题) - 将字符串转换成utf-8的字符编码的字节,再将转换的字节重新转换为utf-8的字符编码的字符串 - 将字符串转换成gbk的字符 ...

  3. zabbix分布式监控部署--技术流ken

    前言 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  4. 南大算法设计与分析课程OJ答案代码(1)中位数附近2k+1个数、任意两数之和是否等于给定数

    问题1 用来测试的,就不说了 问题2:中位数附近2k+1个数 给出一串整型数 a1,a2,...,an 以及一个较小的常数 k,找出这串数的中位数 m 和最接近 m 的小于等于 m 的 k 个数,以及 ...

  5. 《Office 365开发入门指南》上市说明和读者服务

    写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...

  6. SpringBoot 配置 Servlet、Filter、Listener

    SpringBoot 配置 Servlet.Filter.Listener 在SpringBoot应用中,嵌入式的 Servlet 3.0+ 容器不会直接使用 ServletContainerInit ...

  7. Hibernate(十三)迫切内连接fetch

    迫切内连接fetch 内连接和迫切内连接的区别: 其主要区别就在于封装数据,因为他们查询的结果集都是一样的,生成底层的SQL语句也是一样的. 1.内连接:发送就是内连接的语句,封装的时候将属于各自对象 ...

  8. php环境安装

    Windows安装 下载php压缩包, http://php.net/downloads.php, 一定要下载Windows版本的呦 将压缩包解压到指定目录下: 创建配置文件, 其中有两个配置文件在根 ...

  9. JVM相关知识

    Java虚拟机学习分享最近主要在学习JVM相关知识,-知识主要来源<深入理解JAVA虚拟机>,深有感触,结合自己的理解,整理出一些经验,由于篇幅较长,就把链接帖出来,希望对大家有所帮助: ...

  10. CSS3效果:波浪效果

    实现效果 如图所示: 首先得准备三张图,一张是浅黄色的背景图loading_bg.png,一张是深红色的图loading.png,最后一张为bolang.png. css代码 body{backgro ...