MySQL:基础语法-1
MySQL:基础语法-1
记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了
关于数据库的安装操作,可见博文:安装多个版本的MySQL
这部分主要记录的是 DDL、DML、DCL 相关操作
概述
可有可无的概述,过个形式
DBMS
DBMS (DataBase Management System) / 数据库管理系统:指一种操作和管理数据库的大型软件,用于建立、 使用和维护数据库, 对数据库进行统一管理和控制, 以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。
SQL
Structured Query Language 结构化查询语言,有以下分类:
- DDL:Data Definition Language (数据定义语言) 如:建库,建表
- Data Manipulation Language (数据操纵语言), 如:对表中的记录操作增删改
- Data Query Language (数据查询语言),如:对表中的查询操作
- Data Control Language (数据控制语言),如:对用户权限的设置
数据定义语言:DDL
操作数据库
创建数据库
创建数据库:
create database 数据库名;
判断数据库是否已经存在,不存在则创建数据库:
create database if not exists 数据库名;
创建数据库并指定字符集
create database 数据库名 character set 字符集;
查看数据库
查看所有的数据库:
show databases;
查看某个数据库的定义信息:
show create database 数据库名;
修改数据库
修改数据库默认的字符集
alter database 数据库名 default character set 字符集名;
删除数据库
- 删除数据库:
drop database 数据库名;
使用数据库
查看正在使用的数据库:
select database();
使用的一个 MySQL 中的全局函数
使用/切换数据库:
use 数据库名;
操作表结构
创建表
正常创建:
create table 表名(
字段1 字段标识1,
字段2 字段标识2,
...
);
create table student (
id int,
name varchar(20),
birthday date
);
快速创建一个表结构相同的表
create table 新表名 like 旧表名;
MySQL 常用数据类型
类型 | 描述 |
---|---|
int | 整形 |
double | 浮点型 |
varchar | 字符串型 |
data | 日期型 |
不具体展开,后续会有补充
查找表
查看某个数据库中的所有表:
show tables;
查看表结构:
desc 表名;
查看创建表的 SQL 语句:
show create table 表名;
删除表
直接删除表:
drop table 表名;
判断表是否存在,如果存在则删除表:
drop table if exists 表名;
与直接删除的区别:如果表不存在,不删除,存在则删除
修改表结构
- 添加表列 add:
alter table 表名 add 列名 字段标识;
- 修改列类型 modify:
alter table 表名 modify 列名 新的字段标识;
- 修改列名 change :
alter table 表名 change 旧列名 新列名 字段标识;
- 删除列 drop :
alter table 表名 drop 列名;
- 修改表名:
rename table 旧表名 to 新表名;
alter table 表名 rename to 新表名 -- 在sqllite中支持,上面的语句却不支持
- 修改字符集:
alter table 表名 character set 字符集;
数据表的约束
约束种类
约束名 | 约束关键字 |
---|---|
主键 | primary key |
唯一 | unique |
非空 | not null |
外键 | foreign key |
检查约束 | check 注: mysql 不支持 |
主键约束
说明:用来唯一标识数据库中的每一条记录:通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键。 主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。
主键关键字: primary key
主键的特点:
- 非空 not null
- 唯一
创建主键
在创建表的时候给字段添加主键
字段名 字段类型 primary key
在已有表中添加主键
alter table 表名 add primary key(字段名);
删除主键
alter table 表名 drop primary key;
主键自增
默认:auto_increment 表示自动增长(字段类型必须是整数类型)
修改自增长的默认值起始值:
默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法
create table 表名(
列名 int primary key auto_increment
) auto_increment=起始值;
delete 和 truncate 对自增长的影响
- delete : 删除所有的记录之后,自增长没有影响
- truncate:删除以后,自增长又重新开始。
唯一约束
表中某一列不能出现重复的值
基本格式:字段名 字段类型 unique
null 没有数据,不存在重复的问题
非空约束
某一列不能为 null
基本语法格式:字段名 字段类型 not null
默认值:字段名 字段类型 default 默认值
如果一个字段设置了非空与唯一约束,该字段与主键的区别?
- 主键数在一个表中,只能有一个;不能出现多个主键;主键可以单列,也可以是多列
- 自增长只能用在主键上
外键约束
外键:在从表中与主表主键对应的那一列
- 主表: 一方,用来约束别人的表
- 从表: 多方,被别人约束的表
创建约束的语法
新建表时增加外键
[constraint] [外键约束名] foreign key(外键字段名) references 主表名(主键字段名) [on update/delete cascade];
已有表增加外键
alter table 从表 add [constraint][外键约束名] foreign key(外键字段名) references 主表名(主键字段名);
删除外键
alter table 从表 drop foreign key 外键名称;
外键的级联
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
级联操作语法 | 描述 |
---|---|
on update cascade | 级联更新, 只能是创建表的时候创建级联关系。 更新主表中的主键, 从表中的外键 列也自动同步更新 |
on delete cascade | 级联删除 |
数据操纵语言:DML
插入记录
插入全部字段
insert into 表名 (字段名1, 字段名2, 字段名3,...) values (值1, 值2, 值3, ...);
不写字段名
insert into 表名 values (值1, 值2, 值3, ...);
插入部分数据
insert into 表名 (字段名1, 字段名2, 字段名3,...) values (值1, 值2, 值3, ...);
有添加数据的字段会使用 NULL
蠕虫复制
将一张已经存在的表中的数据复制到另一张表中
语法格式:
将表名 2 中的所有的列复制到表名 1 中:
insert into 表名1 select * from 表名2;
只复制部分列
insert into 表名1(列1, 列2) select 列1, 列2 from 表名2;
更新表记录
- 不带条件修改数据:
update 表名 set 字段名=值; --修改所有行
- 带条件修改数据:
update 表名 set 字段名=值 where 字段名=值;
删除表记录
不带条件删除数据:
delete from 表名;
带条件删除数据:
delete from 表名 where 字段名=值;
truncate:truncate 相当于删除表的结构,再创建一张表。
数据控制语言:DCL
创建用户
create user '用户名'@'主机名' identified by '密码';
- 用户名:将创建的用户名
- 主机名:指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
- 密码:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
用户授权
grant 权限1, 权限2, ... on 数据库名.表名 to '用户名'@'主机名';
grant...on...to
: 授权关键字- 权限:授予用户的权限,如
CREATE
、ALTER
、SELECT
、INSERT
、UPDATE
等。如果要授予所有的权限则使用ALL
- 数据库名.表名:用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用
*
表示,如*.*
- '用户名'@'主机名':给哪个用户授权,注:有 2 对单引号
撤销授权
revoke 权限1, 权限2, ... on 数据库.表名 from '用户名'@'主机名';
revoke ... on ... from
:撤销授权的关键字
撤销 user1 用户对 test 数据库所有表的操作的权限:
revoke all on test.* from 'user1'@'localhost';
查看权限
show grants for '用户名'@'主机名';
删除用户
drop user '用户名'@'主机名';
修改密码
修改管理员密码:
mysqladmin -uroot -p password 新密码
需要在未登陆 MySQL 的情况下操作,新密码不需要加上引号
修改普通用户密码
set password for'用户名'@'主机名'=password('新密码');
需要在登陆 MySQL 的情况下操作,新密码要加单引号
MySQL:基础语法-1的更多相关文章
- MYSQL基础语法的使用
喜欢的朋友可以关注下,粉丝也缺. MYSQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之 ...
- MYSQL从入门到放弃系列:mysql基础语法
Mysql基本语法 启动MySQL net start mysql 连接与断开服务器 mysql -h 地址 -P 端口 -u 用户名 -p 密码 跳过权限验证登录MySQL mysqld --ski ...
- mysql基础语法之(全文索引)
1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()…AGAIN ...
- Mysql 基础语法1
MySQL的软件架构 1.开启MySQL服务器:以windows服务的形式开启,在cmd下net startmysql|net stop mysql,在cmd下使用mysqld –default-fi ...
- 一. MySQL基础语法
1. 案例库表 2. DQL语言(数据查询) 2.1 基础查询 -- 进入指定的库 USE myemployees; DESC employees; -- 使用SELECT查询字段 # 1.查询表中的 ...
- mysql基础语法及拓展到web中的sql注入
本来是想写下javaweb的mvc(tomcat, spring, mysql)的搭建, 昨天搭到凌晨3点, 谁知道jdbcTemplate的jar包不好使, 想死的心都有了, 想想还是休息一下, ...
- mysql 基础语法
以下为自己学习mysql 的一些笔记,以方便查询 目录 一. ALTER的 语法 二. 表的完整性约束 三. 索引的操作(mysql 数据库支持至少 16 个索引) 四. 视图的操作 五. 触发器的操 ...
- MySQL基础语法命令
1. 建表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 通用语法: CREATE TABLE table_name (column_name column_type); 实例: ...
- Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)
前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...
- Mysql基础语法
mysql SELECT VERSION(), CURRENT_DATE, now();select user(); create database pets;show databases; use ...
随机推荐
- ubuntu-常用设置备忘
环境 系统平台:Ubuntu 16.04.6 其他版本设置也差不多 vim喜好设置 系统安装vim sudo apt-get install vim 通过修改 /etc/vim/vimrc 文件设置 ...
- GoLang设计模式05 - 原型模式
原型模式也是一种创建型模式,它可以帮助我们优雅地创建对象的拷贝.在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象.被克隆的对象需要提供一个clone()方法.通过这个方法可以返回该对象 ...
- ldconfig与 /etc/ld.so.conf
现在我们知道了动态与静态函数库,也知道了当前的Linux大多是将函数库做成动态函数库,下面来讨论增加函数库读取性能的方法.我们知道,内存的访问速度是硬盘的好几倍,所以,如果将常用的动态函数库加载到内存 ...
- symfony2中mysql和mongodb的增删改查总结
https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manip ...
- Dapr实战(三)状态管理
状态管理解决了什么 分布式应用程序中的状态可能很有挑战性. 例如: 应用程序可能需要不同类型的数据存储. 访问和更新数据可能需要不同的一致性级别. 多个用户可以同时更新数据,这需要解决冲突. 服务必须 ...
- Java基础系列(35)- 数组声明创建
数组声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar; //首选的方法 或 dataType arrayRefVar[]; ...
- web 阶段的一些简答题
1.jsp 9个隐含对象 2. jsp 4大域对象 3.mybatis 中 #{} %{ } 的区别于联系 4. Servlet容器默认是采用单实例多线程的方式处理多个请求的: 5.Cookie 与S ...
- 为什么 Dapr 如此令人兴奋
如今你构建软件,您可以从数量众多的云服务中进行选择.仅 AWS 就每个月都在不断为其200多项服务添加新服务,而其他云提供商也都在跟上. 如果您的公司想与您的竞争对手竞争,您就需要充分利用这些服务,这 ...
- 利用caffe.proto生成caffe.pb.h
完全按照博文来就好了:http://blog.csdn.net/u012905422/article/details/52794693
- 迁移appseting.json创建自定义配置中心
创建一个自定义的配置中心,将框架中各类配置,迁移至数据库,支持切换数据库,热重载. 说在前面的话 自使用.net Core框架以来,配置大多存在json文件中: [框架默认加载配置]文件为appset ...