mysql语法建库建表综合整理事例

首先介绍一个数据库常用编码格式区别:

mysql数据库编码格式utf8_general_ci、utf8_bin、utf8_general_cs区别:

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。(bin -> binary二进制的意思)

utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

简介cmd中使用数据库常用语法

mysql -u 用户名 -p 密码; /*进入数据库*/

show datbases; /*展示所有数据库*/

use 库名; /*选择数据库*/

show tables;/*显示表结构*/

进去正题:

创建一个名为stu数据库(注释使用编码格式utf8_bin):

CREATE DATABASE `stu`; /*!40100 COLLATE 'utf8_bin' */

进去数据库:

USE `stu`;

创建一个t_user表 主键id学号, name姓名,phone手机号,sex性别,brithday生日,create_date插入时间(字段名注明):

CREATE TABLE `t_user` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '学号' /*后加PRIMARY KEY 列级约束*/,
    `name` CHAR(5) NOT NULL COMMENT '姓名' /*后加UNIQUE,唯一约束可以为空*/ ,
    `phone` VARCHAR(11) NULL COMMENT '手机号',
    `sex` CHAR(2) NOT NULL check(`sex`='男' or `sex`='女') COMMENT '性别' ,
    `brithday` DATE null COMMENT '生日' ,
    `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP() COMMENT '插入时间',
    PRIMARY KEY (`id`)/*表级约束,PRIMARY KEY (`*`,`*`)复合主键*/
)
COLLATE='utf8_bin';
  1. 主键不可为空,AUTO_INCREMENT一般和主键一起使用

    SET @@auto_increment_offset=2; /*自增初始值设置 */
    SET @@auto_increment_increment=2;  /*步长设置*/
  2. 改变已有自增主键(包括删除已有数据)
    • 第一步

      ALTER TABLE `t_use` DROP COLUMN id; /*删除自增列*/
    • 第二步
      1.--新增一个字段
      ALTER TABLE `t_use` ADD id BIGINT;
      2.--修改一个字段
      ALTER TABLE `t_use` CHANGE COLUMN id id BIGINT not null auto_increment primary key;
    • ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN 语句修改列:
      • ALTER COLUMN:改变、删除列的默认值(备注:列的默认值存储在 .frm 文件中)。这个语句会直接修改 .frm 文件而不涉及表数据,所以操作很快。
      1.--改变默认值
      ALTER TABLE `t_use` ALTER COLUMN id DEFAULT 1;
      2.--删除默认值
      ALTER TABLE `t_use` ALTER COLUMN id DEFAULT;
      • MODIFY COLUMN:修改列数据类型;改变列的默认值、删除列的默认值(备注:这个操作会做读、插入操作,即:拷贝了整张表到一张新表)。
      ALTER TABLE `t_use` MODIFY COLUMN id BIGINT not null keyDEFAULT 1;
      • CHANGE COLUMN:重命名列;重命名列和修改列的数据类型(备注:单独修改列的数据类型报错)。
      ALTER TABLE `t_use` CHANGE COLUMN id new_id BIGINT not null auto_increment primary key;
  3. 联合主键也称为双主键、复合主键,应用场景如下
    当一个字段无法确定唯一性的时候,需要其他字段来一起形成唯一性。就是说用来组成唯一性的字段如果有多个就是联合主键
    如:
      学生成绩(学号,课程号,成绩)
          --那学号和课程号就可以做为联合主键.
        因为学号和课程号决定了成绩.也就是说.你要知道成绩..你就要知道学号,知道学号,但还不能知道某一科的成绩.还要知道课程号.
    所以函数依赖关系是{学号,课程号}->{成绩}

    注意事项:

    • 数据库表中不能有多个主键,如果已经存在主键,则复合主键会创建失败
    • 复合主键的效率受数据类型影响,尽量使用简单数据类型
    • 在创建复合主键时,数据关系一定要理清楚,否则可能会带来未知的错误
  4. ON UPDATE:更新数据同时更新时间戳
    ALTER TABLE `stu` CHANGE COLUMN `date` `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP() FIRST;

原文地址:https://www.cnblogs.com/cool-fun/p/12428019.html

时间: 2024-10-07 19:52:42

mysql语法建库建表综合整理事例的相关文章

MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等

原文:MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等 大家都知道MYSQL是开源的数据库,现在MYSQL在企业中的使用也越来越多,本人之前用过SQL SERVER数据库,因业务需要和自己的兴趣想要学习MYSQL,对于MYSQL,本人还是新手,请大家多多指正. 1.安装mysql 本人安装的版本是mysql5.6 Mysql 5.6的安装包下载地址:http://pan.baidu.com/s/1o6qHG5G 安装过程比较简单,基本上是下一步下一步,安装过程中需要设置mys

MySQL建库建表

一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库备份导入总会出现一些奇怪的问题:后来从下载SQLYog 感觉用的比较爽. 下面分别介绍下使用SQLYog管理工具和sql语句分别建库建表. 一.使用SQLYog建库建表 其实使用SQLYog工具进行建库建表和SQL Server 没什么区别都是可视化:只要点击对应按钮,填写内容即可: 步骤如下: 1

MySQL用户、库、表的操作语法 关于用户的语法

MySQL用户.库.表的操作语法 关于用户的语法 查看当前系统里的用户: select user,host from mysql.user; 查看当前登陆的用户 select user(); 创建用户 语法:create user '用户'@'主机' identified by '密码'; 示例:create user 'anuo'@'localhost' identified by '123' 创建用户并授权 grant 权限 on 库.表 to '用户名'@'主机域' identified

使用T-sql建库建表建约束

为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容怎么移植? 行之有效的办法就是编写比较通用的SQL语句,编写完毕后存入*.sql文件中,最后复制到客户的计算机中,并执行*.sql文件中的SQL语句,从而实现后台数据库的移植.所以我们很有必要掌握如何使用SQL语句,实现创建数据库.创建表.添加约束和创建登录账户等! 使用SQl语句创建和删除数据库

SQL Server建库-建表-建约束

----------------------------------------SQL Server建库-建表-建约束创建School数据库-------------------------------------- --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建----exists关键字:括号里边能查询到数据则返回‘true’ 否则返回‘false’if exists(select * from sysdatabases where name =

建库建表的困难之处

本文想讨论建数据表的困难之处,不求面面俱到. 这里假设了,是先建库建表,再写代码,才会有下面的讨论.当然现在有新的CodeFirst的技术存在,但是我觉得这些讨论应该还有用处. 数据表分类 数据表分为两种:一种描述[物],另一种描述[事]. 描述物的,比如说学生表,有姓名,出生日期,性别,班级等字段. 描述事的,比如说销售订单主从表,有开单日期,单号,商品ID,数量,售价,金额,总金额等等字段. 拆分组合 事和物,都具有可以拆分组合的特点.我怎么知道拆成什么样合适? 一个人,可以拆成头部,脖子,

mysql语句1-创建库和表

一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create  drop  alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是本机) 2. 创建数据库: mysql> create database test1; Query OK, 1 row affected (0.00 sec)  删除库 mysql> drop datbases test1; (0.00 sec):这个表示操作执行的时间. 3.查询数据库 mysq

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

MySQL用户、库、表操作

用户及权限操作: 管理员登录:mysql -uroot -p 用户设置密码:set password=password(密码); 查看数据库所有用户:select * from mysql.user; 查看用户权限:show grants for 用户名@网络地址 [identified by 密码] 普通用户登录:mysql -u用户名 -h网络地址 -p 查看当前用户:select user(); 查看当前数据库:select database(); 当前时间:now() 查看当前数据库是否