Mysql--基础(一)
MySQL基础
一、数据库的操作
1.SQL分类:
DDL(数据定义语言) :数据定义语言 - Data Definition Language,用来定义数据库的对象,如数据表、视图、索引等。常用指令:create drop alter truncate
DML(数据操作语言):数据处理语言 - Data Manipulation Language,在数据库表中更新,增加和删除记录。常用指令:update, insert, delete 不包含查询
DCL(数据控制语言) :数据控制语言 – Data Control Language,指用于设置用户权限和控制事务语句。常用指令:grant,revoke,if…else,while,begin transaction
DQL(数据查询语言) :数据查询语言 – Data Query Language,数据表记录的查询。常用指令:select
2.数据库操作语言:
2.1 查询当前所有的数据库: show databases;
2.2 查看数据库的编码: show create database 库名;
2.3 创建数据库
(1) create database 库名;:由于创建数据库的是后没有指定编码表,使用安装时默认的编码表
(2) create database 库名 character set 编码表名 ; 创建数据库,使用指定的编码表
(3) drop database 库名 ; 删除数据库
(4) alter database 库名 character set 编码集; 修改数据库编码集
(5) use 库名 ; 切换数据库
(6) select database() ; 查询当前正在使用的数据
2.4 数据表结构语句
- create table 表名(
列名 数据类型,- 列名 数据类型,
- ……
- 列名 数据类型 (最后一个列不需要逗号)
- );
注解:char 与vachar的区别?- char 的性能好。 varchar可以节省空间 ,通常时候,如果长度不固定,我们使用varchar
(1) show tables :查看该数据库的说有表
(2) show create table 表名 ; 查看建表语句
(3) desc 表名;查看表结构(表列)
(4) 主键约束: primary key auto_increment (主键自增)
注解:作用:设置某一个字段为主键,主键的特性是唯一(不能重复),并且不能为空。
一般使用一个没有任何意义的字段,比如id作为一个主键(没有意义就不需要修改)。
如果主键是一个int类型,还可以设置主键自增长。(即在插入记录的时候可以不用设置主键,让其自动以递增的形式添加)
一张表中只能有一个主键。
- create table 表名 (
- id int primary key auto_increment,
- name varchar(20),
- ………….
- );
(5) 唯一约束:
- 唯一约束:unique 内容不允许重复,可以为null(null不算重复)。
- 一个表里可以添加多个唯一约束。
- 写法: 列名 类型(长度) unique
- 【示例】
- create table 表名 (
- id int primary key auto_increment,
- name varchar(20) unique,
- ………….
- );
- 唯一约束和主键约束的区别
- 1、唯一约束可以是空(null)。 但是主键约束不能为空
- 2、一张表中只能有一个主键,但是唯一约束可以有多个
(6)非空约束
- 非空约束:not null 。不允许为空。 表示该列的内容不允许为空。
- 写法: 列名 类型(长度) not null,
- 【示例】
- create table emp(
- id int primary key auto_increment,
- name varchar(20) unique,
- age int not null,
- ………….
- );
2.5 数据表结构的修改
(1) 增加一列 :alter table 表名 add 列名 类型(长度) 约束;
(2) 修改现有列: alter table 表名 modify 列名 类型 约束;
(3) 修改现有列名称: alter table 表名 change 旧列名 新列名 类型 约束;
(4) 删除现有列: alter table 表名 drop 列名
(5) 修改表名: rename table 旧表名 to 新表明
(6) 修改表的字符集: alter table 表名 character set 编码集
(7) 删除表 :drop table 表名
(8) 查看mysql服务的所有客户端和服务端使用的字符集:show variables like 'character%';
(9) 先删除表,在创建表: truncate table 表名;
(10) 事物:
start transaction;
commit (成功)
rollback (回滚)
2.6、一些常用:
select distinct 列名 from 表名 [ where 条件] 去重
ifnull(列名,默认值) 判断该列是否为null,如果为null,返回默认值,否则返回实际值。
round(数值,小数的位数) 实现四舍五入的结果
- 执行顺序:select …要显示的内容.. from …表名.. where 条件…. group by …分组的列 …having …分组后的条件… order by …排序
- select …… from ….. where ….. group by ..…having ..… order by ....
- from 表名
- where 条件:
- 逻辑运算符:and or not
- 比较运算符:< > <= >= <> =
- 在....之间:between...and...
- in(set):任意set集合中的一个条件成立即可
- is null/is not null
- 模糊匹配:like % _
- group by 列:对列进行分组。
- having 条件:
- 逻辑运算符:and or not
- 比较运算符:< > <= >= <> =
- 在....之间:between...and...
- int(set)
- is null/is not null
- 模糊匹配:like % _
- 聚合函数(sum,avg,max,min,count)
- 别名
- order by desc/asc
数据备份: mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
建表后添加外键约束: alter table 从表名称 add foreign key (外键列的名称) references 主表名称(主键)
- 建表时添加外键约束
- /*创建部门表*/
- create table dept(
- id int primary key auto_increment,
- name varchar(20)
- );
- /*创建员工表*/
- create table employee(
- id int primary key auto_increment,
- name varchar(20),
- age int ,
- salary double,
- dept_id int,
- foreign key (dept_id) references dept(id)
- );
Mysql--基础(一)的更多相关文章
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- MySQL基础学习总结
1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...
- MySQL基础(五)——视图
MySQL基础(五)--视图
- MySQL基础(四)——索引
MySQL基础(四)--索引
随机推荐
- vim学习纪要
普通模式 根据屏幕行上下移动. gj gk g0 g^ g$ 移动到行首第一个非空字符 ^ 反向移动到上一单词的词尾 ge 插入模式 粘贴寄存器中内容 <C-r> 可视模式 移动光标的起始 ...
- linux install ftp server
first yum install vsftpd 第二部:vi /etc/vsftpd/vsftpd.conf 添上下面一段话 anonymous_enable=YESlocal_enable=YE ...
- 马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结
一:理论知识部分 1.线程的概念: 程序是一段静态的代码,它是应用程序执行的蓝 本. ‐进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程是进程执行过程中产生的多条 ...
- centos下搭建openstack的环境
一.准备环境 linux (centos 7.2(C300的虚机) ) java1.8 官网下载tar包 安装前设置环境变量 JAVA_HOME=/usr/lib/jvm/java-1.8.0-ope ...
- Linux中访问Apache报403错误处理方法
1.先说本地环境,脱离基础环境的解决策略都是耍流氓 (1)Linux:CentOS7.5 (2)Apache: Apache/2.4.6 (CentOS) (3)Apache的安装路径在 /usr/l ...
- Visual C++ 6.0中互换两个数字
就好比如两杯水,需要三个杯子将这两杯水互换.互换数字就要用一个中间变量. # include <stdio.h> int main(void) { int i; int j; int k; ...
- 百度编辑器UEditor 点击上传图片选择框会延迟几秒才会显示 反应很慢(转)
转自:http://www.blogxuan.com/php/show/323.html UEditor 编辑器点击上传文件选择框会延迟几秒才会显示,反应很慢,上传图片选择框显示很慢. 1.uedit ...
- java学习之路重新出发
一.Java发展史: 1995年由詹姆斯高斯林带领团队开发 java问世 2004 jdk1.5版本更名jdk5.0 2010 sun公司被oracle公司收购 二.java三大体系: java ...
- Teaching yourself programming -一个编程爱好者的碎碎念
多数时候,个人活动的展开都源于某个具体的动机.或许你是为了可以写点小工具,解决日常生活中的一些重复劳动:或许,你心怀梦想,梦想着某一天完成一款你心目中完美的游戏:又或许是,你内心憧憬电影里的hack, ...
- SSH配置
什么是SSH: SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH ...