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

主键的特点

  1. 非空 not null
  2. 唯一

创建主键

  1. 在创建表的时候给字段添加主键

    字段名 字段类型 primary key

  2. 在已有表中添加主键

    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: 授权关键字
  • 权限:授予用户的权限,如 CREATEALTERSELECTINSERTUPDATE 等。如果要授予所有的权限则使用 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的更多相关文章

  1. MYSQL基础语法的使用

    喜欢的朋友可以关注下,粉丝也缺. MYSQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之 ...

  2. MYSQL从入门到放弃系列:mysql基础语法

    Mysql基本语法 启动MySQL net start mysql 连接与断开服务器 mysql -h 地址 -P 端口 -u 用户名 -p 密码 跳过权限验证登录MySQL mysqld --ski ...

  3. mysql基础语法之(全文索引)

    1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()…AGAIN ...

  4. Mysql 基础语法1

    MySQL的软件架构 1.开启MySQL服务器:以windows服务的形式开启,在cmd下net startmysql|net stop mysql,在cmd下使用mysqld –default-fi ...

  5. 一. MySQL基础语法

    1. 案例库表 2. DQL语言(数据查询) 2.1 基础查询 -- 进入指定的库 USE myemployees; DESC employees; -- 使用SELECT查询字段 # 1.查询表中的 ...

  6. mysql基础语法及拓展到web中的sql注入

    本来是想写下javaweb的mvc(tomcat, spring, mysql)的搭建,  昨天搭到凌晨3点, 谁知道jdbcTemplate的jar包不好使, 想死的心都有了, 想想还是休息一下, ...

  7. mysql 基础语法

    以下为自己学习mysql 的一些笔记,以方便查询 目录 一. ALTER的 语法 二. 表的完整性约束 三. 索引的操作(mysql 数据库支持至少 16 个索引) 四. 视图的操作 五. 触发器的操 ...

  8. MySQL基础语法命令

    1. 建表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 通用语法: CREATE TABLE table_name (column_name column_type); 实例: ...

  9. Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)

    前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...

  10. Mysql基础语法

    mysql SELECT VERSION(), CURRENT_DATE, now();select user(); create database pets;show databases; use ...

随机推荐

  1. ubuntu-常用设置备忘

    环境 系统平台:Ubuntu 16.04.6 其他版本设置也差不多 vim喜好设置 系统安装vim sudo apt-get install vim 通过修改 /etc/vim/vimrc 文件设置 ...

  2. GoLang设计模式05 - 原型模式

    原型模式也是一种创建型模式,它可以帮助我们优雅地创建对象的拷贝.在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象.被克隆的对象需要提供一个clone()方法.通过这个方法可以返回该对象 ...

  3. ldconfig与 /etc/ld.so.conf

    现在我们知道了动态与静态函数库,也知道了当前的Linux大多是将函数库做成动态函数库,下面来讨论增加函数库读取性能的方法.我们知道,内存的访问速度是硬盘的好几倍,所以,如果将常用的动态函数库加载到内存 ...

  4. symfony2中mysql和mongodb的增删改查总结

    https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manip ...

  5. Dapr实战(三)状态管理

    状态管理解决了什么 分布式应用程序中的状态可能很有挑战性. 例如: 应用程序可能需要不同类型的数据存储. 访问和更新数据可能需要不同的一致性级别. 多个用户可以同时更新数据,这需要解决冲突. 服务必须 ...

  6. Java基础系列(35)- 数组声明创建

    数组声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar; //首选的方法 或 dataType arrayRefVar[]; ...

  7. web 阶段的一些简答题

    1.jsp 9个隐含对象 2. jsp 4大域对象 3.mybatis 中 #{} %{ } 的区别于联系 4. Servlet容器默认是采用单实例多线程的方式处理多个请求的: 5.Cookie 与S ...

  8. 为什么 Dapr 如此令人兴奋

    如今你构建软件,您可以从数量众多的云服务中进行选择.仅 AWS 就每个月都在不断为其200多项服务添加新服务,而其他云提供商也都在跟上. 如果您的公司想与您的竞争对手竞争,您就需要充分利用这些服务,这 ...

  9. 利用caffe.proto生成caffe.pb.h

    完全按照博文来就好了:http://blog.csdn.net/u012905422/article/details/52794693

  10. 迁移appseting.json创建自定义配置中心

    创建一个自定义的配置中心,将框架中各类配置,迁移至数据库,支持切换数据库,热重载. 说在前面的话 自使用.net Core框架以来,配置大多存在json文件中: [框架默认加载配置]文件为appset ...