mysql数据库实用语句

99 阅读6分钟

本文正在参加「技术专题19期 漫谈数据库技术」活动

数据库的基本概念

1. 数据库的英文单词: DataBase 简称 : DB
2. 什么数据库?
	* 用于存储和管理数据的仓库。

3. 数据库的特点:
	1. 持久化存储数据的。其实数据库就是一个文件系统
	2. 方便存储和管理数据
	3. 使用了统一的方式操作数据库 -- SQL

MySQL数据库软件

	* 参见《MySQL基础.pdf》
2. 卸载
	1. 去mysql的安装目录找到my.ini文件
		* 复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
	2. 卸载MySQL
	3. 删除C:/ProgramData目录下的MySQL文件夹。
	
3. 配置
	* MySQL服务启动
		1. 手动。
		2. cmd--> services.msc 打开服务的窗口
		3. 使用管理员打开cmd
			* net start mysql : 启动mysql的服务
			* net stop mysql:关闭mysql服务

MySQL登录


		1. mysql -uroot -p密码
		2. mysql -hip -uroot -p连接目标的密码
		3. mysql --host=ip --user=root --password=连接目标的密码
	* MySQL退出
		1. exit
		2. quit

	* MySQL目录结构
		1. MySQL安装目录:basedir="D:/develop/MySQL/"
			* 配置文件 my.ini
		2. MySQL数据目录:datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
			* 几个概念
				* 数据库:文件夹
				* 表:文件
				* 数据:数据

数据库相关命令

查看当前所有数据库  
show databases;

使用指定数据库  
use 数据库名;

查看当前数据库中所有数据表  
show tables;

显示当前操作数据库  
select database();

显示当前登陆用户  
select user();

导入数据库脚本文件

source D:\init.sql;

SQL

1.什么是SQL?
	Structured Query Language:结构化查询语言
	其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
	
2.SQL通用语法
	1. SQL 语句可以单行或多行书写,以分号结尾。
	2. 可使用空格和缩进来增强语句的可读性。
	3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
	4. 3 种注释
		* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
		* 多行注释: /* 注释 */
	
3. SQL分类
	1) DDL(Data Definition Language)数据定义语言
		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter2) DML(Data Manipulation Language)数据操作语言
		用来对数据库中表的数据进行增删改。关键字:insert, delete, update3) DQL(Data Query Language)数据查询语言
		用来查询数据库中表的记录(数据)。关键字:select, where4) DCL(Data Control Language)数据控制语言(了解)
		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANTREVOKE

DDL:操作数据库、表

1. 操作数据库:CRUD
	1. C(Create):创建
		* 创建数据库:
			* create database 数据库名称;
		* 创建数据库,判断不存在,再创建:
			* create database if not exists 数据库名称;
		* 创建数据库,并指定字符集
			* create database 数据库名称 character set 字符集名;

		* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
			* create database if not exists db4 character set gbk;
	2. R(Retrieve):查询
		* 查询所有数据库的名称:
			* show databases;
		* 查询某个数据库的字符集:查询某个数据库的创建语句
			* show create database 数据库名称;
	3. U(Update):修改
		* 修改数据库的字符集
			* alter database 数据库名称 character set 字符集名称;
	4. D(Delete):删除
		* 删除数据库
			* drop database 数据库名称;
		* 判断数据库存在,存在再删除
			* drop database if exists 数据库名称;
	5. 使用数据库
		* 查询当前正在使用的数据库名称
			* select database();
		* 使用数据库
			* use 数据库名称;


2. 操作表
	1. C(Create):创建
		1. 语法:
			create table 表名(
				列名1 数据类型1,
				列名2 数据类型2,
				....
				列名n 数据类型n
			);
			* 注意:最后一列,不需要加逗号(,)
			* 数据库类型:
				1. int:整数类型
					* age int,
				2. double:小数类型
					* score double(5,2)
				3. date:日期,只包含年月日,yyyy-MM-dd
				4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
				5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
					* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

				6. varchar:字符串
					* name varchar(20):姓名最大20个字符
					* zhangsan 8个字符  张三 2个字符


		* 创建表
			create table student(
				id int,
				name varchar(32),
				age int ,
				score double(4,1),
				birthday date,
				insert_time timestamp
			);
		* 复制表:
			* create table 表名 like 被复制的表名;	  	

	查看表所有信息包括约束
	show create table t_student;

在创建表后再添加约束
create table student
(
id int,
name varchar() not null,
age int,
sex varchar(8),
IDCard varchar(18),
class_id int
);

alter table student add constraint pk_id primary key (id);
alter table student add constraint ck_age check(age between 1 and 120);
alter table student add constraint ck_sex check(sex in (‘male’,‘female’));
alter table student add constraint uq_IDCard unique(IDCard);
alter table student add constraint fk_class_id foreign key (class_id)
references class (c_id);

删除主键约束
alter table 表名 drop primary key
删除外键约束
alter table 表名 drop foreign key 约束名称
删除唯一约束
alter table 表名 drop index 约束名称
删除非空约束
alter table 表名 modify 列名 数据类型 null
常见五种约束:主键,非空,检查,唯一,外键
create table student
(
id int primary key,
name varchar(10) not null,
age int check(age between 1 and 120),
sex varchar(8) not null check(sex in (‘male’,‘female’)),
IDCard varchar(18) unique,
class_id int,
foreign key (class_id) references class (c_id) on delete cascade
)charset=utf8;
:创建用户并授予权限
grant select,update
on test.emp
to tom@localhost identified
by123’;
查看自己的权限
show grants;
查看其他人的权限
show grants for 用户名@来源地址;
撤销权限
revoke delete
on shop.user
from mike@‘%’;

删除用户

use mysql;
delete from user where user=‘用户名’;
flush privileges;

.查看autocommit模式:
show variables like ‘autocommit’

.关闭自动提交:
set autocommit=off 或 set autocommit=0

手动提交事务:
commit

手动回滚事务:
rollback

DML:增删改表中数据

1. 添加数据:
	* 语法:
		* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
	* 注意:
		1. 列名和值要一一对应。
		2. 如果表名后,不定义列名,则默认给所有列添加值
			insert into 表名 values(值1,值2,...值n);
		3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
2. 删除数据:
	* 语法:
		* delete from 表名 [where 条件]
	* 注意:
		1. 如果不加条件,则删除表中所有记录。
		2. 如果要删除所有记录
			1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
			2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
3. 修改数据:
	* 语法:
		* update 表名 set 列名1 =1, 列名2 =2,... [where 条件];

	* 注意:
		1. 如果不加任何条件,则会将表中所有记录全部修改。

DQL:查询表中的记录

* select * from 表名;

1. 语法:
	select
		字段列表
	from
		表名列表
	where
		条件列表
	group by
		分组字段
	having
		分组之后的条件
	order by
		排序
	limit
		分页限定


2. 基础查询
	1. 多个字段的查询
		select 字段名1,字段名2... from 表名;
		* 注意:
			* 如果查询所有字段,则可以使用*来替代字段列表。

本文正在参加「技术专题19期 漫谈数据库技术」活动